是否可以在 Linux 上使用 SFTP 并将用户帐户限制在一个目录中,以便无法获取其他目录列表?是的,我必须使用 SFTP,只有喜欢被黑客攻击的人才会使用 FTP。
例如,我希望有人修改 /var/www/code/ 中的文件,但不希望他们能够修改其他任何内容。我甚至不希望他们看到 /tmp/ 的内容。
(我会接受“快速而肮脏”的解决方案,只要它安全的。
答案1
来自 sshd_config 手册页:
Chroot目录 指定认证后 chroot(2) 的路径。这 路径及其所有组件必须属于根目录,并且 任何其他用户或组都无法写入。chroot 之后, sshd(8) 将工作目录更改为用户的主目录 - 瑞。 该路径可能包含以下标记,这些标记在 一旦连接用户通过了身份验证,运行时:%% 是 替换为文字“%”,%h 替换为主目录 正在验证的用户,并且 %u 被替换为用户 该用户的名称。 ChrootDirectory 必须包含必要的文件和目录 为用户会话提供支持。对于交互式会话 这至少需要一个 shell,通常是 sh(1),以及基本的 /dev 节点如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、 arandom(4) 和 tty(4) 设备。对于使用 “sftp”,不需要对环境进行额外的配置 如果使用进程内 sftp 服务器,则必不可少,尽管会话 使用日志记录确实需要 chroot 目录中的 /dev/log (有关详细信息,请参阅 sftp-server(8))。 默认不是 chroot(2)。
答案2
另一种选择是将其 shell 替换为 MySecureShell,这可以为您提供 Chroot、带宽限制、连接限制等功能。
http://mysecureshell.sourceforge.net/
目前正在网络托管环境中使用它,必须说它运行得相当好。
答案3
SFTP 并非功能丰富的解决方案,无法与 vsftpd 等 FTP 服务器相媲美。它不支持 chroot;而这正是您所需要的。FTPS(而非 SFTP)将是最佳解决方案,因为它支持加密、chroot 等。vsftpd 支持此功能,并且易于设置。
此外,请务必利用 pam_listfile 模块明确说明哪些用户可以通过 ftps 登录。