提供对文件夹和子文件夹的 sftp 读/写访问,限制所有其他

Pas*_*day 5 ssh sftp permissions

我需要为用户提供对 Ubuntu 14.04 Server 的访问权限,仅限于某些文件夹。为了享受 ssh 安全性而不是打开新的服务和端口(即 ftp),我想坚持使用 sftp。然而,仅仅创建一个用户并启用 ssh 访问就太慷慨了——然后用户可以通过 ssh 登录并查看每个人都可以查看的任何内容。

我需要用户在登录后找到自己在特定目录中,并根据他们的权限读/写文件,以及在允许的情况下创建文件夹。无法访问用户“根”文件夹上方的任何文件或目录。

实现这一目标的建议方法是什么?是否有一些非常受限制的外壳类型?我试过

$ usermod -s /bin/false <username>
Run Code Online (Sandbox Code Playgroud)

但这不会让用户 cd 进入其基本文件夹的子文件夹。

Gil*_*il' 4

如果您想限制某个用户只能使用 SFTP,您可以在 SSH 守护程序配置文件中轻松完成/etc/ssh/sshd_configMatch在文件末尾放置一个块:

\n\n
Match User bob\nForceCommand internal-sftp\nChrootDirectory /path/to/root\nAllowTCPForwarding no\nPermitTunnel no\nX11Forwarding no\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果监狱目录是在 中声明的用户主目录/etc/passwd,则可以使用ChrootDirectory %h而不是指定显式路径。此语法允许将一组用户帐户指定为仅限 SFTP \xe2\x80\x94\xc2\xa0用户数据库中声明的组的所有用户都将sftponly仅限于 SFTP:

\n\n
Match Group sftponly\nForceCommand internal-sftp\nChrootDirectory %h\nAllowTCPForwarding no\nPermitTunnel no\nX11Forwarding no\n
Run Code Online (Sandbox Code Playgroud)\n