与 just 相比,我如何CLONE_NEWUSER
以更细粒度的方式启用kernel.unprivileged_userns_clone
?
我想通过禁用非 root 或 BPF 等新的和复杂的东西来保持内核 API 攻击面的可管理性CAP_SYS_ADMIN
,但也有选择地允许它用于某些特定程序。
例如,chrome-sandbox
想要CLOSE_NEWUSER
suid-root 或 suid-root 中的任何一个以进行正确操作,但我不希望所有程序都能够使用如此复杂的技巧,只有少数经过批准的技巧。
如果不创建自定义内核补丁,这是不可能的。请注意,这个特定于 Debian 的 sysctl已弃用。禁用用户命名空间的方法是
user.max_user_namespaces = 0
。一个新的用户命名空间由创建
kernel/user_namespace.c:create_user_ns()
。在允许创建新命名空间之前会进行多项检查,但没有任何迹象表明能够在每个文件或每个用户的基础上进行控制。不幸的是,许多内核开发人员不了解在全局基础上启用非特权用户命名空间背后的风险。示例(未经测试!)补丁仅允许 UID 1234 在内核 6.0 中创建新的命名空间: