工具
指南

chmod 权限计算器

开发

在 chmod 八进制、符号表示与 3×3 权限勾选矩阵之间互转——实时三栏联动。

100% 客户端 无后端

不获取远程 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)“。此外还有一个可选的第四位特殊前缀,对应 setuidsetgid 和粘滞位(sticky)。

这里确实需要一个计算器,原因在于三种写法之间的等价关系:权限矩阵(你在文件管理器里勾选的那些复选框)、八进制数字755)、以及符号串rwxr-xr-x,也就是 ls -l 打印出来的样子)。大多数人只精通其中一种,另外两种就磕磕绊绊。本页让三者实时同步:改任何一个,另外两个立刻更新,并顺手把对应的 chmod 命令拼好给你。

这件事很重要,因为权限位弄错是搞坏部署最常见的姿势之一——Web 服务器读不到的目录、过于开放而被 SSH 拒绝的私钥、丢掉了 x 位的可执行文件。看到 755 就知道它意味着”全世界可读,属组和其他人可遍历但不可写”,是一项实打实的技能,而本工具靠实时翻译来训练这种直觉。

如何使用#

  1. 从你手上已经有的那种表示法入手:
    • 权限矩阵里勾选复选框(3 行:属主/属组/其他人;3 列:读/写/执行)。每行右侧的 Digit(数字)列会随勾选实时显示该组的 0–7 值。
    • 或在 Octal(八进制)里输入(1–4 位,接受 0o 前缀,如 75506440o600)。
    • 或在 Symbolic(符号)里输入(rwxr-xr-x、逗号形式 rwx,r-x,r-x,或 chmod 子句如 u=rw,go=r)。
  2. 如果需要特殊位,在 Special bits(特殊位)区域勾选 setuidsetgidsticky。它们会占据各自属主执行位的位置,在符号形式里以 s/S(setuid/setgid)、t/T(sticky)表示。
  3. 读取结果卡片
    • 拼好的命令行 $ chmod <八进制> file,可直接复制。
    • 符号形式,如 u=rwx,go=rx
    • 每组的明细:每个 who 的数字、以及它们的读/写/执行授权。
  4. 点击 Copy(复制)取走命令行。
  5. 状态行会确认解析成功,或报告八进制/符号输入是否有误。

主要特性#

  • 三方实时同步。 矩阵、八进制、符号三者互相更新,你可以输入已知的那种、读取需要的那种。
  • 正确处理特殊位。 setuidsetgid、粘滞位无损处理,包括 ls 采用的小写/大写执行位记法(sStT)。
  • 规范的 4 位八进制。 输出恒为 4 位(075547550000),与 chmodstat 显示模式的方式一致——在设置了特殊位时绝不含糊地只给 3 位。
  • 子句形式符号。 输出 shell 可接受的绝对赋值形式(u=rw,go=rx),把相同的相邻组合并以简化,并把特殊位以 u+s/g+s/+t 追加。
  • 宽松的输入解析。 接受 75506440o600、9 字符图形、逗号分隔变体,以及 chmod 子句(u=rwx,go=rxu+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 私钥,你会输入 600rw-------),那是 ssh 唯一接受的模式。

一个特殊位的例子:一个必须以属主身份运行的二进制。输入 4755,符号位就变成 rwsr-xr-x——注意属主执行位上那个 s,标记着 setuid。命令行显示 $ chmod 4755 file,开头的 4 是特殊前缀位(setuid = 4),这是 3 位形式无法表达的——也正是本工具始终输出 4 位的原因。

常见问题#

7550755 有什么区别?#

在命令行上它们等价——chmod 755chmod 0755 产出相同的模式,因为开头的 0 只是表示”没有特殊位”。本工具始终显示 4 位(0755),让特殊位那一格可见、并与 stat/ls 报告模式的方式一致。复制命令行时则用大家惯敲的 $ chmod 755 file 形式。

符号输出里的 sStT 是什么意思?#

它们是占据执行位的特殊位。小写 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 设好它,错误就消失了。在敲命令之前,你可以先在这里核实确切的模式。