RH442之/etc/security/chroot.conf和chroot
在开此之前,我们需要先搞清chroot、pam_chroot.so、/etc/security/chroot.conf三者之间的关系。chroot,即 change root directory (更改 root 目录),也就是将用户原始的根目录更换到一个受限的目录,里面仅给定用户所需要的命令、lib库等相关文件;chroot功能的实现,需要在对应服务的pam文件中调用pam_chroot.so库文件,且该文件默认会读取/etc/security/chroot.conf配置文件(该文件中指定了哪些用户是受限的)。对于chroot的使用,我其实在linux下自建ssh堡垒机一篇中有提到的。
一、创建测试用户
1[root@server0 ~]# useradd test
2[root@server0 ~]# echo "361way.com"|passwd --stdin test
3Changing password for user test.
4passwd: all authentication tokens updated successfully.
二、创建chroot相关目录
以下是创建chroot环境对应的文件的目录,并创建用户的家目录:
1[root@server0 ~]# mkdir -p /chroot/{etc,dev,proc,lib,bin,lib64,home,usr}
2[root@server0 ~]# mkdir -p /chroot/usr/bin
3[root@server0 ~]# mkdir -p /chroot/home/test
4[root@server0 ~]# chown test /chroot/home/test
三、修改pam文件和chroot.conf
这部分才是本文的关键,具体哪个服务要使用pam_chroot.so模块,就在对应的服务的pam配置文件中增加相应的配置,这里以ssh服务为例,在/etc/pam.d/sshd最后一行增加的配置如下:
1session required pam_chroot.so
在chroot.conf中增加的配置如下:
1[root@server0 ~]# cat /etc/security/chroot.conf
2test /chroot
四、可用命令及依赖关系
以后我们只想让test用户使用bash,并且可以使用的命令只有ls、mv、ssh等,就需要将这部分可执行文件copy到chroot对应的目录下,并且需要将对应的so库文件也拷贝到chroot下的lib目录下。这里以bash为例:
拷贝对应的文件,并通过chroot命令进行测试:
1[root@server0 ~]# cp /bin/bash /chroot/bin/
2[root@server0 ~]# cp /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /chroot/lib64/
3[root@server0 lib64]# chroot /chroot/ //该命令执行后没有报错信息,表示上面的操作没有问题
4bash-4.2#
注:此处也可以考虑使用busybox,编译软链的方式到这个位置。因为该工具里面包含了相关多的常用工具。
五、指定pts、环境文件和设备文件
此时虽然chroot相关的部分已经配置好,不过直接ssh连接时还是会报错,因为当前没有pty可供使用,直接ssh会收到如下的报错:
1[root@localhost ~]# ssh test@server0
2test@server0's password:
3PTY allocation request failed on channel 0
4/bin/bash: Permission denied
5Connection to server0 closed.
6[root@localhost ~]#
可以如下操作,临时指定pts和proc文件,如下:
1[root@server0 ~]# mount --bind /dev /chroot/dev
2[root@server0 ~]# mount -t devpts -o gid=5,mode=620 devpts /chroot/dev/pts
3[root@server0 ~]# mount -t proc /proc /chroot/proc/
不过这个增加是临时的,想在重启后有效,需要在/etc/fstab中增加如下配置:
1/dev /chroot/dev none bind 0 0
2devpts /chroot/dev/pts devpts gid=5,mode=620 0 0
3none /chroot/proc proc defaults 0 0
环境变更相关的文件需要拷贝如下文件:
1[root@server0 ~]# cp /etc/environment /chroot/etc/
同样,如果有需要用到/dev/null、/dev/zero、/dev/random等相关文件,也可以通过如下方法创建(不过其对chroot的使用影响不用,如果不需要,可以不创建)
1mknod /chroot/dev/null c 1 3
2mknod /chroot/dev/zero c 1 5
3chmod 666 /chroot/dev/null zero
4mknod -m 666 /chroot/dev/tty c 5 0
5mknod -m 666 /chroot/dev/random c 1 8
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/chroot_conf/5429.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.