Answers:
SSH支持以本地方式将SFTP用户chroot。您只需要提供
Chroot目录
在您的sshd配置文件中,然后重新启动sshd。
如果您只是在做sftp,那么您无需做任何其他事情。不幸的是,这不适用于scp。对于交互式Shell,您将需要将二进制文件和/ dev节点复制到chroot中。
仅针对单个用户testuser的示例配置:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
sshd_config手册页中需要注意的几件事:
路径名的所有组件都必须是非目录所有者拥有的根目录 任何其他用户或组均可写。chroot之后,sshd(8)更改 工作目录到用户的主目录。
在man sshd_config中搜索ChrootDirectory以获取更多信息。
Subsystem sftp /usr/lib/openssh/sftp-server
线路Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
部分。
chroot是一种相当简单的方法。由于操作系统已经具有此安全功能,因此守护程序编写者倾向于不尝试重新实现它。
Rssh附带了有关设置chroot监狱的指南。它在CHROOT
源代码分发的文件中。简而言之,您需要具备:
/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
他们使用的库(),同样已复制/etc/passwd
(可能不是副本,而是源自母版)/dev/null
,/dev/tty
和,还有一个/dev/log
用于记录日志的套接字(并且您需要告诉syslog守护程序在该套接字上进行侦听)rssh文档中未提供的其他提示:如果您需要在chroot监狱中访问某些文件,则可以使用bindfs或Linux mount --bind
从监狱之外创建其他目录层次结构。bindfs
允许重新安装的目录具有更多的限制性权限,例如只读。(mount --bind
除非您应用了内核补丁,否则不会这样做; Debian自从lenny发行以来就包含了该补丁,但是截至2011年,大多数其他发行版都没有。)