如何随着时间的推移维护文件/文件夹的所有权和权限?

如何随着时间的推移维护文件/文件夹的所有权和权限?

我们 (debian) 服务器上的多个文件夹需要各种用户(真实用户和系统用户)才能读取和/或写入。我们想出了一个让每个人都满意的特定文件权限和所有权模型,但由于各种原因,随着用户修改内容,该模型会随着时间的推移而瓦解。

我们尝试设置诸如 umask 之类的内容并在组权限上设置粘性位,以尝试保持正确的权限和所有权,但这些努力往往还不够。

理想情况下,我们会在配置文件中指定文件权限和所有权模型,并有一个守护进程来强制执行此模型。有这样的系统吗?

(谷歌搜索结果显示没有,但如果这个问题已经解决,我宁愿不重新发明轮子)

答案1

为了回答我自己的问题,我编写了一个小型守护进程,它接受一个简单的 YAML 配置文件,然后强制执行文件所有权、组和权限。它被称为强制执行(https://github.com/torrance/enforced) — 您需要 Go (golang) 来构建它。

它对配置下的文件夹进行初始搜索,然后设置自身以监视任何文件更改,并立即纠正任何更改的文件。

我希望它对其他人有帮助。

答案2

您可以使用 fam(文件更改监控守护程序)在文件被修改时收到通知(如果访问权限发生更改,则报告 fam 事件)。然后,您可以统计文件,检查是否只有 mtime 或 ctime 发生了更改,并在必要时重置访问权限。

如果不需要用户有能力更改访问权限,那么您可以等待文件创建事件(更少),更改文件所有者,重置访问权限,然后就完成了:再也不会为这个文件烦恼。

奇怪:至少据我所知,Linux 不提供对访问权限更改的限制。

这个问题也可能被仅修改访问权限的 FUSE 文件系统利用。我不知道类似的东西是否已经存在,但那里有如此多的 FUSE 模块,值得一试。

答案3

我认为运行 bash 脚本crontab可以解决这一单一问题。

既然您说过文件权限有时会混乱,那么设置守护进程,甚至是 fam,来一直检查权限更改会“过度”(IMHO)。

设置一个 cron 作业来每周甚至每天运行一次并修复权限,这样就很好了。

相关内容