zzxworld

Linux chmod 命令使用指南

Linux chmod 命令使用指南

chmod 命令在 Linux 系统中用来改变文件模式的比特位属性。通俗一点来描述,这个命令可以设置文件或目录的读写和执行权限。

chmod 命令格式

chmod [选项]... 模式[,模式]... 文件列表...

上面格式中的「模式」可以理解为特定的权限字符串,它有两种设置格式。一种是字母缩写的方式。可用字母如下:

  • u 代表文件所属用户。
  • g 代表文件所属用户组。
  • o 代表除了所属用户和用户组的其他用户。
  • a 代表了上面三种字母,也就是所有用户。
  • r 代表文件可读。
  • w 代表文件可写。
  • x 代表文件可执行。

另外通过 + 符号和 - 符号组合这些字母。比如 u+x 表示给文件的所属用户添加可执行权限,而 g-x 表示给文件所属的用户组取消可执行权限。

另外一种权限模式为三个数字的格式,比如 777。三个数字按照顺序分别代表了三类用户角色:

  1. 文件所属用户
  2. 文件所属用户组
  3. 其他用户

而 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 显示版本信息并退出。