以root用户执行以下操作。
一、 使用 mkdir 命令开始创建 chroot 监狱(给某用户分配的目录):
a).mkdir -p /home/test
二.交互式会话,需要至少一个 shell,通常为 sh 和基本的 /dev 节点。如 null、zero、stdin、stdout、stderr 和 tty 设备:
a).ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
b).用mknod 命令创建 /dev 下的文件。命令参数:-m 用来指定文件权限位,c 意思是字符文件,两个数字分别是文件指向的主要号和次要号。
1.mkdir -p /home/test/dev/
2.cd /home/test/dev/
3.mknod -m 666nullc 1 3
4.mknod -m 666 tty c 5 0
5.mknod -m 666 zero c 1 5
6. mknod -m 666 random c 1 8
三.在 chroot 监狱中设置合适的权限。注意 chroot 监狱和它的子目录以及子文件必须被 root 用户所有,并且对普通用户或用户组不可写:
1.chown root:root /home/test
2.chmod 0755 /home/test
3.ls -ld /home/test
四.创建 bin 目录并复制 /bin/bash 到 bin 中:
1.mkdir -p /home/test/bin
2.cp -v /bin/bash /home/test/bin/
五.
查询 bash 所需的共享库,复制它们到 lib64 中:
1.ldd /bin/bash
2.mkdir -p /home/test/lib64
3.cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/
六.
创建并配置 SSH 用户
useradd 命令创建 SSH 用户,并设置安全密码:
1.useradd linuxman
2.passwd linuxman
a).
创建 chroot 监狱通用配置目录 /home/test/etc 并复制已更新的账号文件(/etc/passwd 和 /etc/group)到这个目录中:
1.mkdir /home/test/etc
2. cp -vf /etc/{passwd,group} /home/test/etc/
注:每次向系统添加更多 SSH 用户时,都需要将更新的帐户文件复制到 /home/test/etc 目录中
七.
配置 SSH 来使用 chroot 监狱
1.vi /etc/ssh/sshd_config
在此文件中最后添加下面行。
1.定义要使用chroot监狱的用户:MatchUserlinuxman
2. 指定chroot监狱:ChrootDirectory /home/test
文尾添加:
#define username to apply chroot jail
MatchUserusername
#specify chroot jail
ChrootDirectory /home/test
保存文件并退出,重启 sshd 服务:
1.(centos7系统使用命令) systemctl restart sshd
2.(centos6或以下用命令)service sshd restart
注:
设置成功后,应该在本地 ssh hoch@ip 若显示被拒绝(远程登录瞬间退出)。要把selinux关闭。若登录还提示缺少lib* 库文件。找到这个文件,复制到lib64下面再登录成功
八.
创建用户的主目录并添加 Linux 命令
可以为 SSH 用户创建一个主目录(以及为所有将来的用户这么做)
1.mkdir -p /home/test/home/linuxman
2.chown -R linuxman:linuxman /home/test/home/linuxman
3. chmod -R 0700 /home/test/home/linuxman
a)
在 bin 目录中安装几个用户命令,如 ls、date、mkdir:
1.cp -v /bin/ls /home/test/bin/
2.cp -v /bin/date/home/test/bin/
3.cp -v /bin/mkdir /home/test/bin/
b)
检查上面命令的共享库并将它们移到 chroot 监狱的库目录中:
1.ldd /bin/ls
2.cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/此句花括号中不能有空间,不然会报错。
3. scp 等命令,也要做类似1,2 步骤。
一定要记住如下操作,不然会报错(linuxman浪费了很长时间排错):
Write failed :Broken pipe
解决方法:
chown root:root /home/test
chomod 755 /home/test
如果,没有第二句的权限操作,会报错:/bin/bash: Permission denied
注意:要在 /home/test下再建一级目录。不然数据SCP往上拷时会报Permission denied。
例:mkdir /home/test/data
/home/test的所有下一级目录,用户与组都属于同一用户,如:
chown linuxman:linuxman -R /home/test/*
若执行SCP 报错: unknown user 503
在/home/test/下建 usr/lib64/ 然后拷贝所有的库。操作如下:
1. mkdir /home/test/usr/lib64
2. cp {/usr,}/lib64/lib*.so.[0-9] /home/test/usr/lib64/