好的,我帮你整理一份 chmod
命令详解,包含功能、语法、符号方式、数字方式、特殊权限、选项和实用示例,适合运维查阅和实战使用。
🔐 chmod
命令详解(修改文件和目录权限)
1. 命令简介
- 功能:修改 Linux 文件或目录的 访问权限
- 适用场景:控制文件可读、可写、可执行权限,保证系统安全
Linux 权限体系:
- 三类用户:属主(user)、属组(group)、其他用户(others)
- 三种权限:读(r)、写(w)、执行(x)
2. 基本语法
chmod [选项] 模式 文件或目录
- 模式:可以使用 符号方式 或 数字方式
- 文件或目录:可以是单个文件、目录,也可以使用通配符或递归操作
3. 权限表示方式
3.1 符号方式
- 格式:
[ugoa][+-=][rwxXst]
符号 | 含义 |
---|---|
u | 属主(user) |
g | 属组(group) |
o | 其他用户(others) |
a | 所有人(all,等于 u+g+o) |
+ | 添加权限 |
- | 移除权限 |
= | 赋予精确权限(覆盖原有权限) |
r | 读 |
w | 写 |
x | 执行 |
X | 目录或已有执行权限的文件才加执行权限 |
s | 设置 SUID 或 SGID |
t | 设置 sticky 位 |
示例:
chmod u+x script.sh # 属主添加执行权限
chmod g-w file.txt # 属组去掉写权限
chmod o+r file.txt # 其他用户添加读权限
chmod a+x script.sh # 所有人添加执行权限
chmod u=rwx,g=rx,o=r file.txt # 精确赋值
3.2 数字方式(八进制)
-
权限按 3位八进制数 表示:
-
属主 | 属组 | 其他用户
-
数字对应权限:
- 7 = r + w + x = 4 + 2 + 1
- 6 = r + w = 4 + 2
- 5 = r + x = 4 + 1
- 4 = r
- 3 = w + x = 2 + 1
- 2 = w
- 1 = x
- 0 = 无权限
-
示例:
chmod 755 script.sh # rwx r-x r-x
chmod 644 file.txt # rw- r-- r--
chmod 700 secret.txt # rwx --- ---
4. 特殊权限
特殊权限 | 含义 | chmod 表示法 |
---|---|---|
SUID (Set User ID) | 执行程序时以属主身份运行 | u+s 或 4xxx |
SGID (Set Group ID) | 目录中新建文件继承目录属组 | g+s 或 2xxx |
Sticky 位 | 目录下文件只能被创建者或 root 删除 | +t 或 1xxx |
示例:
chmod u+s /usr/bin/passwd # 设置 SUID
chmod g+s /var/www # 设置 SGID
chmod +t /tmp # 设置 Sticky 位
5. 常用选项
选项 | 含义 |
---|---|
-R | 递归修改目录及子目录文件权限 |
-v | 显示详细操作信息 |
-c | 仅显示实际修改的文件 |
--reference=<文件> | 使用参考文件权限设置目标文件权限 |
6. 实用示例
6.1 修改单个文件权限
chmod 644 /etc/passwd # rw- r-- r--
chmod u+x deploy.sh # 属主添加执行权限
6.2 批量修改目录权限
chmod -R 755 /var/www # 所有目录和文件设置为 rwx r-x r-x
6.3 配合 find 批量处理
# 所有文件644,所有目录755
find /var/www -type f -exec chmod 644 {} \;
find /var/www -type d -exec chmod 755 {} \;
6.4 设置特殊权限
chmod u+s /usr/bin/passwd # SUID
chmod g+s /var/www # SGID
chmod +t /tmp # Sticky 位
7. 小技巧
- 数字方式便于批量修改权限,符号方式便于局部修改
- Sticky 位适用于共享目录(防止其他用户删除文件)
- 配合
ls -l
或stat
可以快速检查权限 X
权限符号在脚本中很实用,只对目录或已有执行权限的文件添加执行权限
✅ 总结:
chmod
是 Linux 权限管理核心命令- 支持 符号方式、数字方式、特殊权限
- 配合递归选项和 find,可批量管理文件和目录权限
- 正确使用权限命令是保证系统安全的重要手段