Unix 权限 - “所有者组”究竟是什么(注意:单数)?

Wit*_*aft 4 permissions users chmod chown chgrp

我正在编写一个 Fuse 文件系统。
到目前为止一切正常,没有遇到无法解决的问题(性能除外)。

但是,我阅读了以下文章:
http : //linuxcommand.org/lts0070.php
http://www.perlfect.com/articles/chmod.shtml
http://mason.gmu.edu/~montecin/UNIXpermiss.htm
http://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.tutorialspoint.com/unix/unix-file-permission.htm
https://kb.iu。教育/d/abdb

我有以下问题:
给定一个通用的 unix-permission-string -
我理解该字符串(在第一个字符之后)被分成 3 个(rwx)为一组

owner
owner_group
all/world/anyone
Run Code Online (Sandbox Code Playgroud)

但是,其中一篇文章明确指出,1 个用户可以在 N 个组中。
那么为什么这里的所有者(不是组)是单数呢?如果我(文件创建者和所有者)属于多个组,那么所有者组究竟是什么?

假设我是 A 组、B 组和 C 组的成员。
现在我在某处创建了一个文件。

由于表达式 owner_group 是单数而不是复数,那么 owner_group 权限应用于哪个组?
A XOR B XOR C,或者全部,或者没有?
如果它只应用于一个(正如单数所暗示的那样),如何确定将权限分配给哪个组?

我有一种明显的感觉,我真的不明白这里的某些东西,或者我误解了“所有者组”一词的含义。

mur*_*uru 12

  • 一个用户可能是多个组的成员。
  • 一个文件只由一个组和一个用户拥有。
  • 如果用户是文件所有者组的成员(即foo该组拥有该文件并且用户的组之一是foo),则相应的组权限适用于该用户(除非被所有者权限覆盖)。

所有者组是文件所有权的一部分。考虑:

$ stat /usr/bin/crontab 
  File: ‘/usr/bin/crontab’
  Size: 35984       Blocks: 72         IO Block: 4096   regular file
Device: 803h/2051d  Inode: 131439      Links: 1
Access: (2755/-rwxr-sr-x)  Uid: (    0/    root)   Gid: (  103/ crontab)
Access: 2015-02-05 20:20:43.438507538 +0530
Modify: 2013-02-09 12:32:23.000000000 +0530
Change: 2014-09-30 19:22:09.508515013 +0530
 Birth: -
Run Code Online (Sandbox Code Playgroud)

这表明文件的所有权属于 userroot和 group crontab

假设我是 A 组、B 组和 C 组的成员。现在我在某处创建了一个文件。... [To] 哪个组获得了应用的 owner_group 权限?

这取决于您创建该文件时的主要组是什么。主组是运行groups命令时列出的第一个组。通常,这由您的 GID 决定。但是,您可以使用该newgrp命令临时将其他组之一设置为主组。例如:

$ groups 
muru adm cdrom sudo dip plugdev lpadmin sambashare
$ rm foo; touch foo
$ stat -c %G foo  # this prints the owner group of the file
muru
$ newgrp sudo   
$ rm foo; touch foo
$ stat -c %G foo
sudo
Run Code Online (Sandbox Code Playgroud)

我有一种明显的感觉,我真的不明白这里的某些东西,或者我误解了“所有者组”一词的含义。

所有者组是文件的属性,而不是用户。

我知道字符串(在第一个字符之后)被分成 3 个(rwx)为一组

owner
owner_group
all/world/anyone
Run Code Online (Sandbox Code Playgroud)

略关:第三场是别人,不是全部其他涵盖除文件所有者和文件所有者组成员之外的所有人。当使用符号模式时,区别开始发挥作用chmod

  • chmod a-x 取消每个人的执行权限
  • chmod o-x 带走其他所有人的执行权限,同时保持所有者和所有者组的执行权限不变。

最后,关于用户私人组的说明。UPG 在桌面系统上相当普遍,但不要认为它们在其他地方是理所当然的。如果启用了 UPG,很可能用户的主要组和用户名具有相同的数字 id 和名称,并且每个用户都有一个唯一的组。就这些。