Chmod 计算器 — Linux 文件权限(八进制 ⇄ rwx)
勾选读、写、执行复选框,得到八进制权限值和 chmod 命令,或解读 755、644 和 rwxr-xr-x。
| 对象 | 读取 | 写入 | 执行 | 数字 |
|---|---|---|---|---|
| 所有者(user) | 7 | |||
| 所属组(group) | 5 | |||
| 其他用户(others) | 5 |
chmod 755 deploy.sh
chmod u=rwx,g=rx,o=rx deploy.sh
- 所有者(7):读取、写入、执行
- 所属组(5):读取、执行
- 其他用户(5):读取、执行
查看 chmod u+x,go-w 会如何改变现有权限。支持 u/g/o/a、+ - =、r w x X s t,以及 g=u 这样的复制。X 使用上方的目录设置。
644 (rw-r--r--) → 744 (rwxr--r--)完全在你的浏览器中运行。你输入的任何内容都不会被发送到任何地方。 浏览全部免费工具.
发现问题,或者觉得哪里可以更好?每条消息我们都会阅读,并尽快修复。
这款 chmod 计算器可以在复选框网格、chmod 使用的八进制数字(755、644、2775)以及 ls -l 输出的 rwxr-xr-x 字符串之间转换 Unix 和 Linux 文件权限。修改其中任意一项,其余各项都会同步更新,同时生成可直接粘贴的 chmod 命令,并用通俗的语言解释谁能做什么。它支持 setuid、setgid 和粘滞位,并会说明同样的权限位在目录上有何不同含义。
它还能基于起始权限计算 u+x,go-w 或 a=rX 之类的符号 chmod 表达式,规则与 GNU chmod 相同,让你在服务器上执行命令之前先确认它的效果。有一点不同:当你省略 u/g/o 字母时,真正的 chmod 会应用你的 umask,而本工具会将其视为“a”(相当于 umask 为 000)。它不会碰你的任何文件,只是一个计算器。
使用方法
- 为所有者、组和其他人勾选读、写、执行复选框,或输入 750 之类的八进制权限值,或粘贴 ls -l 输出中 -rw-r--r-- 之类的字符串。
- 如果你要设置的是文件夹的权限,请勾选“这是一个目录”;解释会随之改变,因为目录上的 x 表示“可以进入”。
- 输入文件名,如有需要勾选“递归”,然后复制 chmod 命令。
- 要检查相对修改的效果,请在表达式框中输入当前权限和 u+x,go-w 之类的表达式,然后查看结果。
- 只需要常规答案时,直接使用预设:文件用 644,目录和脚本用 755,私钥用 600。
常见问题
chmod 755 是什么意思?
每一位数字都是读(4)、写(2)和执行(1)之和,依次对应所有者、组和其他人。7 = 4+2+1,所以所有者可以读、写和执行;5 = 4+1,所以组和其他人可以读和执行,但不能写。写成字符串就是 rwxr-xr-x。这是目录以及所有人都应能运行的脚本或程序的标准权限。
644 和 755 有什么区别?
只差执行位。644(rw-r--r--)允许所有者读写、其他所有人只读,是文档、网页、图片和配置文件的常规权限。755 为所有人加上了执行权限,目录需要它才能被进入,脚本需要它才能被运行。给普通文件设置 755 无害但不够规范;给目录设置 644 则会让其他人无法使用它。
为什么 chmod 777 是个坏主意?
777 让系统中的每个用户都能修改或替换该文件,或在该目录中添加和删除文件。在 Web 服务器上,这意味着任何被攻破的进程(比如以其他用户身份运行的有漏洞的插件)都能改写你的代码。解决“permission denied”错误的正确做法通常是更改所有者(chown)或把 Web 服务器用户加入文件所属的组,然后使用 755/644 或 775/664。
setuid、setgid 和粘滞位是什么?
它们是可选的第四位(最前面一位)八进制数字。setuid(4)让可执行文件以其所有者的权限运行,passwd 正是借此才能编辑 /etc/shadow。setgid(2)作用于可执行文件时,让它以文件所属组的身份运行;作用于目录时,让新建文件继承该目录的组,这对团队共享文件夹(2775)很有用。目录上的粘滞位(1)只允许文件的所有者删除该文件,/tmp(1777)就是如此。
SSH 密钥应该设置什么权限?
OpenSSH 会拒绝其他人可读的私钥。~/.ssh/id_ed25519 等私钥用 600(或 400),公钥(.pub)用 644,~/.ssh/authorized_keys 和 ~/.ssh/config 用 600,~/.ssh 目录本身用 700。AWS 和其他云服务商要求你对他们提供的 .pem 文件执行 chmod 400,也是出于同样的原因。
ls -l 中的大写 S 或 T 是什么意思?
小写的 s 或 t 表示特殊位已设置,且其下方的执行位也已设置。大写的 S 或 T 表示特殊位已设置但执行位未设置,这通常是个错误:对一个谁都不能执行的文件设置 setuid 毫无作用,所以看到 rwSr--r-- 通常说明有人对错误的文件执行了 chmod u+s。
文件与目录上的权限位
• 文件上的 r:读取其内容。目录上的 r:列出其中的名称(ls)。
• 文件上的 w:修改其内容。目录上的 w:在其中创建、删除和重命名条目,但必须同时具备 x。删除文件是对其所在目录的写操作,而不是对文件本身。
• 文件上的 x:作为程序或脚本运行。目录上的 x:进入该目录(cd)并按名称访问其中的文件。只有 r 而没有 x 的目录,能列出名称但打不开任何东西。
权限按第一个与你匹配的类别进行检查:如果你是所有者,就只适用所有者权限位,即使组或其他人的权限更宽松也是如此。
符号模式 chmod 语法
符号模式由一个或多个以逗号分隔的子句组成,格式为 [对象][操作符][权限]。对象为 u(所有者)、g(组)、o(其他人)或 a(全部)。操作符为 + 添加、- 移除或 = 精确设置。权限为 r、w、x、X(仅当是目录或已对某类用户可执行时才添加执行权限)、s(setuid/setgid)和 t(粘滞位),也可以用单个 u、g 或 o 来复制另一类别的当前权限位。
示例:chmod u+x deploy.sh 让脚本对其所有者可执行。chmod go-w file 移除除所有者以外所有人的写权限。chmod -R a=rX public/ 让整个目录树对所有人可读,目录可进入,文件不可执行。chmod g=u shared/ 让组拥有与所有者相同的权限。
按使用场景划分的安全默认值
• 网站根目录文件:644,目录 755,所有者为部署用户;上传目录的所有者为 Web 服务器用户,755。
• 机密文件(.env、私钥、凭据):600,所有者为读取它们的服务用户。
• 代码仓库中的 Shell 脚本:755。Git 只存储可执行位,即文件模式 100755 或 100644;在 Windows 上可用 git update-index --chmod=+x 设置。
• 团队共享目录:2775,配合一个公共组,让新文件继承该组。
• umask 决定了初始权限:常见的 022 会让新文件为 644、目录为 755;077 则分别为 600 和 700。
相关免费工具
- 子网计算器 — 计算任意 CIDR 的网络地址、广播地址、主机范围和掩码;用 VLSM 划分网络,展开 IPv6 地址,查找重叠的地址段。
- .gitignore 生成器 — 把语言、框架、编辑器和操作系统的 .gitignore 模板合并成一个干净的文件。
- Cron 表达式生成器 — 用下拉菜单生成 cron 定时计划,或粘贴现有表达式,用通俗语言解读,并查看接下来 10 次运行时间(本地时区和 UTC)。免费,在浏览器中运行。
- Docker Run ⇄ Compose — 把 docker run 命令转换成 docker-compose.yml 服务,或把 Compose 服务转回 docker run 命令。