为什么 Unix 权限系统使用 1 2 3 4... 值?
为什么不只是 3 位;每个设置读写和执行的位。例如
( rwx ) 110 => r=1 w=1 x=0
Run Code Online (Sandbox Code Playgroud)
使用 1 到 7 之间的整数更加紧凑,它们是以下三个八进制权限表示数字 4(读)、2(写)和 1(执行)加在一起的总和,因为所有 Unix 权限都可以表示为1 到 7 之间的一个整数,而不是使用 3 个数字来表示 Unix 权限。
数字 八进制 权限表示 参考 0 没有权限 --- 1 执行权限--x 2 写权限-w- 3 执行和写入权限:1(执行)+2(写入)= 3 -wx 4 读取权限 r-- 5 读取和执行权限:4(读取)+ 1(执行)= 5 rx 6 读写权限:4(读)+2(写)=6 rw- 7 所有权限:4(读)+ 2(写)+ 1(执行)= 7 rwx
因为我们有这 3 位 (r/w/x) 3 次,一次用于用户(所有者)权限,一次用于组权限,一次用于其他所有人的权限。
这就是为什么例如在ls -l您获得文本权限表示的输出中,它看起来像-rwxr-xr-x(第一个-只是指示文件类型,即它是否是目录)。
(实际上还有三个位 - SUID、SGID 和 Sticky - 但如果您有兴趣,可以自行查看这些更高级的权限。)