Linux文件系统上一个文件的权限占用了多少位?
答案1
添加到其他答案:
传统的 Unix 权限分为:
- 读 (
r
) - 写 (
w
) - 执行文件/访问目录 (
x
)
其中每一个都存储为一个位,其中 1 表示允许,0 表示不允许。
例如,只读访问(通常为写入r--
)存储为二进制100
或八进制4
。
这些权限有 3 组,决定了允许的访问权限:
- 文件的所有者
- 文件组
- 所有其他用户
它们都一起存储在同一个变量中,例如rw-r-----
,表示所有者可读写,组只读,其他人无权访问,存储为110100000
二进制、640
八进制。
这样就构成了 9 位。
然后,还有另外 3 个特殊位:
- 设定值
- 设置gid
- 黏
man 1 chmod
有关这些的详细信息,请参见。
最后,文件的类型使用 4 位存储,例如它是否是常规文件、目录、管道、设备或其他任何文件。
这些都一起存储在 inode 中,总共构成 16 位。
答案2
哪些权限?基本权限为16位; ext2 使用 32 位,另外 32 位用于文件标志 ( chattr(1)
);那么 POSIX ACL 还使用变量空间。/usr/include/linux/ext2_fs.h
详情请参阅。 (ext3 和 ext4 构建于 ext2 之上,并且大多使用相同的结构。)
答案3
有关文件的信息存储在称为索引节点的数据结构中。此结构中有一个模式字段,其中包含权限。我的系统上的这个字段是一个无符号短整型,有 2 个字节和 16 位。
查看 Linux 源代码中的 fs.h 来亲自查看。