【ChrootDirectory】目的和用途:实现chroot
特别注意:该目录,必须!!必须!!只有且仅有root用户有w权限,其他用户不能有w权限!
否则,会出现 “Write failed: Broken pipe” 错误。
【ChrootDirectory】用法1:全局禁用,Match条件启用
#ChrootDirectory none # override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # Example of overriding settings on a per-user basis #Match User root,user2 # X11Forwarding no # AllowTcpForwarding no # ChrootDirectory none Match User user3 X11Forwarding no AllowTcpForwarding no ChrootDirectory /root/jin Match Group chroot X11Forwarding no AllowTcpForwarding no ChrootDirectory /root/jin
【ChrootDirectory】用法2:全局起用,Match条件禁用(比如,root例外)
ChrootDirectory /root/jin # override default of no subsystems #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # Example of overriding settings on a per-user basis Match User root,user2 X11Forwarding no AllowTcpForwarding no ChrootDirectory none
【ChrootDirectory】难点:必须自己手工准备这个“chroot directory”
- 可以自己从宿主系统通过ldd和strace从头分析、提取相关文件搭建;
- 也可以直接找一个rootfs系统搭建,典型的如alpine-minirootfs-3.13.5-x86_64.tar
- 再难点的,你可以通过baseos或docker image中提取相关文件系统来搭建
- 更加骚的操作是,直接解压各种livecd的squashfs来搭建
【ChrootDirecory】注意事项:
- sftp子系统,强烈推荐使用internal-sftp 来代替传统兼容模式的openssh-sftp
- ssh登录一般不会有问题,但scp就不一定了。