Security
什麼規則可以防止從 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)
https://serverfault.com/a/648637/133475
眾所周知,能夠使用 . 的程序
chroot
能夠突破chroot
. 由於unshare -r
會將chroot
權限授予普通使用者,因此如果在chroot
環境中允許這樣做將存在安全風險。實際上,這是不允許的,並且失敗了:> > unshare: unshare failed: 不允許操作 > > >
與 unshare(2) 文件匹配:
> > EPERM(自 Linux 3.9 起) > > > CLONE_NEWUSER是在flags中指定的,並且呼叫者處於 chroot 環境中(即,呼叫者的根目錄與它所在的掛載名稱空間的根目錄不匹配)。 > > >