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