chmod 权限计算器
开发在 chmod 八进制、符号表示与 3×3 权限勾选矩阵之间互转——实时三栏联动。
不获取远程 URL;请直接粘贴你的 JSON。
| 读 (4) | 写 (2) | 执行 (1) | 数字 | |
|---|---|---|---|---|
| 所有者 | | | | 0 |
| 所属组 | | | | 0 |
| 其他 | | | | 0 |
$ chmod 0000 file a= 本页内容
什么是 chmod 计算器?#
chmod 是 Unix 下设置文件或目录读、写、执行权限的命令。它的权限模型是三组——属主(owner)、属组(group)、其他人(other)——每组三个开关位:读 (4)、写 (2)、执行 (1),相加得到一个 0 到 7 的数字。把三个数字叠起来,就是你在命令行敲的八进制模式:755 表示”属主 读+写+执行 (7),属组 读+执行 (5),其他人 读+执行 (5)“。此外还有一个可选的第四位特殊前缀,对应 setuid、setgid 和粘滞位(sticky)。
这里确实需要一个计算器,原因在于三种写法之间的等价关系:权限矩阵(你在文件管理器里勾选的那些复选框)、八进制数字(755)、以及符号串(rwxr-xr-x,也就是 ls -l 打印出来的样子)。大多数人只精通其中一种,另外两种就磕磕绊绊。本页让三者实时同步:改任何一个,另外两个立刻更新,并顺手把对应的 chmod 命令拼好给你。
这件事很重要,因为权限位弄错是搞坏部署最常见的姿势之一——Web 服务器读不到的目录、过于开放而被 SSH 拒绝的私钥、丢掉了 x 位的可执行文件。看到 755 就知道它意味着”全世界可读,属组和其他人可遍历但不可写”,是一项实打实的技能,而本工具靠实时翻译来训练这种直觉。
如何使用#
- 从你手上已经有的那种表示法入手:
- 在权限矩阵里勾选复选框(3 行:属主/属组/其他人;3 列:读/写/执行)。每行右侧的 Digit(数字)列会随勾选实时显示该组的 0–7 值。
- 或在 Octal(八进制)里输入(1–4 位,接受
0o前缀,如755、0644、0o600)。 - 或在 Symbolic(符号)里输入(
rwxr-xr-x、逗号形式rwx,r-x,r-x,或 chmod 子句如u=rw,go=r)。
- 如果需要特殊位,在 Special bits(特殊位)区域勾选 setuid、setgid 或 sticky。它们会占据各自属主执行位的位置,在符号形式里以
s/S(setuid/setgid)、t/T(sticky)表示。 - 读取结果卡片:
- 拼好的命令行
$ chmod <八进制> file,可直接复制。 - 符号形式,如
u=rwx,go=rx。 - 每组的明细:每个 who 的数字、以及它们的读/写/执行授权。
- 拼好的命令行
- 点击 Copy(复制)取走命令行。
- 状态行会确认解析成功,或报告八进制/符号输入是否有误。
主要特性#
- 三方实时同步。 矩阵、八进制、符号三者互相更新,你可以输入已知的那种、读取需要的那种。
- 正确处理特殊位。
setuid、setgid、粘滞位无损处理,包括ls采用的小写/大写执行位记法(s与S、t与T)。 - 规范的 4 位八进制。 输出恒为 4 位(
0755、4755、0000),与chmod和stat显示模式的方式一致——在设置了特殊位时绝不含糊地只给 3 位。 - 子句形式符号。 输出 shell 可接受的绝对赋值形式(
u=rw,go=rx),把相同的相邻组合并以简化,并把特殊位以u+s/g+s/+t追加。 - 宽松的输入解析。 接受
755、0644、0o600、9 字符图形、逗号分隔变体,以及 chmod 子句(u=rwx,go=rx、u+rwx,go-w)。
实战示例#
部署 Web 目录最常见的模式。在 Octal 框里输入 755。矩阵会勾上属主的 读+写+执行、属组和其他人的 读+执行;符号框显示 rwxr-xr-x;结果卡片显示:
$ chmod 755 file
Symbolic: u=rwx,go=rx
明细里列出属主 7(读、写、执行)、属组 5(读、执行)、其他人 5(读、执行)。这是目录和可执行脚本的标准模式:属主能做一切,其他人能读和遍历,但不能改。
再对比 644——普通被服务文件的安全模式。符号变成 rw-r--r--,命令是 $ chmod 644 file:属主可读可写,属组和其他人只读,关键是谁都没有执行位(这样下载下来的文件不会意外被执行)。对于一份 SSH 私钥,你会输入 600(rw-------),那是 ssh 唯一接受的模式。
一个特殊位的例子:一个必须以属主身份运行的二进制。输入 4755,符号位就变成 rwsr-xr-x——注意属主执行位上那个 s,标记着 setuid。命令行显示 $ chmod 4755 file,开头的 4 是特殊前缀位(setuid = 4),这是 3 位形式无法表达的——也正是本工具始终输出 4 位的原因。
常见问题#
755 和 0755 有什么区别?#
在命令行上它们等价——chmod 755 和 chmod 0755 产出相同的模式,因为开头的 0 只是表示”没有特殊位”。本工具始终显示 4 位(0755),让特殊位那一格可见、并与 stat/ls 报告模式的方式一致。复制命令行时则用大家惯敲的 $ chmod 755 file 形式。
符号输出里的 s、S、t、T 是什么意思?#
它们是占据执行位的特殊位。小写 s(在属主或属组位)表示 setuid/setgid 且 执行位开启;大写 S 表示该位已设但执行位关闭。小写 t(在其他人位)表示 sticky 且 执行位开启;大写 T 表示 sticky 已设、执行位关闭。这个”大写表示无执行位”的约定,正是 ls 用来在不加列的情况下区分两种状态的方式。
实际敲 chmod 时该用八进制还是符号?#
两者都行,但行为不同。八进制(chmod 755 file)是绝对设置——每一个位都被设成你输入的样子。符号(chmod u+x file)是增量编辑——只改你提到的位,其余保持不变。想要一个确定的最终状态时(部署脚本、Dockerfile)用八进制;只想拨动一个权限而不打扰其他位时用符号。
为什么 SSH 报”bad permissions”拒绝我的私钥?#
因为 ssh 要求私钥的模式是 0600(仅属主可读写),任何更开放的权限都会被当作不安全而拒绝。如果你的私钥是 0644、或者属组/其他人有写权限,ssh 就认为它可能被篡改而不肯用。执行 $ chmod 600 id_ed25519 设好它,错误就消失了。在敲命令之前,你可以先在这里核实确切的模式。