首页 > 编程笔记

Linux chmod命令:修改文件权限

文件权限对于一个系统而言是非常重要的,系统的每个文件也都设定了针对不同用户的访问权限,当然我们也可以通过手动来修改文件的访问权限。

文件与目录权限的设置,包括修改文件或目录的权限和修改文件或目录的所属组两种。修改文件或目录的权限需要使用 chmod 命令来完成文件或目录权限的修改,而修改文件或目录的所属组则需要使用 chown 命令来完成。

本节先讲解如何使用 chmod 命令修改文件或目录的权限,chown 命令放到《Linux chown命令:修改文件所有者》一节中讲解。

chmod 命令用于修改文件或目录的权限,该命令的语法格式如下:

[root@bogon ~]# chmod [-R] mode 文件或目录名

选项 -R(Recursive,递归)表示不仅要修改该目录的权限,而且还要递归的修改该目录中所有文件和子目录的权限。

mode 表示访问的模式状态,符号表示法是指使用几个特定的符号来设置权限的状态,如表 1 所示。

表 1 权限状态汇总表
mode
设置用户的状态 运算符 权 限
u + r
g - w
o = x
a    
权限状态可以分成 3 个部分。

第 1 部分,表 1 中的第 1 列,表示要设定某个用户的状态,其具体表示如下。
第 2 部分,表 1 中的第 2 列是运算符,其具体表示如下:
第 3 部分,表 1 中的第 3 列,表示权限,其具体表示如下:
【例 1 】使用 chmod 命令为 test 文件添加所有者和同组用户的可执行权限。
打开终端页面,输入如下命令:

[root@bogon ~]# chmod ug+x test

Linux 系统执行完命令后是没有任何消息提示的,所以需要使用 ls 命令验证是否添加成功,命令如下:

[root@bogon ~]# ls -l test
-rwxrwxr--.  1  root  root  1016  6月  28 00::37  test


除此之外,chmod 命令还支持用数字来表示要修改的文件权限。所谓用数字表示,指的是使用一组 3 位数的数字来表示文件或目录上的权限,其中:
每一位数字都是由以下表示资源权限状态的数字(即 4、2、1 和 0)相加而获得的总和: 把以上的数字相加就可以得到一个范围在 0~7 的数字,而这组数字就是表示所有者、同组和其他用户权限状态的数字。

如果想要对一个文件或目录所有的权限(read、write和execute)开放,就把每组文件或目录的权限都设定为 7(4+2+1)就可以了,即这组 3 位数的数字为 777。

如果只想对 owner 开放所有的权限,对同组用户开放读和执行权限,而对其他用户只开放读权限,那么所有者的权限状态u就将被设置为 7,同组用户的权限就将被设置为 6(4+2+0),而其他用户的权限就将被设定为 4(4+0+0),即这组 3 位数的数字设定为 764。

为了方便读者理解,可以将 3 位数的二进制数写成一个 1 位的八进制数。表 2 为八进制数与二进制数的换算以及每组的权限状态。

表 2 八进制数与二进制数的换算以及每组的权限状态
八进制 每组权限 二进制
7 rwx 111 (4+2+1)
6 rw- 110 (4+2+0)
6 r-x 101 (4+0+1)
4 r-- 100 (4+0+0)
3 -wx Oil (0+2+1)
2 -w- 010 (0+2+0)
1 --x 001 (0+0+1)
0 --- 000 (0+0+0)

【例 2】使用数字表示法为 test 文件添加权限。

打开终端页面,输入如下命令:

[root@bogon ~]# chmod -R 777 test

为 test 文件设置对读、写、执行全部开放,当 Linux 系统执行完命令后没有任何消息提示,所以需要使用 ls 命令验证是否添加成功,输入命令如下:

[root@bogon ~]# ls -l test
-rwxrwxrwx.  1  root  root  1016  6月  28  00:37  test

优秀文章