我有一个用户 myuser,该用户仅允许通过 sftp 连接到 ssh。我希望此用户始终使用 rwx-rwx-rx 创建文件,并且始终由组 apache 拥有。我尝试使用 umask 完成文件权限部分,但在 umask 中,文件和目录对于相同的 umask 获得不同的权限。非常感谢您的帮助。
答案1
背景
这是文件共享中一个永恒的问题sftp
。这是因为最终的权限是基于用户端文件的原始权限,而 umask( -u
) 参数不会强制授予此类权限,而只会剥离不需要的权限。这意味着,只有当用户尝试上传具有权限的文件时0777
,才会应用权限并将其剥离为0775
。否则,它就保持原样。例如,如果用户在其文件系统上存储了具有权限的文件0700
,则在上传后也会显示为0700
。
解决方案
-m
最近,我们通过应用补丁解决了 Fedora 中的这个问题,该补丁使用切换到强制新上传文件的精确权限sftp-server
。它基于这个上游错误:
https://bugzilla.mindrot.org/show_bug.cgi?id=1844
目前可用CentOS 7.2. 来自更新日志:
- Add sftp option to force mode of created files (#1197989)
解决方法
除了定期运行一些脚本(来自),没有其他优雅的解决方案cron
,这些脚本正在修复错误的权限。这将是 bash 中的一些单行代码,但我想你可以想到一些。如果你有兴趣,我可以更详细地说明这一点。
或者您可以使用inotify
来尽早“捕捉”变化。
组应该从父目录继承,不是吗?