web-dev-qa-db-ja.com

カーネルでuser_namespacesを有効にする方法は? (非特権の「unshare」の場合。)

Linuxカーネルはビルド時に user_namespaces で構成されている必要がありますが、それらの使用は起動後に制限され、明示的に有効にする必要があります。どのsysctlを使用すればよいですか?

(これがオンになっている場合、これはunshare --user --map-root-user --mount-proc --pid --forkのような分離コマンドを実行し、rootになることなく chrootを実行することを許可します -Linuxの待望の機能です。)

Debian(そしておそらくはUbuntuも)は、user_namespacesのそのような制限付きのカーネルを出荷することが知られており、それを有効にする方法があった/ありました:

sysctl -w kernel.unprivileged_userns_clone=1

(ソース: https://blog.mister-muffin.de/2015/10/25/unshare-without-superuser-privileges/ 。)

ALTは kernel-image-std-def にもこのような制限があります。 Debianとは異なり、kernel.userns_restrictと呼ばれます。

通常、これは1(つまり、「制限付き」)です。

$ cat /proc/sys/kernel/userns_restrict 
1

これを有効にするには、echo 0 > /proc/sys/kernel/userns_restrict(もちろん、上記のようにsysctlを使用します)。