![允许用户通过SFTP下载文件、删除文件,但不允许添加或修改](https://linux22.com/image/1564554/%E5%85%81%E8%AE%B8%E7%94%A8%E6%88%B7%E9%80%9A%E8%BF%87SFTP%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6%E3%80%81%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%85%81%E8%AE%B8%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9.png)
我在 CentOS 7.4 上有一个 SFTP 服务器(通过标准sshd
),我想调整服务器,以便用户可以在他们的目录中下载文件,删除在他们的目录中的文件,但不能上传新文件或覆盖文件。
我可以使用chmod
来设置rw
,但我不希望用户能够上传新文件或修改它们,而只是下载它们。
这里有什么技巧可以使用吗?(似乎大多数人都想阻止删除,并允许添加/修改,而我想要的则相反。)
我还启用了 SELinux 并使其运行,如果这也有帮助的话。
对于用户来说chmod 555
,我得到的最接近的结果是,但是我无法删除文件,只能读取它。如果我进入目录,我可以读取和删除文件,并且无法修改现有文件,但仍然可以添加新文件。chown
chmod 755
此外,我的相应部分/etc/ssh/sshd_config
:
Match Group sftpusers
ChrootDirectory /zfspool/sftp/%s
ForceCommand internal-sftp
其余均为默认设置。SFTP 服务器是:
Subsystem sftp /user/libexec/openssh/sftp-server
答案1
您可以使用 sftp-server 的黑名单功能执行此操作,在 sshd_config 中设置:
Subsystem sftp /usr/libexec/openssh/sftp-server -P write
或者如果使用 internal-sftp:
ForceCommand internal-sftp -P write
您可以在白/黑名单模式下控制允许的请求,请参阅 man sftp-server 和 sftp-server -Q 请求以获取服务器上可用请求的列表。