是否有任何chattr
标志可以让我锁定文件的 unix 权限,并且在不重置标志的情况下不能更改它们?文件本身应该仍然是可修改的,我只是想防止...无知的人...意外地将权限更改为错误的东西。
答案1
Linux 没有这样的标志chattr
。您可以使文件不可变或仅追加(在任何一种情况下,文件的权限和所有权都将被锁定),或者允许文件的所有者和 root 更改权限。 (目录上的不可变属性可防止在其中创建或删除文件,但不会更改条目的元数据。)
如果可以接受更改文件的所有权,请执行此操作,并使用访问控制列表(或组所有权)为需要的人提供对该文件的读写访问权限。如果这是一个不能依赖同族的社会问题,我认为你不会找到令人满意的技术问题。
禁止文件所有者更改权限属于以下类别强制访问控制,这不是 UNIX 传统上支持的。 Linux 上有多种 MAC 框架,其中两个主要的是SELinux和应用装甲;我不知道他们是否允许你尝试做的事情。
如果这是一个普遍问题,您可以考虑使用数据库进行存储。您通常可以授予某人读取和写入表的权限,而不让他们控制权限。
比移动到数据库更温和的步骤是将文件移动到不同的文件系统(这在您的设置中可能可行,也可能不可行)。然后,您可以在文件必须存在的位置使用符号链接,并希望权限更改器不够复杂,无法查看真实文件所在的位置(也许可以将其设置为只读?)。
A保险丝镜像文件内容但更改元数据的文件系统是另一种可能性。现有的一个是绑定文件系统,它可以重写权限 ( -o perms=…
) 并可以忽略 chmods ( -o chmod-ignore
)。