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

win*_*e99 5 filesystems permissions inode files

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

这是我没有得到的:

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

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

ilk*_*chu 5

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

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Run Code Online (Sandbox Code Playgroud)

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

octal    4   7   5   5
bits   100 111 101 101
       sst uuu ggg ooo
       ug  rwx rwx rwx
Run Code Online (Sandbox Code Playgroud)

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

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


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