![什么规则阻止从 chroot 内部进入用户命名空间?](https://linux22.com/image/133104/%E4%BB%80%E4%B9%88%E8%A7%84%E5%88%99%E9%98%BB%E6%AD%A2%E4%BB%8E%20chroot%20%E5%86%85%E9%83%A8%E8%BF%9B%E5%85%A5%E7%94%A8%E6%88%B7%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
# 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环境中(即调用者的根目录与其所在的挂载命名空间的根目录不匹配)。