1. 解码
在我们使用ls -l类似的命令查看文件具体信息的时候,可以看到Linux的文件是以以下这种形式显示的:
drwxr--r-- root root ...
这是什么意思呢?怎么解析这一串标识?
首先,标识了文件权限的是 drwxr--r-- 这个字符串,头部的 d 标识了该文件的类型,Linux中标识的文件类型如下所示:
(1)-:普通文件
(2)d:目录
(3)c:字符设备文件
(4)b:块设备文件
(5)l:链接文件
(6)s:本地域套接口 (socket)
(7)p:有名管道 (pipeline)
去掉首个文件类型标识之后,剩下 rwxr--r-- ,其中每一位都有可选的四种标识符表示,其分别为:
1. r:读权限
2. w:写权限
3. x:文件执行权限
4. -:无对应权限
将其分为3份,分别为 rwx r-- r-- , 每一部分分别表示:
- 文件所属用户(user)权限
- 文件所属组(group)权限
- 其他用户(other)权限
对于上面的权限可做以下解释:
- 文件所属用户(root)拥有r(可读),w(可写),x(可执行)权限
- 文件所属组(root)拥有r(可读)权限
- 其他用户拥有r(可读)权限
2. 编码
文件权限标识可以编码为十进制3位整数
eg. rwx r-- r-- 可用以下算法进行编码:
三个部分分别计算。首先,对于第一部分的 rwx 而言,其二进制编码代表着三个bit,第一个bit标识是否可读(r),第二个bit标识是否可写(w),第三位标识是否可执行(x)。
在每一位的值中,1表示enable,反之0表示unable,因此 rwx 的二进制表示为 111 ,转为十进制就是 7 。
同样对于后两个部分 r-- r-- ,其二进制编码分别为 100 100 ,十进制编码分别为 4 4 ,因此文件权限标识 rwx r-- r-- 的十进制编码为 744 。
3. 使用
文件权限标识的十进制编码可以用在 chmod 命令中,可以使用 chmod -R 755 DirectoryName 的形式为文件夹中所有文件授权 755 ,即 rwxrw-rw- 。