1. 命令概述
- 命令名称:
chmod(英文全拼:change mode) - 核心功能:更改文件或目录的访问权限,控制文件所有者(Owner)、所属组(Group)和其他用户(Other Users)对文件的读写执行权限。
- 执行权限:只有文件所有者和超级用户(root) 可以修改文件或目录的权限。
2. 语法格式
# 语法一:使用权限模式
chmod [选项] 权限模式 文件...
# 语法二:参照另一个文件的权限
chmod [选项] --reference=参考文件 文件...
3. 常用选项
| 选项 | 说明 |
|---|---|
-c | 仅在权限确实被更改时,才显示更改信息。 |
-f | 不显示错误信息(静默模式)。 |
-v | 显示权限变更的详细资料。 |
-R | 递归处理,对目录及其下的所有文件和子目录进行相同的权限变更。 |
--help | 显示辅助说明。 |
--version | 显示版本信息。 |
4. 权限基础:三级用户身份
Linux 权限针对三种用户身份进行设置:
| 身份 | 代号 | 说明 |
|---|---|---|
| 所有者 | u (user) | 文件的主人。 |
| 所属组 | g (group) | 文件所属用户组的成员。 |
| 其他人 | o (others) | 既不是所有者,也不在文件所属组内的用户。 |
| 所有人 | a (all) | 以上三者皆是,即 u+g+o。 |
5. 两种权限设置方法
方法一:符号模式(直观,用于调整)
格式:[用户身份][操作符][权限]
1. 操作符 (Operator)
| 操作符 | 说明 |
|---|---|
+ | 增加权限 |
- | 移除权限 |
= | 精确设置权限,重置指定身份的所有权限 |
2. 权限 (Permission)
| 权限 | 说明 |
|---|---|
r (read) | 读权限(查看文件内容,列出目录内容) |
w (write) | 写权限(修改文件内容,在目录中增删文件) |
x (execute) | 执行权限(运行程序,进入目录) |
X (special execute) | 特殊执行权限:仅当目标是目录或已有执行权限时才赋予 x 权限。 |
符号模式实例:
# 给所有用户增加读权限
chmod a+r file1.txt
# 给文件拥有者增加可执行权限
chmod u+x ex1.py
# 设置拥有者和组可写,其他人不可写
chmod ug+w,o-w file1.txt file2.txt
# 精确设置:所有者有读写执行,组和其他人只有读权限
chmod u=rwx,go=r file1.txt
# 递归设置目录下所有文件为任何人可读
chmod -R a+r *
方法二:八进制数字模式(精确,常用)
使用3位八进制数字分别代表 u(所有者)、g(组)、o(其他人) 的权限。
权限数字对应表:
| 权限 | 数字 | 二进制 | 说明 |
|---|---|---|---|
| r (读) | 4 | 100 | 读权限 |
| w (写) | 2 | 010 | 写权限 |
| x (执行) | 1 | 001 | 执行权限 |
组合计算:将所需权限的数字相加。
rwx= 4+2+1 = 7 (读+写+执行)rw-= 4+2+0 = 6 (读+写)r-x= 4+0+1 = 5 (读+执行)r--= 4+0+0 = 4 (只读)
八进制模式常用实例:
# 755: 所有者rwx(7), 组和他人r-x(5)
# 常见于目录和可执行程序
chmod 755 file
# 效果: rwxr-xr-x
# 644: 所有者rw-(6), 组和他人r--(4)
# 常见于普通文件、网页文件等
chmod 644 file
# 效果: rw-r--r--
# 700: 所有者rwx(7), 组和他人无权限(0)
# 私有文件或目录
chmod 700 file
# 效果: rwx------
# 777: 所有者、组、他人均有rwx权限(7)
# 最高权限,慎用!
chmod 777 file
# 效果: rwxrwxrwx
# 775: 所有者rwx(7), 组rwx(7), 他人r-x(5)
# 用于协作目录,组内成员可修改
chmod 775 directory
# 效果: rwxrwxr-x
6. 特殊权限位(扩展)
在三位数字前可加第四位数字设置特殊权限:
- 4 (SetUID): 使文件在执行时,以文件所有者的权限运行。
- 2 (SetGID): 使文件在执行时,以文件所属组的权限运行;或使目录下新建文件的所属组继承该目录的组。
- 1 (Sticky Bit): 常用于目录(如
/tmp),目录内的文件只有文件所有者才能删除/重命名。
# 使程序具有root权限(SetUID)
chmod 4755 filename
# 效果: rwsr-xr-x
# 设置粘滞位,保证目录内文件安全
chmod 1777 /tmp/shared_dir
# 效果: rwxrwxrwt
7. 实用命令组合
# 递归设置网站目录权限(所有者可读写执行,组和其他人只读执行)
chmod -R 755 /var/www/html/
# 递归设置网站数据文件权限(所有者可读写,组和其他人只读)
chmod -R 644 /var/www/html/*.html
# 结合find命令,仅对目录添加执行权限(允许用户进入)
find /path/to/dir -type d -exec chmod a+x {} \;
# 结合find命令,仅对文件移除执行权限
find /path/to/dir -type f -exec chmod a-x {} \;
小结:
- 符号模式 (
u/g/o/a++/-/=+r/w/x):适合微调现有权限。 - 八进制模式 (
755,644等):适合精确设置权限,脚本中最常用。 - 递归选项
-R:修改目录权限时务必小心,确保理解其影响范围。 - 权限原则:遵循最小权限原则,只授予必要的权限,保障系统安全。