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

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

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

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

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

$ usermod -s /bin/false <username>

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

答案1

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

Match User bob
ForceCommand internal-sftp
ChrootDirectory /path/to/root
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no

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

Match Group sftponly
ForceCommand internal-sftp
ChrootDirectory %h
AllowTCPForwarding no
PermitTunnel no
X11Forwarding no

相关内容