我遇到了一个奇怪的问题。我创建了一个目录,权限为 755。我正在使用一个软件。完成后,我将工作输出保存到同一个文件夹中。文件以权限 644 (?) 保存。使用不同的程序,我正在创建其他文件,它们以权限 700 保存。
有人能解释一下是什么控制了它,以及如何修复它吗?
谢谢
答案1
文件夹的默认 umask 为 022,因此保存的每个文件都有 644 个权限。022 是 root 的默认 umask。其他用户的默认 umask 通常为 02 (664)。其他应用程序可能在另一个用户下运行,因此它对其创建的文件具有其他权限。要“修复”(不是真正的修复,因为这是预期的行为),您可以使用 chmod 更改模式。
答案2
文件上设置的权限由写入该文件的用户控制,而不是由任何形式的继承控制。
当应用程序写入文件时,它必须以用户身份执行此操作(通常是专用用户,例如“www”或类似用户)。用户已在 中/etc/profile
(可能在 内)设置了我们称为“umask”的默认值/etc/profile.d/
。这些文件中是所有用户的全局设置。
可以通过将名为以下行的文件放置在该用户的主目录中来为每个用户覆盖这些内容.profile
(根据您的要求进行调整):
umask 022
如果无法为每个用户设置默认权限模式,您可以使用 ACL 实现权限模式继承。应用于目录的“默认 ACL”将为在该目录中使用默认 ACL 设置创建的每个文件或文件夹定义一个默认权限集。
例如,您可以像这样显示目录上的 ACL:
getfacl <directory>
如果你想改变默认 ACL 来实现与用户无关的权限继承,你可以更改默认 ACL。在这个命令中,“-m”开关用于启用修改,“d:”条目指定以下 ACL 应为可继承的“默认”:
setfacl -m d:o:rx /share
在上述情况下,可以设置 /share 目录以允许“其他人”读取和执行在该目录中创建的所有内容。现有文件不受此规则影响,如果需要,则需要更新。
有关使用 ACL 的更多信息,请参见这里。