unix 文件权限

Phe*_*nom 3 linux unix filesystems permissions

UNIX 中的文件权限经常指定为八进制数。为什么八进制是用于此目的的首选基数?

pav*_*ium 13

因为权限存储在位字段中,分组为 3 位块(例如rwx)。

八进制是描述它们的自然方式,因为您只需要 1 个八进制数字即可准确表示 3 个二进制数字的任何序列。(这类似于为什么在编程中使用十六进制 - 由于1个十六进制数字可以表示4个二进制数字,因此您只需要2个十六进制数字来描述1个字节。归结为8和16是2的幂,所以在八进制和二进制或十六进制和二进制之间进行转换非常容易。)

这些块是 用户(又名所有者)、其他人。每个块都有三个权限来描述:readwriteexecute

因此,完整的权限集类似于rwxrwxrwx,其中每个都是一个二进制数字。因此,例如,二进制的110100100变为八进制的644,并且您知道第一个八进制数字用于所有者的权限,第二个用于组的权限,第三个用于其他所有人


Ste*_*ngs 5

对象的权限指定了三个不同的类:所有者、组和其他所有人。这些类中的每一个都具有三个可以设置的独立权限:读取、写入和执行。这意味着每个类都有八个权限集之一:

  1. 执行
  2. 写入/执行
  3. 读取/执行
  4. 读/写
  5. 读/写/执行
  6. 没有权限

由于八进制数字采用八个不同值之一(数字 0 到 7),因此您可以使用单个八进制数字表示读/写/执行的任意组合。

在内部,计算机将权限存储为位字段。因此,例如,如果您将权限设置为 644,计算机可能会将其表示为二进制数 110100100,或者:

 110  |  100  |  100
 rw-  |  r--  |  r--
  6   |   4   |   4
Owner | Group | World
Run Code Online (Sandbox Code Playgroud)

(注意二进制 110 等于八进制 6,二进制 100 等于八进制 4)。