Cron使用shell脚本来修复SFTP目录和文件所有权

我们的SFTP共享位于:/ home / COMMUNITY

每个工作组都有自己的目录,例如:/ home / COMMUNITY / Halloween

这个目录下有多个目录。 有一个组包含所有用户:社区。 所有的目录都将粘性位设置为组所有者COMMUNITY,这样做效果很好,并且在此结构中创build的所有目录和文件都自动使用这个组。

SFTP用户的个人目录权限由目录组控制。 在/万圣节的情况下,是万圣节组。 用户使用SFTP在/ home / COMMUNITY中启动login。 当每个目录只有一个用户在一个社区项目上工作时,这个效果很好。 然而,我们的社区服务组正在成长,每组“万圣节”中有更多的用户,这里出了问题。 默认情况下,用户创build的文件目录会自动获取其所有权。 但是为了让我们的系统运行良好,底层目录和文件的所有权必须是root。

也许有缺陷,但我们目前的想法是用一个shell脚本解决这个问题,首先testing一个目录/文件是否拥有作为所有者的根目录,如果不是,则将其更改为根目录。 我们需要在COMMUNITY目录下recursion地执行此操作。 我们想保持这个速度非常快,而不是强制改变拥有root权限的文件。 共享文档的人可能会产生问题,但是当我们经常运行脚本时,我们希望能够修复当前用户无法保存其他用户创build的文档的问题。

文章:“Bash脚本修复目录和文件所有权”,“SFTP监狱和保持文件所有权相同/文件所有者每个文件夹”和“粘滞位技巧”是接近我们想要的,但它不是100%相同,我们可以不知道如何使其工作。

我们所有使用这个系统的志愿者都非常感谢您的帮助,现在却感到沮丧,因为它不再适用。

这实际上听起来像你需要看看默认的umask,而不是担心chown()的文件。 root用户可以读取任何内容,除非你将SELinux放入组合中,但这是另一个dissertaion)。 大多数现代Linux有一个默认的umask 022,这意味着你得到755新文件的权限。 你想002,获得775权限,这将保持组的所有权(通过你已经设置的目录粘性位)和组写入权限。 用户的所有者将定期更换,但这不应该成为一个问题。