目录
1、先创建限定用户的活动目录
该目录必须包含支持用户会话所必需的文件和目录。
[root@Centos7 ~]# mkdir -pv /home/test
[root@Centos7 ~]# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
crw-rw-rw- 1 root root 1, 3 12月 5 08:55 /dev/null
crw-rw-rw- 1 root root 1, 8 12月 5 08:55 /dev/random
lrwxrwxrwx 1 root root 15 12月 5 08:55 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 12月 5 08:55 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 12月 5 08:55 /dev/stdout -> /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 12月 5 08:55 /dev/tty
crw-rw-rw- 1 root root 1, 5 12月 5 08:55 /dev/zero
2、用mknod创建/dev/下的相关文件
[root@Centos7 ~]# mkdir -pv /home/test/dev
[root@Centos7 ~]# mknod -m 666 null c 1 3
[root@Centos7 ~]# mknod -m 666 tty c 5 0
[root@Centos7 ~]# mknod -m 666 zero c 1 5
[root@Centos7 ~]# mknod -m 666 random c 1 8
-m标志用来指定文件权限位
c是字符文件
其中2个数字分别是文件指向和主要号和次要号
3、chroot监牢中设置合适的权限
注意chroot和它的子录目以及子文件必须是被root用户所有,并且普通用户不可写。
[root@Centos7 ~]# chown root.root /home/test
[root@Centos7 ~]# chmod 755 /home/test
[root@Centos7 ~]# ls -lrtd /home/test
drwxr-xr-x 6 root root 53 11月 23 02:50 /home/test
4、chroot监牢设置交互式
[root@Centos7 ~]# mkdir -pv /home/test/bin
[root@Centos7 ~]# mkdir -pv /home/test/lib64
[root@Centos7 ~]# cp -v /bin/bash /home/test/bin
设定bash运行所需要的系统动态库文件,并把它们复制到/home/test/lib64目录下
[root@Centos7 ~]# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffe9fbf3000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f5b9cdf3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5b9cbef000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5b9c821000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5b9d01d000)
[root@Centos7 ~]# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,d-linux-x86-64.so.2} /home/test/lib64
5、创建被监牢的用户
[root@Centos7 ~]# useradd tom
[root@Centos7 ~]# echo 'tom'|passwd --stdin tom
创建被监牢用户的配置目录
[root@Centos7 ~]# mkdir -pv /home/test/etc
[root@Centos7 ~]# cp -vf /etc/{passwd,group} /home/test/etc
6、修改ssh中的配置文件
该操作是来chroot被监牢的用户和目录。
[root@Centos7 ~]# vi /etc/ssh/sshd_config
把以下内容添加到配置文件中相应的位置,保存配置文件后,重启sshd服务
ChrootDirectory /home/test
Match User tom
[root@Centos7 ~]# systemctl restart sshd.service 或 service sshd restart
7、进行测试连接被chroot监牢的用户
[root@Centos7 ~]# ssh tom@192.168.2.10
-bash-4.2$ ls
-bash: ls: command not found
-bash-4.2$ cd
-bash: ls: command not found
注:此时被监牢的用户进入操作系统之后不能执行相关的命令,此时只能执行(pwd,echo,history)3个命令。如果添加多个被监牢的用户时,需要把/etc/{passwd,group}重新复制到被监牢的目录里,这里是/home/test/etc。如果想要被监牢的用户执行相关命令,请按照第4步中的动态库查看和复制操作