chmod 命令主要用来修改文件权限,可以直接使用 man chmod 在终端上查看该命令的帮助手册。
ls -l 命令可以查看当前目录下所有文件的访问权限,也可以查看指定文件。比如,查看当前目录中的 count.sh 文件的访问权限:
ls -l count.sh
-rwxr-xr-x@ 1 liujie26 672505530 84 3 7 20:35 count.sh
drwxr-xr-x 23 liujie26 672505530 782B 4 15 10:32 Blog
上面打印的文件信息中每一部分所代表的含义,分别对应如下解释:
文件类型和访问权限 文件数量 所属用户 所在群组 文件大小 修改日期(月 日 时 分) 文件名称
第一部分 -rwxrwxrwx 具体解释一下:
后面九个字母 rwxr-xr-x 分为三组(rwx、r-x、r-x),从前到后每组分别对应所属用户(user)、所属用户所在组(group) 和其他用户(other) 对该文件的访问权限;
每组中的三个字符 rwx 分别表示对应用户对该文件拥有的可读、可写、可执行权限,没有相应权限则使用 - 符号替代。
通过对查看权限命令的学习,我们可以知道,修改文件访问权限应该包括操作对象、操作类型(添加或取消对应权限)、具体权限和具体文件名称,即:
chmod 用户+操作+权限 文件
用户部分:
操作部分:
权限部分:
文件部分:即具体操作哪个文件的权限,如果不指定文件名,表示操作对象为当前目录下的所有文件。
下面来看个例子:
// 表示给用户所在群组和其他用户添加 count.sh 文件的写权限
chmod go+w count.sh
// 查看修改后的文件访问权限,发现文件访问权限已经按照要求发生变化
ls -l count.sh
-rwxrwxrwx@ 1 liujie26 672505530 84 3 7 20:35 count.sh
// 表示给用户所在群组和其他用户删除 count.sh 文件的执行权限
chmod go-x count.sh
// 查看修改后的文件访问权限,发现文件访问权限已经按照要求发生变化
ls -l count.sh
-rwxrw-rw-@ 1 liujie26 672505530 84 3 7 20:35 count.sh
在看一个复杂一点的操作,可以同时使用多种操作符添加和取消权限,并且可以使用 , 符号同时对不同用户范围修改权限,比如:
// 表示给用户所在群组和其他用户添加 count.sh 文件的执行权限,并删除其他用户 count.sh 文件的写权限
chmod g+x,o+x-w count.sh
ls -l count.sh
-rwxrwxr-x@ 1 liujie26 672505530 84 3 7 20:35 count.sh
除了字母表示外,还可以使用数字表示权限部分的读、写、可执行权限类型。数字和权限类型的对应关系,可以从这张图中直观地看出来:

每种类型数字相加所得到的值表示交叉部分的公共类型。
这样的话,使用三个数字便可以分别代表三种不同用户类型的权限修改结果。比如,修改所有用户的访问权限均为可读可写可执行(rwx) 的话,这样使用即可:
chmod 777 count.sh
ls -l count.sh
-rwxrwxrwx@ 1 liujie26 672505530 84 3 7 20:35 count.sh
三个数字从前到后分别表示 u、g、o 三种用户类型的访问权限,使用时按需修改。
需要注意:有时候我们可能需要递归修改目录文件及其子目录中的文件类型,这时可以使用 -R 选项。
chmod +x 等价于 chmod a+x 是一样的,一般没有明确要求,可以就用 chmod +x 。
linux 下不同的文件类型有不同的颜色:

