UNIX 权限模式位中的最后 3 位是什么?

UNIX 权限模式位中的最后 3 位是什么?

据我所知,有12个权限位,其中用户、组和其他用户各有3组,每组3位,分别是RWX。 RW 是读和写,但对于 X 来说是search目录和execute文件。

这是我不明白的:

  1. 剩下的 3 个模式位是什么?它们都存储在 inode 中吗?

  2. 我知道文件目录本身也被认为是一个文件,因为UNIX中的所有东西都是文件(这是真的吗?),但是由于UNIX系统使用ACL来表示文件系统,那么文件系统就是文件名-inode_number的列表对。文件目录在哪里存储它自己的索引节点号和文件名?

答案1

stat /bin/su在一个系统上显示:

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

4755所有 12 个模式位的八进制表示形式。该数字对应于位:

octal    4   7   5   5
bits   100 111 101 101
       sst uuu ggg ooo
       ug  rwx rwx rwx

其中uuugggooo是用户、组和其他人的权限位。剩余组(按顺序的第一组)包含 setuid ( su)、setgid ( sg) 和 Sticky ( t) 位。

setuid 和粘性位通常不会被提及,因为对于大多数文件来说它们都是零。它们仍然存在于每个文件中,与其他文件一起保存。


如果我们真正认真对待它,一些文件系统和接口会存储文件类型沿着模式位,在更高的位中。上面只占了12位,所以16位字段还剩下4位。例如,参见的描述st_modestat(2)

答案2

  1. 剩下的三位分别代表setuid、setgid和sticky位;看了解 UNIX 权限和文件类型了解详情。这些都存储在inode中。

  2. 目录实际上是一种存储名称列表和相应索引节点的文件。目录自己的名称和inode存储在其父目录中;根目录是一种特殊情况,它通常是文件系统中的固定索引节点(Ext4 中的索引节点 2)并且当然总是被命名/(最终相对于它的安装点......)。

相关内容