我的 Linux 内核必须配置为用户命名空间构建时,但它们的使用在启动后受到限制,并且必须明确启用。我应该使用哪个 sysctl?
(如果启用此功能,这将允许运行隔离命令,例如unshare --user --map-root-user --mount-proc --pid --fork
,然后执行chroot
无需成为 root——Linux 的一项备受期待的功能。)
答案1
基于 Debian 的 Linux
众所周知,Debian(因此也可能是 Ubuntu)在发布内核时对 user_namespaces 进行了这样的限制,并且启用它的方法是:
sysctl -w kernel.unprivileged_userns_clone=1
(来源:https://blog.mister-muffin.de/2015/10/25/unshare-without-superuser-privileges/.)
从内核 5.10 (Debian 11/bullseye) 开始,Debian默认启用非特权用户命名空间;如果您发现它们仍然被禁用,还请检查 sysctl user.max_user_namespaces
(与 不同,它kernel.unprivileged_userns_clone
不是特定于 Debian 的)。
ALT-Linux 特定
ALT有这样的限制内核映像标准定义, 也。与 Debian 不同,它被称为kernel.userns_restrict
.
通常,它是 1(即“受限”):
$ cat /proc/sys/kernel/userns_restrict
1
要启用此功能echo 0 > /proc/sys/kernel/userns_restrict
(当然,或者sysctl
如上所述使用)。