chmod 数字如何工作
chmod 模式由三个八进制数字组成——分别对应所有者、组和其他用户。每个数字是三个位的和:
| 位 | 值 | 含义 |
|---|---|---|
| 读 (r) | 4 | 查看文件 / 列出目录 |
| 写 (w) | 2 | 修改文件 / 添加或删除条目 |
| 执行 (x) | 1 | 运行文件 / 进入目录 |
为每个角色添加所需的位。7 = 4+2+1 = rwx,6 = 4+2 = rw-,5 = 4+1 = r-x,4 = r--。
单数字参考
| 八进制 | 二进制 | 符号表示 | 权限 |
|---|---|---|---|
| 0 | 000 | --- | 无 |
| 1 | 001 | --x | 执行 |
| 2 | 010 | -w- | 写 |
| 3 | 011 | -wx | 写 + 执行 |
| 4 | 100 | r-- | 读 |
| 5 | 101 | r-x | 读 + 执行 |
| 6 | 110 | rw- | 读 + 写 |
| 7 | 111 | rwx | 读 + 写 + 执行 |
常用模式
| 模式 | 符号表示 | 典型用途 |
|---|---|---|
| 777 | rwxrwxrwx | 所有人完全访问——避免使用;几乎永远不正确 |
| 755 | rwxr-xr-x | 可执行文件、目录、Web 内容 |
| 700 | rwx------ | 私有脚本/目录(仅所有者) |
| 644 | rw-r--r-- | 普通文件(所有者编辑,其他人读取) |
| 640 | rw-r----- | 配置文件,组可读,世界不可读 |
| 600 | rw------- | 私有文件(SSH 密钥、机密) |
| 444 | r--r--r-- | 所有人只读 |
文件 vs 目录
执行位含义不同:
- 对于文件,
x允许你将其作为程序/脚本运行。 - 对于目录,
x允许你cd进入并访问其内容。有r但没有x的目录可以列出名称但无法打开任何内容——通常是错误。这就是为什么目录通常设置为755而不是644。
快速提示
- Web 服务器通常希望目录为
755,文件为644。 - SSH 很严格:
~/.ssh必须为700,私钥为600,否则会拒绝。 chmod -R递归应用——小心将文件模式应用到目录(会剥离所需的x)。
常见问题
chmod 777 是什么意思? 所有者、组和其他用户都有读、写和执行权限——所有人完全访问。这是安全风险,很少是正确的选择;推荐使用 755 或 644。
755 和 644 有什么区别? 755 (rwxr-xr-x) 包含执行位,用于目录和可执行文件。644 (rw-r--r--) 没有执行位,用于普通文件。
为什么 SSH 密钥需要 chmod 600? SSH 拒绝使用其他用户可读的私钥。600 (rw-------) 将其限制为仅所有者。
使用 chmod 计算器 直观计算任何模式,并在 Linux 文件权限详解 中深入学习模型。