chmod
命令在 Linux 系统中用来改变文件模式的比特位属性。通俗一点来描述,这个命令可以设置文件或目录的读写和执行权限。
chmod 命令格式
chmod [选项]... 模式[,模式]... 文件列表...
上面格式中的「模式」可以理解为特定的权限字符串,它有两种设置格式。一种是字母缩写的方式。可用字母如下:
u
代表文件所属用户。g
代表文件所属用户组。o
代表除了所属用户和用户组的其他用户。a
代表了上面三种字母,也就是所有用户。r
代表文件可读。w
代表文件可写。x
代表文件可执行。
另外通过 +
符号和 -
符号组合这些字母。比如 u+x
表示给文件的所属用户添加可执行权限,而 g-x
表示给文件所属的用户组取消可执行权限。
另外一种权限模式为三个数字的格式,比如 777
。三个数字按照顺序分别代表了三类用户角色:
- 文件所属用户
- 文件所属用户组
- 其他用户
而 7 这个数字也不是胡乱设定的,它也有自己规则。这个数字同样来自于三个特定的值:
1
代表执行权限,字母代称x
2
代表可写权限,字母代称w
4
代表可读权限,字母代称r
参照这个 3 个特殊的数字,1 + 2 + 4
= 7
,代表了完整的可读写以及可执行权限。再根据上面用户角色类型, 777
这个权限值的意思就一目了然了。
通过 ls -l
命令可以查看文件现有的权限模式定义:
❯ ls -l
drwxr-xr-x 2 zzxworld zzxworld 4096 Jul 28 21:33 Desktop
drwxr-xr-x 6 zzxworld zzxworld 4096 Oct 9 14:39 Documents
drwxr-xr-x 4 zzxworld zzxworld 4096 Oct 10 19:37 Downloads
命令输出中,忽略第一列中的首个字符,后面每三位为一组。分别代表了所属用户,所属用户组和其他用户对文件的访问权限。
chmod 命令示例
给 test.sh 文件设置为只能所属用户可读写和执行:
chmod 700 test.sh
只有所属用户和用户组和访问和读写:
chmod 660 test.sh
使用字母的方式设置只有所属用户可以读写:
chmod u+rw test.sh
把 test 目录下的所有文件都设置为同样的权限:
chmod -R 755 test
chmod 命令选项
缩写 | 完整名称 | 说明 |
---|---|---|
-c |
--changes |
类似 --verbose 选项,但只在做出修改时进行报告。 |
-f |
--silent , --quiet |
隐藏大多数错误信息。 |
-v |
--verbose |
对每一个处理的文件输出诊断信息。 |
--no-preserve-root |
不要对 / 特别对待。 |
|
--preserve-root |
不要在 / 下进行递归操作。 |
|
--reference= 参考文件 |
使用参考文件的模式作为具体模式值。 | |
-R |
--recursive |
递归修改文件和目录。 |
--help |
显示此帮助信息并退出。 | |
--version |
显示版本信息并退出。 |