使用userspec的chroot jail中有哪些正确的Linux权限?

我试图build立一个chroot监狱,然后我做了:

which binary ldd /bin/binary 

然后我做了:

 cp /lib64/{libs} $jail/lib64 cp /usr/lib64/{libs} $jail/usr/lib64 

PS:在这个设置过程中,我发现/ lib64需要特殊的权限rx,只有r–不会工作(在chroot内部或外部)。

将二进制文件复制到$ jail,创build/ home / jailuser。

创buildproc,dev,sys并挂载它们。

为jailuser:用户finduid和gid

更改主目录的所有权:

 chown jailuser:users chmod 700 (for dirs) chmod 600 (for files) 

将其他文件的所有权更改为root:root,权限请参阅前面的内容。

然后在根下进入监狱:

 export USER=jailuser (and I did the same with LOGNAME, HOME) cd $jail chroot --userspec=$uid:$gid $jail $jail/binary 

它的工作,但:

在我的本地框中,只有005的非jailuser权限。

在一个KVM VPS中,尝试了相同的,但唯一的权限是050!

请,有人知道:

1)为什么本地只能工作至less005,而远程只能工作至less050(两个系统都是一样的)?

2)是否有更好的方法来设置chroot jail中的权限? (但保持根:所有权,所以用户/进程不能修改“系统”文件)…

3)有没有更好的方式来启动这个监狱作为非特权用户,而不是使用–userspec选项?

谢谢!

我想我已经知道了! 我猜有时系统需要改变到root用户组中,需要libs(也许是system或nobody?),因此lib64和usr / lib64确实需要至less050个权限。

我最后的脚本来设置权限是(testing和工作):

 #Create vars u=jailuser g=users home=/home/$u jail=$home/jail #Set normal home u=jailuser g=users cd $home find . -type d -exec chown $u:$g {} + find . -type f -exec chown $u:$g {} + find . -type d -exec chmod 700 {} + find . -type f -exec chmod 600 {} + #Set jail u=root g=root cd $jail find . -type d -exec chown $u:$g {} + find . -type f -exec chown $u:$g {} + find . -type d -exec chmod 511 {} + find . -type f -exec chmod 100 {} + #Set lib64 cd $jail/lib64 find . -type f -exec chmod 555 {} + #Set usr/lib64 cd $jail/usr/lib64 find . -type f -exec chmod 555 {} + #Set binary chmod 511 $jail/binary #Set etc chmod 544 $jail/etc/passwd chmod 544 $jail/etc/group #Set tmp chmod 777 $jail/tmp #Set jailed home u=jailuser g=users cd $jail$home find . -type d -exec chown $u:$g {} + find . -type f -exec chown $u:$g {} + find . -type d -exec chmod 700 {} + find . -type f -exec chmod 600 {} + cd $home