文件权限符
ls
命令可以查看Linux系统文件、目录和设备的权限,如
$ ls -l test.sh
-rwxrwxrwx 1 root root 23 6月 19 16:46 test.sh
对于输出结果第一个字段,描述文件和目录权限的编码。
该字段第一个字符表示对象类型:
字符 | 类型 |
---|---|
- | 文件 |
d | 目录 |
l | 链接 |
c | 字符型设备 |
b | 块设备 |
n | 网络设备 |
之后的3组三字符编码,每组定义3中访问权限
字符 | 权限类型 |
---|---|
r | 对象可读 |
w | 对象可写 |
x | 对象可执行 |
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
- 对象属主
- 对象属组
- 系统其他用户
如下图所示:
默认权限
umask
命令可以显示和设置默认权限。
$ umask
0022
第一位代表了一项特别的安全特性,叫作粘着位(sticky bit)。
后面的3位表示文件或目录对应的 umask 八进制值。要理解 umask 是怎么工作的,得先理解八进制模式的安全性设置。
下表为Linux文件权限码
权限 | 二进制值 | 八进制值 | 描述 |
---|---|---|---|
- - - | 000 | 0 | 没有任何权限 |
- - x | 001 | 1 | 只有执行权限 |
- w - | 010 | 2 | 只有写入权限 |
- wx | 011 | 3 | 有写入和执行权限 |
r- - | 100 | 4 | 只有读权限 |
r-x | 101 | 5 | 有读和执行权限 |
rw- | 110 | 6 | 有读和写权限 |
rwx | 111 | 7 | 有全部权限 |
权限设置
chmod
命令用来改变文件和目录的安全性设置。该命令的格式如下:
chmod options mode file
mode
参数可以使用八进制模式或符号模式进行安全性设置。
八进制模式设置非常直观,直接用期望赋予文件的标准3位八进制权限码即可。
下面是在符号模式下指定权限的格式。
[ugoa...][[+-=][rwxXstugo...]
第一组字符定义了权限作用的对象:
- u 代表用户
- g 代表组
- o 代表其他
- a 代表上述所有
下一步,后面跟着的符号表示你是想在现有权限基础上增加权限(+),还是在现有权限基础上移除权限(-),或是将权限设置成后面的值(=)。
最后,第三个符号代表作用到设置上的权限。