UNIX 中的文件权限通常以八进制数指定。为什么八进制是此目的的首选基数?
答案1
由于权限存储在位字段中,以 3 位块分组(例如读写)。
八进制是一种自然的描述方式,因为只需要 1 个八进制数字就可以准确表示任何 3 个二进制数字序列。(这类似于编程中使用十六进制的原因——由于 1 个十六进制数字可以表示 4 个二进制数字,因此只需要 2 个十六进制数字即可描述 1 个字节。归根结底,8 和 16 是 2 的幂,因此在八进制和二进制或十六进制和二进制之间进行转换非常容易。)
这些块是 用户(又名所有者),团体和其他的.每个chunk有三种权限来描述:读,写, 和执行。
因此,完整的权限集看起来像读写,其中每个都是二进制数字。例如,110100100二进制表示为644八进制,你知道第一个八进制数字是拥有者权限,第二个为团体的权限,第三个用于其他所有人。
答案2
对象的权限指定了三个不同的类别:所有者、组和其他人。每个类别都有三个可设置的独立权限:读取、写入和执行。这意味着每个类别都有八个权限集之一:
- 执行
- 写
- 写入/执行
- 读
- 读取/执行
- 读/写
- 读/写/执行
- 没有权限
由于八进制数字采用八个不同值(数字 0 到 7)之一,因此您可以用一个八进制数字表示读/写/执行的任意组合。
在内部,计算机将权限存储为位字段。例如,如果您将权限设置为 644,计算机可能会将其表示为二进制数 110100100,或者:
110 | 100 | 100
rw- | r-- | r--
6 | 4 | 4
Owner | Group | World
(请注意,二进制 110 等于八进制 6,二进制 100 等于八进制 4)。