概述
chmod
命令可以修改文件或目录的权限。
注:
chmod
命令有两种修改权限的方法:一种是包含字母和操作符表达式法;一种是包含数字的数字设定法。
语法
该命令的语法如下:
# 第一种修改方法
chmod [{ugoa}{+-=}{rwx}] 文件或目录
# 第二种修改方法
chmod [mode=421 ] [文件或目录]
该命令支持的选项有:
选项 | 说明 |
---|---|
-c, --changes | 效果类似“-v”参数,但仅报告更改的部分 |
-f, --quiet, --silent | 不显示错误信息 |
-R, --recursive | 递归处理,将指令目录下的所有文件及子目录一并处理 |
-v, --verbose | 显示指令执行过程 |
--reference=<参考文件或目录> |
把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
<权限范围>+<权限设置> |
开启权限范围的文件或目录的该选项权限设置 |
<权限范围>-<权限设置> |
关闭权限范围的文件或目录的该选项权限设置 |
<权限范围>=<权限设置> |
指定权限范围的文件或目录的该选项权限设置 |
注:
u
表示所有者;g
表示所属组;o
表示除了所有者和所属组中的其他人;a
表示所有人(包括u
、g
、o
)。+
表示增加权限;-
表示撤销权限;=
表示设定权限。r
表示读权限;w
表示写权限;x
表示执行权限;-
表示不具有任何权限,代表数字是 0。r=4
表示等价于读权限;w=2
表示等价于写权限;x=1
表示执行权限。rwx=4+2+1=7
表示具有读写执行权限。
使用
使文件所有者具有执行权限
我们可以修改文件的权限,让它的所有者具有执行权限。命令格式如下:
# 语法
chmod u+x 文件名
# 示例,使得 test.sh 文件的所有者具有执行权限
chmod u+x test.sh
注:这里只演示常见的情况,其他情况如修改文件的所属组具有执行权限(
g+x
),可举一反三。
修改文件所有者失去执行权限并使其他用户也有执行权限
这个例子演示了如何修改多个权限,他们之间用逗号隔开即可。命令格式如下:
# 语法
chmod u-x,o+x 文件名
# 示例,让 test.sh 文件的所有者失去执行权限,让其他用户获得执行权限
chmod u-x,o+x test.sh
采用数字方式设置文件权限
例如,要求采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行的权限。命令格式如下:
# 语法
chmod 777 文件名
# 示例,让 test.sh 文件的所有者、所属组、其他用户都具有可读可写可执行的权限
chmod 777 test.sh
注:因为读权限
r=4
、写权限w=2
、执行权限x=1
,如果要让一个文件具有可读可写可执行权限就是要赋予rwx
权限,即rwx=4+2+1=7
,而所有者、所属组、其他用户都要有可读可写可执行权限就是rwxrwxrwx
,即rwxrwxrwx=777
。
修改指定目录下所有子文件和子目录都具有可读可写可执行
如果要一起修改指定目录下的所有子文件和子目录都具有可读可写可执行权限,那么就需要用到 -R
选项。命令格式如下:
# 语法
chmod -R 777 指定目录名
# 示例,让 test/ 目录下的所有子文件和子目录都具有可读可写可执行权限
chmod -R 777 test/