chmod 命令速查表
Linux 权限变更速查表
chmod 命令用于在 Unix/Linux 中更改文件和目录的权限。
🧑 用户类别
| 符号 | 含义 |
|---|---|
u | 用户(所有者) |
g | 组 |
o | 其他 |
a | 所有(u+g+o) |
🔐 权限类型
| 符号 | 含义 | 数字 |
|---|---|---|
r | 读 | 4 |
w | 写 | 2 |
x | 执行 | 1 |
📝 符号模式
使用 +、- 或 = 来修改权限:
chmod u+x file # 为用户添加执行权限
chmod go-w file # 移除组和其他用户的写权限
chmod a=r file # 为所有用户设置为只读
🔢 数字(八进制)模式
将用户、组和其他用户的权限值组合:
| 模式 | 权限 | 含义 |
|---|---|---|
| 777 | rwxrwxrwx | 完全访问权限 |
| 755 | rwxr-xr-x | 常用于脚本 |
| 644 | rw-r–r– | 常用于文本文件 |
chmod 755 script.sh
chmod 644 notes.txt
🧪 特殊权限标志
这些标志超越了基本的读/写/执行权限,用于控制执行上下文和删除行为。
🔸 setuid(执行时设置用户 ID)
- 八进制前缀:
4 - 适用于:可执行文件
- 效果:执行时,进程以文件所有者的权限运行(而非执行用户的权限)。
- 使用场景:如
passwd等程序需要提升权限来修改系统文件。
chmod 4755 /usr/bin/somebinary
# -rwsr-xr-x → 用户字段中的 's' 替换了 'x'
⚠️ 滥用会带来安全风险——避免对脚本或用户控制的二进制文件设置此标志。
🔸 setgid(设置组 ID)
- 八进制前缀:
2 - 适用于:
- 文件:以文件所属组的权限运行。
- 目录:新创建的文件继承该目录的组。
- 使用场景:共享项目文件夹,所有文件应属于同一组。
chmod 2755 /shared/folder
# drwxr-sr-x → 组字段中的 's'
📁 在目录上使用此标志可确保协作环境中组的一致性。
🔸 sticky 位
- 八进制前缀:
1 - 适用于:仅目录
- 效果:只有文件所有者(或 root)才能删除或重命名目录内的文件。
- 使用场景:
/tmp目录——防止用户互相删除文件。
chmod 1777 /tmp
# drwxrwxrwt → 其他用户字段中的 't'
🧷 可将其视为共享空间的"删除锁"。
📂 执行(x)标志:文件与目录的区别
| 上下文 | x 权限的效果 |
|---|---|
| 文件 | 允许作为程序/脚本执行 |
| 目录 | 允许进入目录(cd)并通过名称访问其内容 |
🔍 目录访问矩阵
| 权限 | 可列出(ls) | 可进入(cd) | 可访问文件 |
|---|---|---|---|
r | ✅ | ❌ | ✅(已知文件名时) |
x | ❌ | ✅ | ✅(已知文件名时) |
r+x | ✅ | ✅ | ✅ |
🧠 没有目录的
x权限,你无法cd进入该目录——即使你可以列出其内容。
🔍 快速参考
| 命令 | 描述 |
|---|---|
chmod +x file | 使文件可执行 |
chmod -R 755 dir | 递归设置权限 |
chmod u=rwx file | 仅将用户权限设置为 rwx |
chmod a-x file | 移除所有用户的执行权限 |
💡 提示:使用 ls -l 查看当前权限。