定义目录中新创建文件的权限的规则的完整列表是什么?

定义目录中新创建文件的权限的规则的完整列表是什么?

rwxrwxr-x我有一个具有权限设置的目录-s-,如果我从用户 A 在此文件夹中创建文件,这些文件将获得 权限rw-rw-r--,而用户 B 则将获得rw-r--r--。我真的很困惑文件在第一次创建时到底是如何获得权限设置的......

为了更专注于我需要做的事情 - 该目录有组 G,其中包含用户 A 和 B,我希望他们都能够处理同一目录中的所有文件,所以如果他们都创建了文件,rw-rw-r--他们可以在不受干扰的情况下处理这些文件(删除它们并重新创建它们或只是编辑它们)。

答案1

新文件的权限是从 (1) 调用中设置的权限设置的,open()(2) 创建过程的修改umask,以便将 中设置的位umask清零。也就是说,只有在两者都允许的情况下才会设置权限位,只是将其中的位umask反转。

在您的情况下,用户可能有不同的 umask,即 A 似乎有一个 umask 0002(仅清除其他用户的写入位),而 B 似乎有一个 umask 0022(清除组和其他用户的写入位)。 umask 可能在其 shell 启动文件中或通过pam_umask.

如果您在目录上设置了 ACL,特别是默认 ACL,那么情况会略有不同。在这种情况下,umask 将被忽略,而是将默认 ACL 复制到文件上的 ACL,但仅保留系统调用中设置的权限位。

您可能正在寻找这个问题的答案:

相关内容