Chmod 权限计算器
Unix 权限看起来只是三个数字,但一个数字写错就可能让 SSH 私钥被拒用、部署目录无法进入,或者把可写权限暴露给同机所有用户。这个 chmod 权限计算器把八进制、rwx 符号串、权限矩阵和可复制命令放在同一个工作区:点选读写执行位、切换 setuid / setgid / sticky,套用 u+x、go-w、a=r 这类符号操作,或反推 umask 产生的默认文件和目录权限。所有计算都在浏览器本地完成。
- 八进制 ⇄ 符号 ⇄ 矩阵
- setuid / setgid / sticky
- umask 与符号操作
八进制
0644
符号
rw-r--r--
数字命令
chmod 644 file符号命令
chmod u=rw,g=r,o=r file谁能做什么
功能简介
权限问题最容易出错的地方不是计算本身,而是你是否真正看懂了每一位代表的访问能力。这个工具把每种表示同步在一起,让你在执行 chmod 前先确认意图。
- 01
八进制、符号和矩阵实时联动
点击 rwx 网格、输入 755 或 0644,或者直接粘贴 ls -l 里的 rwxr-xr-x 权限列,八进制值、符号字符串和矩阵都会立即同步。你可以从自己最熟悉的表示法开始,不需要额外点转换按钮。
- 02
文件和目录语义分开解释
执行位在文件上表示可运行,在目录上表示可进入和遍历。工具会根据目标类型切换说明,也会让条件执行位 X 按目录或已有执行位的真实规则计算。
- 03
特殊位显示完整
setuid、setgid 和 sticky 位会同时体现在四位八进制首位和符号字符串的 s/S/t/T 中。即使特殊位存在但底层执行位未开启,也会用大写形式明确提示。
- 04
两种 chmod 命令可复制
需要快速操作时复制数字形式,例如 chmod 755 file;需要在脚本或代码评审里表达意图时复制符号形式,例如 chmod u=rwx,g=rx,o=rx file。
- 05
权限解读和风险提示
结果区会按所有者、同组和其他人逐项说明能读取、写入、执行或进入什么,并对 777、其他人可写、setuid 与可写权限组合等高风险配置给出提示。
- 06
符号操作模拟
在基准权限上套用 u+x、go-w、a=r、u=g、+t 等操作,查看真实结果。适合在改部署脚本、Dockerfile 或 CI 命令前先验证相对变更。
- 07
umask 默认权限反推
输入 022、077、002 等 umask,立即看到新建文件和目录分别会得到什么权限,避免把 chmod 和 umask 的职责混在一起。
- 08
本地处理不碰文件
工具只做权限位计算,不会访问、上传或修改你的文件。命令需要你确认后自己复制到终端执行。
如何使用
从想清楚访问意图,到复制一条可执行命令,按这个顺序走最不容易出错。
- 01
先选择目标是文件还是目录。目录的执行位表示进入和遍历,符号操作里的 X 也会按这个目标类型计算。
- 02
从常用预设开始,或输入已有的八进制值、粘贴 rwxr-xr-x 这类符号串,让矩阵自动同步。
- 03
按所有者、同组、其他人逐项调整读、写、执行;需要特殊语义时再开启 setuid、setgid 或 sticky 位。
- 04
阅读结果区的权限解读和风险提示,确认没有意外打开其他人写入、777 或 setuid 可写组合。
- 05
复制数字 chmod 命令用于快速修复,或复制符号 chmod 命令用于脚本、文档和评审中说明具体意图。
- 06
如果你只想模拟相对变更,切到符号操作模式;如果你在配置系统默认权限,切到 umask 模式。
功能说明
让工具准确又顺手的一些细节:
- 八进制始终以四位输出并显示特殊位首位;未设置特殊位时,chmod 命令会简洁地使用三位。
- 符号解析能容忍开头的文件类型字符,因此可以直接粘贴整列 ls -l 权限。
- 条件执行 X 的处理与真实 chmod 一致——目录或已有任意执行权限时才授予执行。
- 每个值和命令都带行内复制按钮,并提供清空当前模式的重置操作。
- 全部在浏览器本地运行;路径、文件名和权限都不会离开你的设备。
适合哪些场景
这些都是 chmod 真正常见且容易出事故的场景,适合在执行前先用计算器过一遍。
-
修复 SSH 私钥权限
SSH 客户端通常会拒绝使用对组或其他人可读的私钥。用工具确认私钥是 600,.ssh 目录是 700,既能通过客户端检查,也不会把密钥暴露给同机账号。
-
部署 Web 站点文件
普通页面和配置常用 644,目录和可执行脚本常用 755。先确认 Web 服务只需要读取和进入,不需要对代码目录拥有写入能力。
-
规划共享临时目录
当团队需要共同写入某个目录时,通常要组合组写入、setgid 和 sticky 位。先在这里确认每一位,再复制命令到共享主机上执行。
-
审查 Dockerfile 与 CI 脚本
看见 chmod 4755、chmod +s 或 chmod -R 777 时,不要只凭直觉判断。把值贴进来,检查它最终授予了谁什么权限。
-
修复上传、缓存和日志目录
应用报错无法写入时,问题可能是所有者不对、目录缺少执行位,或只需要组写入。先算清楚再改,避免直接放大到 777。
-
发布二进制和脚本
打包产物里可执行文件需要 x,文档和配置不需要。用矩阵检查 release 包,避免把本地构建机上的可写权限带进生产环境。
-
共享主机权限核对
主机商文档里常见 705、750、775 等建议值。把它们转换成中文权限解释后,再决定是否适合你的目录结构和租户隔离要求。
-
教学和团队交接
把 4-2-1 加法、rwx 字符串和 chmod 命令放在同一屏,能更快解释为什么 644、755、600 和 777 的风险完全不同。
Unix 权限模型速读
理解 chmod 之前,先把三个基础概念分清:权限给谁、每一位代表什么、文件和目录为什么不一样。
-
三类对象:所有者、同组、其他人
每个文件或目录都有三组权限:所有者 user、所属组 group,以及其他所有账号 others。chmod 的三个普通数字就是按这个顺序排列,分别回答这三类人能做什么。
-
4-2-1 的八进制加法
读是 4,写是 2,执行是 1。同一组内把开启的权限相加即可:rwx 是 7,rw- 是 6,r-x 是 5,r-- 是 4。644 就是所有者 6、同组 4、其他人 4。
-
符号表示更适合表达意图
rwxr-xr-x 是 ls -l 常见格式,u+x、go-w、a=r 是相对操作。数字形式适合一次性设置完整权限,符号形式适合只添加或移除某一部分,减少误覆盖。
-
目录的执行位不是运行程序
文件上的 x 表示可以执行脚本或二进制;目录上的 x 表示可以进入目录、访问目录内已知名称的文件。一个目录只有读权限没有执行权限,通常仍然无法正常打开。
-
setuid、setgid 和 sticky 位
四位八进制的第一位记录特殊位。setuid 和 setgid 会让可执行文件以文件所有者或所属组身份运行;目录上的 setgid 会让新文件继承目录所属组;sticky 常用于共享目录,限制用户删除彼此文件。
-
umask 是默认权限的减法
新文件通常从 666 起步,新目录从 777 起步,umask 再从中减去对应权限。umask 022 会得到文件 644、目录 755;umask 077 会让新对象基本只对所有者开放。
使用建议
让系统既好用又安全的合理默认:
- 优先采用够用的最小权限:文件 644、目录 755 能覆盖大多数情况。
- 密钥类文件保持 600(或 400)、其所在目录保持 700,确保只有所有者能访问。
- 把 777 当作告警信号。如果某个东西只有 777 才能用,真正问题通常是所有者、所属组或目录执行位,而不是权限给得不够宽。
- setuid 和 setgid 要谨慎使用,绝不要用在同时组可写或所有人可写的对象上。
- 对共享的、所有人可写的目录加上 sticky 位,避免用户删除彼此的文件。
- 只想调整一个权限位时优先使用符号命令,例如 chmod go-w 或 chmod u+x,不要用绝对数字顺手覆盖其它本来正确的位。
边界与注意事项
这个计算器覆盖与不覆盖的范围:
- 它只计算权限位,不会修改文件,也不会在你的系统上执行命令。
- 所属者(chown)、ACL(setfacl)和扩展属性(chattr)是独立机制,不在本工具范围内。
- 符号操作支持常见的 u/g/o/a、+/-/= 与 r/w/x/X/s/t 语法,并非每种生僻组合都支持。
- umask 反推使用标准的 666/777 基准;登录 shell 可能再叠加额外限制。
常见问题
关于 chmod 与 Unix 权限的常见问题。
chmod 755 是什么意思?
755 表示所有者可读、写、执行(7 = 4+2+1),同组和其他人可读、可执行但不可写(5 = 4+1)。这是目录和可执行脚本的常见设置。
什么时候用 644,什么时候用 755?
普通文件常用 644,让所有者可写、其他人只读。目录和可执行脚本常用 755,因为目录需要执行位才能进入,脚本需要执行位才能运行。把目录设成 644 是常见错误,结果通常是看得到名字但进不去。
八进制和符号表示法有什么区别?
八进制(如 644)用一个数字编码每个权限组;符号(如 rw-r--r-- 或 u=rw,go=r)则逐组写明读 / 写 / 执行。它们描述的是同一组位,本工具会让两者保持同步。
setuid、setgid 和 sticky 位有什么作用?
setuid/setgid 让可执行文件以文件所有者 / 所属组的权限运行;目录上的 setgid 让新建文件继承该组。目录上的 sticky 位表示只有文件所有者才能删除它。它们体现在八进制首位以及符号形式的 s/S/t/T 上。
为什么 777 被认为危险?
777 让系统上每个用户都能读取、修改和执行该文件或目录。对任何共享或对外暴露的对象来说,这都很容易导致被篡改或被攻破——应优先使用够用的最小权限。
umask 和 chmod 是什么关系?
umask 定义新建文件(基准 666)和目录(基准 777)时要去掉哪些权限位。因此 umask 022 会让文件得到 644、目录得到 755。chmod 用于显式设置权限,umask 设置的是默认值。
我的输入会被发送出去吗?
不会。计算器完全在浏览器中运行,文件名、权限值和 umask 输入都不会离开你的设备。