Linux chmod 命令 | 修改文件或目录的读写执行访问控制权限
• 最后修改:2025-06-20 • 阅读量:50
Linux chmod ( change mode ) 命令用于修改文件或目录的读、写、执行访问控制权限。
chmod 命令可以修改三类读、写、执行访问控制权限,具体为:文件所有者的读、写、执行访问控制权限,组的读、写、执行访问控制权限,其他用户的读、写、执行访问控制权限。
Linux / Unix 系统的文件访问权限分为三类,具体解释说明:
文件所有者(u
, user 或 owner)、用户组(g
, group)、其它用户(o
, other Users),全部用户使用 a
(all)表示。
每一类的权限由三个比特位表示,从左至右分别表示(read,读)、(write,写)与(execute,可执行)。
权限可以使用字符表示:r
表示(read,读)、w
表示(write,写)与 x
表示(execute,可执行)。
权限也可以使用八进制数字表示:4
表示(read,读)、2
表示(write,写)与 1
表示(execute,可执行)
如果相应的权限位显示为 -
,则表示不具有相应的权限(可使用 ls -l
命令查看具体权限)。
具体权限的划分如图所示:
解释:file type 为 - 时表示文件,为 d 时表示目录
chmod 命令的定义解释
在 Linux 或 FreeBSD 系统中,chmod ( change mode ) 用于命令用于修改文件或目录的读、写、执行访问控制权限。chmod 命令一次可以修改一个文件,多个文件或者是目录的访问控制权限。
权限位解释说明
1、文件权限位说明
权限 | 字符 | 对文件的影响 |
---|---|---|
读权限 | - | 文件不可读,无法查看文件内容 |
r | 文件可读,可查看文件内容 | |
写权限 | - | 文件不可写,无法更改文件内容 |
w | 文件可写,可更改文件内容 | |
执行权限 | - | 文件不可被执行 |
x | 文件可以被执行 | |
s | 如果在用户三元权限中,则设置 setuid 位。如果在组三元权限中,则设置 setgid 位,这也意味着设置了 x 标志。当在文件上设置 setuid 或 setgid 标志时,则以文件的所有者和(或)组权限执行 | |
S | 与 s 相同,但未设置 x 标志,这个标志很少用于文件 | |
t | 如果在其他用户三元权限中,则设置 sticky 位,这也意味着设置了 x 标志,这个标志在文件上是无用的。 | |
T | 与 t 相同,但未设置 x 标志,这个标志在文件上是无用的。 |
2、目录权限位说明
权限 | 字符 | 对文件的影响 |
---|---|---|
读权限 | - | 无法显示目录 |
r | 可以显示目录的内容 | |
写权限 | - | 不能更改目录的内容 |
w | 目录的内容可以修改 | |
执行权限 | - | 命令不能转到该目录 |
x | 可通过cd 命令进入目录 | |
s | 如果在用户三元权限中,则设置 setuid 位。如果在组三元权限中,则设置 setgid 位,这也意味着设置了 x 标志。当在目录上设置 setgid 标志时,在其中创建的新文件将继承目录组ID (GID),而不是创建该文件的用户的主组ID。setuid 对目录没有影响 | |
S | 与 s 相同,但未设置 x 标志,这个标志在目录上是无用的 | |
t | 如果在其他用户三元权限中,则设置 sticky 位,这也意味着设置了 x 标志。当在目录上设置 sticky 位时,只有文件的所有者、目录的所有者或管理用户可以删除或重命名目录中的文件。。 | |
T | 与 t 相同,但未设置 x 标志,这个标志在目录上是无用的。 |
chmod 命令语法
chmod [选项]... 符号模式[,符号模式]... 文件列表...
chmod [选项]... 八进制模式字符串 文件列表...
chmod [选项]... --reference=参考文件 文件列表...
[选项]
:选项带着中括号 [] 表示可选,使用时可以提供,也可以不提供。
chmod 命令的符号模式语法
chmod 命令的符号模式的具体语法:
chmod [选项]... (ugoa...)(-+=)(权限...)[, (ugoa...)(-+=))(权限...)]... 文件列表...
1、第一组符号[ugoa...]
是用户符号,定了可以修改哪类用户对文件的访问控制权限:
用户符号 | 解释说明 |
---|---|
u | user owner 文件所有者 |
g | group 用户组 |
o | other users 其他所有用户 |
a | all 所有用户,等同于 ugo |
注意:如果省略用户符号,则默认为 a
,且不影响 umask
命令设置的权限。
2、第二组符号([-+=])是操作符号,它定义了是要删除、添加或设置权限:
操作符号 | 解释说明 |
---|---|
- | 移除、删除指定的权限 |
+ | 添加指定的权限 |
= | 将当前权限更改为指定的权限,如果在=符号之后没有指定权限,则删除给定用户的所有权限 |
注意:权限(perms…)可以使用 0 或 r,w, x, x, s 和 t 字母中的一个或多个显式设置。当为多个用户类([,…])设置权限时,使用逗号(不含空格)分隔符号模式。
chmod 命令的八进制模式语法
chmod 命令的八进制模式的具体语法:
chmod [选项]... 八进制模式字符串 文件列表...
八进制模式字符串
由 3 或 4 个八进制数组成。
使用 3 位八进制数字
1、当使用 3位八进制数字时,第一个数字表示文件所有者的权限,第二个数字表示组的权限,最后一个数字表示其他用户的权限。
每个写、读、执行权限的八进制数值如下:
八进制数值 | 对应权限 | 对应符号 |
---|---|---|
4 | 读权限 | r |
2 | 写权限 | w |
1 | 可执行权限 | x |
0 | 不具有任何权限 |
注:特定用户类的权限数值由各权限值的总和表示。
要在八进制模式下找出文件的权限,只需计算所有用户类的总数。例如,要赋予文件的所有者读、写和执行权限,赋予组读和执行权限,赋予其他用户读权限,可以这样做:
用户类型 | 八进制数值计算方式 |
---|---|
所有者 | rwx=4+2+1=7 |
组 | r-x=4+0+1=5 |
其他用户 | r--=4+0+0=4 |
权限与数值对应表:
八进制数值 | 权限 | 对应符号 |
---|---|---|
7 | 读 + 写 + 执行 | rwx |
6 | 读 + 写 | rw- |
5 | 读 + 执行 | r-x |
4 | 读 | r-- |
3(不常用) | 写 + 执行 | -wx |
2(不常用) | 写 | -w- |
1 | 执行 | --x |
0 | 不具有任何权限 | --- |
使用 4 位八进制数字
4 位八进制数字中,左侧的第 1 位八进制数字用来设置 setuid
、setgid
和 sticky
位标志,数值的含义如下:
八进制数值 | 所表示的意义 |
---|---|
4 | 设置 setuid |
2 | 设置 setgid |
1 | 设置 sticky |
0 | 不做修改设置 |
后面的 3 位数字的含义与使用 3 位八进制数字时的含义相同。
如果第一个数字为 0,则可以省略,并且模式可以用3位数字表示,如:数字模式0755
与755
相同。
chmod 命令使用示例
chmod 的所有命令都可以使用 sudo 命令执行。
chmod 命令的符号模式使用示例
1、使组(组内用户)对文件 file1.txt 具有写权限:
chmod g+w file1.txt
2、使所有用户对文件 file1.txt 具有读权限:
chmod a+r file1.txt
3、取消组(组内用户)对文件 file1.txt 的读权限:
chmod g-w file1.txt
4、取消组(组内用户)对文件 file1.txt 的读权限,使其他用户对文件具有读权限:
chmod g-w, o+r file1.txt
chmod 命令的八进制模式使用示例
八进制模式必须使用一个完整的八进制模式字符串,由 3 位或 4 位八进制数组成。
使用八进制模式会同时修改三类用户的访问权限。
1、使文件所有者和组(组内用户)对文件 file1.txt 具有读写权限:
chmod 660 file1.txt
2、使文件所有者对文件 file1.txt 具有读权限,组和其他用户具有读权限:
chmod 644 file1.txt
3、取消组(组内用户)对文件 file1.txt 的读写权限:
chmod 600 file1.txt
4、使所有用户对文件 file1.txt 的读、写、执行权限:
chmod 777 file1.txt
chmod 命令选项解释
如下给出了 Linux chmod 命令中所有选项的解释说明:
选项 | 解释说明 |
---|---|
-c, --changes | 类似 -v, --verbose 参数, 但只在发生变化时才会输出信息 |
-f, --silent, --quiet | 隐藏大多数错误信息 |
-v, --verbose | 对于处理的每个文件,都输出处理的详细信息 |
--no-preserve-root | (默认设置)不对 '/' 特殊处理 |
--preserve-root | 不允许递归修改根目录 '/' 下所有文件组 |
--reference=参考文件 | 使用参考文件的模式作为模式值 |
-R, --recursive | 递归的修改目录下所有文件的组 |
--help | 显示帮助信息后退出 |
--version | 显示版本信息后退出 |
结语
在本教程中我们介绍了如何使用 chmod ( change mode ) 用于修改文件或目录的读、写、执行访问控制权限,chmod 命令可以修改三类读、写、执行访问控制权限,具体为:文件所有者的读、写、执行访问控制权限,组的读、写、执行访问控制权限,其他用户的读、写、执行访问控制权限。chmod 命令一次可以修改一个文件,多个文件或者是目录的访问控制权限。
该 chmod 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。