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

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

我正在编写一个 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.edu/d/abdb

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

owner
owner_group
all/world/anyone

但是,其中一篇文章明确指出,1 个用户可以加入 N 个群组。
那么为什么这里的所有者是单数呢团体(不是群组)?如果我(文件创建者,因此是所有者)属于一些团体?

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

由于表达式owner_group是单数,并且非复数,所有者组权限应用于哪个组
异或异或C,还是全部,还是全部都不适用?
如果只适用于一个(单数表示),如何确定将权利分配给哪个组?

我强烈地感觉到我不太理解这里的某些东西,或者我误解了“所有者群体”一词的含义。

答案1

  • 一个用户可能是多个组的成员。
  • 一个文件只能由一个组和一个用户拥有。
  • 如果用户是文件所有者组的成员(即,组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: -

这表明该文件的所有权属于用户root和组crontab

假设我是 A 组、B 组和 C 组的成员。现在我在某处创建一个文件。... [对]哪个组应用了 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

我强烈地感觉到我不太理解这里的某些东西,或者我误解了“所有者群体”一词的含义。

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

我理解字符串(第一个字符之后)被分成 3 个组(rwx)

owner
owner_group
all/world/anyone

稍微偏离:第三个字段是其他的, 不是全部其他的涵盖除文件所有者和文件所有者组成员之外的所有人。使用符号模式时,区别就显现出来了chmod

  • chmod a-x取消所有人的执行权限
  • chmod o-x剥夺其他所有人的执行权限,但保持所有者和所有者组的执行权限不变。

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

相关内容