我已设置了一个新帐户,只需授予 shell/bin/false
并成为组成员即可stfp_only
。然后,我/etc/ssh/sshd_config
按照我读过的许多指南中概述的方式编辑了我的帐户,例如
Subsystem sftp internal-sftp
Match Group sftp_only
ChrootDirectory /srv/uploads/%u
AllowTcpForwarding no
ForceCommand internal-sftp
X11Forwarding no
到目前为止一切顺利。我可以上传文件,而且大部分内容都被锁定,但用户仍然可以mkdir
、rmdir
和更改文件权限,出于安全原因,我不想允许这些权限。我一直在尝试让黑名单像这样工作
ForceCommand internal-sftp -P mkdir,rmdir
然而,虽然这些白名单/黑名单参数在OpenBSD,Centos 上的版本sftp-server
仅允许日志记录和文件掩码选项
usage: sftp-server [-he] [-l log_level] [-f log_facility] [-u umask]
[-m force_file_perms]
除了尝试编译 BSD 版本的源代码外,还有其他方法吗? 是否有 ACL 限制,只允许文件,不允许文件夹、符号链接等? 禁止更改文件权限?
如果有一种方法可以让用户上传文件,root:sftp_only 664
那么至少他们可以通过组写入来修改/删除自己的文件,但不能更改权限,因为他们不拥有这些文件。
使用:CentOS 版本 6.10,OpenSSH_5.3p1
答案1
CentOS 6 附带的 OpenSSH 版本太旧了。您可以尝试安装自己的版本,但随后您必须维护该版本,我更愿意依赖 Red Hat/CentOS 来保持修补。
如果您升级到 CentOS 7,附带的 OpenSSH 版本是 7.4p1,它支持-P
您需要的标志。