我需要向用户提供对 Ubuntu 14.04 Server 的访问,仅限于某些文件夹。为了享受 ssh 安全性而不是开放新的服务和端口(即 ftp),我想坚持使用 sftp。然而,仅仅创建一个用户并启用 ssh 访问就太过慷慨了 - 用户然后可以通过 ssh 登录并查看每个人都可以查看的任何内容。
我需要用户在登录后找到自己所在的特定目录,并根据他们的权限读取/写入文件,以及在允许的情况下创建文件夹。无法访问用户“根”文件夹上方的任何文件或目录。
实现这一目标的建议方法是什么?是否有一些非常受限制的 shell 类型?我尝试过
$ usermod -s /bin/false <username>
但这不允许用户 cd 进入其基本文件夹的子文件夹。
答案1
如果您想限制某个用户只能使用 SFTP,您可以在 SSH 守护程序配置文件中轻松完成/etc/ssh/sshd_config
。Match
在文件末尾放置一个块:
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