文件的用户所有者、工作组和其他权限集之间是否存在超集/子集关系?

文件的用户所有者、工作组和其他权限集之间是否存在超集/子集关系?

Unix 文件有两种所有权:用户和组,每种所有权都有自己的权限。通常,文件的所有者应该对其具有完全访问权限,而所有者所属的工作组的成员可能具有有限的访问权限,而其他人的访问权限甚至更少。最后一个类别在 Unix 文档中称为 other。

对于一个文件,

  • 其工作组的权限是否一定是其用户所有者的权限?

    由于其用户所有者是其工作组的成员,所以我猜答案是肯定的,除非其工作组在权限方面排除其用户所有者。其用户所有者的权限可能大于其工作组的权限。

  • 其用户所有者的权限是否一定是其他人的权限?

    有人说“其他”意味着整个世界。从这个意义上说,它的工作组应该是“其他”的子集,所以我想答案是肯定的,除非“其他”排除其工作组。其工作组的权限可能比“其他”的权限多。

如果重要的话,我会专注于 Linux。

答案1

类 Unix 系统下的权限使用八进制表示。

它以可选的特殊权限开头,后面是user、group、others。 ugo权限是以下 OR 运算的组合:

  • r头:4
  • w仪式:2
  • 执行x:1

因此,权限 0774 将允许其所有者和组进行完全访问,但对其他人进行只读访问。

这些权限,包括特殊权限,是相互独立的。

文件也有一个所有者和组,它们的属性也是独立的。

因此,所有者可能具有只读访问权限,而 groupX 的成员具有读写访问权限,而不符合所有者或组标准的人员则具有完全访问权限。

让我们考虑john将权限更改text.txt0467、所有权为john、组为 的用户operator

$ chown john:operator text.txt
$ chmod 0467 text.txt
$ ls -l text.txt
-r--rw-rwx 1 john operator 0 Dec 29 00:57 text.txt

如果john不是该operator组的一部分,他将无法更新文件内容:

$ echo hi > text.txt
text.txt: Permission denied

但他仍然可以更改文件的权限,并更新文件:

$ chmod u+w text.txt
$ echo hi > text.txt
$ ls -l text.txt
-rw-rw-rwx 1 john operator 3 Dec 29 00:57 text.txt

请注意,访问文件还涉及整个目录树中的文件夹权限。

相关内容