在 openssh-server 中禁用 chmod

在 openssh-server 中禁用 chmod

我正在尝试禁用从 sftp 客户端使用 chmod 命令的功能。我希望用户上传的文件仅根据 umask 进行设置,并删除他们更改它的能力。

这似乎很简单,但我找不到任何方法可以做到这一点。

答案1

默认情况下没有,但有一个补丁。不确定您的发行版是否已经有修补程序包,但在您自己修补之前可能值得搜索一下。http://sftpfilecontrol.sourceforge.net/

答案2

或者,如果您的 sftp 用户属于特定的公共组,而 shell 用户属于另一个公共组,您可以简单地使用ACL(访问控制列表)限制谁可以使用 chmod 以及其他命令。

答案3

(2023 年)使用 vanilla openSSH 即可。

相关要求是setstat

因此,如果您在中指定以下内容/etc/ssh/sshd_config

Match User mysftpuser
 ChrootDirectory /home/mysftpuser/chroot #or else they see their .ssh dir
 ForceCommand internal-sftp -P lsetstat,setstat,fsetstat #deny chmod

它会这样做。我还添加了lsetstatfsetstat,因为它们对链接和文件句柄的作用相同。您还可以添加-u xxxx以指定给定的 umask。请参阅可查看/usr/lib/openssh/sftp-server -Q requests您可以列入黑名单的请求列表。或者可能(甚至更好)只将需要的请求列入白名单。

您需要重新加载sshd并重新登录 SFTP 客户端以使更改生效。

我认为应该将接受的答案改为这个,因为接受的答案是不正确的(现在)。

答案4

显然,如果不对 openssh 进行大规模修补,我不可能实现我的目标。我最终只好使用 vsftpd。

相关内容