什么规则阻止从 chroot 内部进入用户命名空间?

什么规则阻止从 chroot 内部进入用户命名空间?
# rpm -q --whatprovides /usr/bin/unshare
util-linux-2.32-2.fc28.x86_64
# unshare -r
#

即上面的成功,而下面的失败。是什么规则造成这种情况?

# rpm -q --whatprovides /usr/sbin/chroot
coreutils-8.29-6.fc28.x86_64
# chroot fedora-27
# rpm -q --whatprovides /usr/bin/unshare
util-linux-2.30.2-1.fc27.x86_64
# strace unshare -r
...
unshare(CLONE_NEWUSER)      = -1 EPERM (Operation not permitted)

答案1

https://serverfault.com/a/648637/133475

众所周知,能够使用chroot, 的进程能够突破chroot.由于unshare -r会向普通用户授予 chroot权限,因此如果在环境中允许这样做,则会存在安全风险chroot。事实上,这是不允许的,并且会失败:

取消共享:取消共享失败:不允许操作

哪个匹配 取消分享(2) 文档:

EPRM(从 Linux 3.9 开始)

CLONE_NEWUSER指定于旗帜并且调用者处于chroot环境中(即调用者的根目录与其所在的挂载命名空间的根目录不匹配)。

相关内容