chmod命令
chmod
是 Linux/Unix 系统中用于修改文件或目录访问权限的命令,其名称源自 "change mode" 的缩写。文件权限决定了不同用户对文件的操作权限(读、写、执行),chmod
命令通过调整这些权限来控制系统安全性。
一、权限的基本概念
在 Linux 中,每个文件 / 目录的权限对应三类用户:
- u(user):文件的所有者(创建者)
- g(group):文件所属组的成员
- o(others):除所有者和所属组成员外的其他用户
- a(all):代表 u+g+o(所有用户)
每类用户可拥有三种基本权限:
- r(read,读权限):允许查看文件内容(对目录而言,允许列出目录中的文件)
- w(write,写权限):允许修改文件内容(对目录而言,允许创建 / 删除其中的文件)
- x(execute,执行权限):允许运行文件(对目录而言,允许进入该目录)
二、权限的表示方法
chmod
支持两种权限设置方式:数字模式(简洁高效)和符号模式(灵活直观)。
1. 数字模式(八进制表示)
每种权限对应一个数字,通过数字之和表示用户的权限组合:
r
对应 4w
对应 2x
对应 1- 无权限对应 0
权限用三位数字表示(分别对应 u、g、o 的权限),例如:
755
:u=7(4+2+1=rwx),g=5(4+1=rx),o=5(rx)644
:u=6(4+2=rw),g=4(r),o=4(r)700
:u=7(rwx),g=0(无),o=0(无)
2. 符号模式(符号表示)
通过符号组合精确指定权限修改规则,格式为:chmod [用户] [操作符] [权限] 文件/目录
- 用户(可选):
u
(所有者)、g
(所属组)、o
(其他)、a
(所有,默认) - 操作符:
+
:添加权限-
:移除权限=
:设置权限(覆盖原有权限)
- 权限:
r
、w
、x
三、常用选项
chmod
支持多种选项,常用的有:
-R
(recursive):递归修改目录及其子目录中所有文件的权限(操作目录时常用)-v
(verbose):显示权限修改的详细过程-c
(change):仅显示实际被修改的文件权限(比-v
简洁)--reference=文件
:以指定文件的权限为模板,复制权限到目标文件 / 目录
四、示例用法
假设当前目录有文件 test.txt
和目录 docs/
,以下是常见操作:
1. 数字模式示例
给
test.txt
设置权限:所有者可读可写,所属组和其他用户仅可读chmod 644 test.txt
(对应权限:-rw-r--r--
,-
表示普通文件)给
docs/
设置权限:所有者可读可写可进入,所属组和其他用户仅可读可进入chmod 755 docs/
(对应权限:drwxr-xr-x
,d
表示目录)递归设置
docs/
及其子内容:仅所有者有全部权限,其他人无权限chmod -R 700 docs/
2. 符号模式示例
给
test.txt
的所有者添加执行权限chmod u+x test.txt
移除
test.txt
中其他用户的读权限chmod o-r test.txt
给
docs/
的所属组设置可读可写可进入权限(覆盖原有权限)chmod g=rwx docs/
给所有用户添加写权限(等价于
a+w
)chmod +w test.txt
复制
file1
的权限到file2
chmod --reference=file1 file2
五、注意事项
- 权限与安全性:过高的权限(如
777
,所有用户可读写执行)可能导致安全风险,应遵循 “最小权限原则”。 - 目录权限特殊性:目录的
x
权限表示 “可进入目录”,若缺少x
,即使有r
也无法查看目录内容;目录的w
权限允许删除其中的文件(即使不是文件所有者)。 - 执行权限:脚本或程序需要
x
权限才能直接运行(如./script.sh
),否则需通过解释器调用(如bash script.sh
)。 - 权限修改者:只有文件的所有者或
root
用户才能使用chmod
修改权限。
通过 chmod
命令,用户可以精确控制文件 / 目录的访问范围,是 Linux 系统权限管理的核心工具之一。