创作日志: 很久之前对这个略有了解,但是现在完全忘记了,看到这类题目一脸懵逼,现在系统复习下。
1、权限的数字表示(3位)
在Linux系统中,文件权限由一个三位的八进制数表示,每一位代表 文件所有者(user)、同组用户(group)和其他用户(others) 的权限。
每个用户类别的权限可以通过将读、写、执行权限对应的数值相加得到。
权限共有三种:
- 读权限 (read, r):数值是 4
- 写权限 (write, w):数值是 2
- 执行权限 (execute, x):数值是 1
因此,可以出现如下组合:
- 没有任何权限:0
- 只有读权限:4
- 只有写权限:2
- 只有执行权限:1
- 读和写权限:4 + 2 = 6
- 读和执行权限:4 + 1 = 5
- (不存在写和执行权限组合,因为能写一般就能读)
- 读、写和执行权限:4 + 2 + 1 = 7
eg. 一个文件的权限数字表示是 631,代表:
文件所有者(user)-> 6 -> 4+2 读和写
同组用户(group)-> 3 -> 2+1 写和执行
其他用户(others)-> 1 -> 1 执行
2、权限的字母表示(10位)
刚刚已经提到了,权限共有三种:
- 读权限 (read, r):数值是 4 ,字母是 r
- 写权限 (write, w):数值是 2 ,字母是 w
- 执行权限 (execute, x):数值是 1,字母是 x
那么对于三种用户: 文件所有者(user)、同组用户(group)和其他用户(others) ,每个拥有3位的字母权限表示,总共就是3x3=9位,那么10位是怎么回事呢?因为还要在首部加上类型说明。
在Linux文件系统中,第一位实际上有多种可能,不仅仅是 - 和 d,还可以表示其他文件类型。以下是常见的文件类型说明:
-:表示普通文件(regular file)。
d:表示目录(directory)。
l:表示符号链接(symbolic link)。
b:表示块设备文件(block device),例如硬盘设备。
c:表示字符设备文件(character device),例如终端设备或键盘、鼠标等。
s:表示套接字文件(socket),用于网络通信。
p:表示命名管道(FIFO file),一种特殊的文件类型,常用于进程间通信。
eg. “drwxr-xr-x”代表的意义是?
只要切割成 1+3+3+3 四部分去理解就好了。
d | rwx | r-x | r-x |
---|---|---|---|
目录 | 文件所有者 | 同组用户 | 其它用户 |
读,写,执行 | 读,执行 | 读,执行 | |
4+2+1 | 4+1 | 4+1 | |
7 | 5 | 5 |