安全

Chmod 权限计算器

Unix 权限看起来只是三个数字,但一个数字写错就可能让 SSH 私钥被拒用、部署目录无法进入,或者把可写权限暴露给同机所有用户。这个 chmod 权限计算器把八进制、rwx 符号串、权限矩阵和可复制命令放在同一个工作区:点选读写执行位、切换 setuid / setgid / sticky,套用 u+x、go-w、a=r 这类符号操作,或反推 umask 产生的默认文件和目录权限。所有计算都在浏览器本地完成。

  • 八进制 ⇄ 符号 ⇄ 矩阵
  • setuid / setgid / sticky
  • umask 与符号操作
工具/chmod-calculator
42执行1所有者6同组4其他人4

八进制

0644

符号

rw-r--r--

数字命令

chmod 644 file

符号命令

chmod u=rw,g=r,o=r file

谁能做什么

所有者
读取写入
同组
读取
其他人
读取

功能简介

权限问题最容易出错的地方不是计算本身,而是你是否真正看懂了每一位代表的访问能力。这个工具把每种表示同步在一起,让你在执行 chmod 前先确认意图。

  1. 01

    八进制、符号和矩阵实时联动

    点击 rwx 网格、输入 755 或 0644,或者直接粘贴 ls -l 里的 rwxr-xr-x 权限列,八进制值、符号字符串和矩阵都会立即同步。你可以从自己最熟悉的表示法开始,不需要额外点转换按钮。

  2. 02

    文件和目录语义分开解释

    执行位在文件上表示可运行,在目录上表示可进入和遍历。工具会根据目标类型切换说明,也会让条件执行位 X 按目录或已有执行位的真实规则计算。

  3. 03

    特殊位显示完整

    setuid、setgid 和 sticky 位会同时体现在四位八进制首位和符号字符串的 s/S/t/T 中。即使特殊位存在但底层执行位未开启,也会用大写形式明确提示。

  4. 04

    两种 chmod 命令可复制

    需要快速操作时复制数字形式,例如 chmod 755 file;需要在脚本或代码评审里表达意图时复制符号形式,例如 chmod u=rwx,g=rx,o=rx file。

  5. 05

    权限解读和风险提示

    结果区会按所有者、同组和其他人逐项说明能读取、写入、执行或进入什么,并对 777、其他人可写、setuid 与可写权限组合等高风险配置给出提示。

  6. 06

    符号操作模拟

    在基准权限上套用 u+x、go-w、a=r、u=g、+t 等操作,查看真实结果。适合在改部署脚本、Dockerfile 或 CI 命令前先验证相对变更。

  7. 07

    umask 默认权限反推

    输入 022、077、002 等 umask,立即看到新建文件和目录分别会得到什么权限,避免把 chmod 和 umask 的职责混在一起。

  8. 08

    本地处理不碰文件

    工具只做权限位计算,不会访问、上传或修改你的文件。命令需要你确认后自己复制到终端执行。

如何使用

从想清楚访问意图,到复制一条可执行命令,按这个顺序走最不容易出错。

  1. 01

    先选择目标是文件还是目录。目录的执行位表示进入和遍历,符号操作里的 X 也会按这个目标类型计算。

  2. 02

    从常用预设开始,或输入已有的八进制值、粘贴 rwxr-xr-x 这类符号串,让矩阵自动同步。

  3. 03

    按所有者、同组、其他人逐项调整读、写、执行;需要特殊语义时再开启 setuid、setgid 或 sticky 位。

  4. 04

    阅读结果区的权限解读和风险提示,确认没有意外打开其他人写入、777 或 setuid 可写组合。

  5. 05

    复制数字 chmod 命令用于快速修复,或复制符号 chmod 命令用于脚本、文档和评审中说明具体意图。

  6. 06

    如果你只想模拟相对变更,切到符号操作模式;如果你在配置系统默认权限,切到 umask 模式。

功能说明

让工具准确又顺手的一些细节:

  • 八进制始终以四位输出并显示特殊位首位;未设置特殊位时,chmod 命令会简洁地使用三位。
  • 符号解析能容忍开头的文件类型字符,因此可以直接粘贴整列 ls -l 权限。
  • 条件执行 X 的处理与真实 chmod 一致——目录或已有任意执行权限时才授予执行。
  • 每个值和命令都带行内复制按钮,并提供清空当前模式的重置操作。
  • 全部在浏览器本地运行;路径、文件名和权限都不会离开你的设备。

适合哪些场景

这些都是 chmod 真正常见且容易出事故的场景,适合在执行前先用计算器过一遍。

  1. 修复 SSH 私钥权限

    SSH 客户端通常会拒绝使用对组或其他人可读的私钥。用工具确认私钥是 600,.ssh 目录是 700,既能通过客户端检查,也不会把密钥暴露给同机账号。

  2. 部署 Web 站点文件

    普通页面和配置常用 644,目录和可执行脚本常用 755。先确认 Web 服务只需要读取和进入,不需要对代码目录拥有写入能力。

  3. 规划共享临时目录

    当团队需要共同写入某个目录时,通常要组合组写入、setgid 和 sticky 位。先在这里确认每一位,再复制命令到共享主机上执行。

  4. 审查 Dockerfile 与 CI 脚本

    看见 chmod 4755、chmod +s 或 chmod -R 777 时,不要只凭直觉判断。把值贴进来,检查它最终授予了谁什么权限。

  5. 修复上传、缓存和日志目录

    应用报错无法写入时,问题可能是所有者不对、目录缺少执行位,或只需要组写入。先算清楚再改,避免直接放大到 777。

  6. 发布二进制和脚本

    打包产物里可执行文件需要 x,文档和配置不需要。用矩阵检查 release 包,避免把本地构建机上的可写权限带进生产环境。

  7. 共享主机权限核对

    主机商文档里常见 705、750、775 等建议值。把它们转换成中文权限解释后,再决定是否适合你的目录结构和租户隔离要求。

  8. 教学和团队交接

    把 4-2-1 加法、rwx 字符串和 chmod 命令放在同一屏,能更快解释为什么 644、755、600 和 777 的风险完全不同。

延伸阅读

当仅靠权限还不够、数据本身也需要保密时,可以使用 文件加密解密 。要保护拥有这些文件的账户,可用 密码生成器 生成高强度密钥。

Unix 权限模型速读

理解 chmod 之前,先把三个基础概念分清:权限给谁、每一位代表什么、文件和目录为什么不一样。

  1. 三类对象:所有者、同组、其他人

    每个文件或目录都有三组权限:所有者 user、所属组 group,以及其他所有账号 others。chmod 的三个普通数字就是按这个顺序排列,分别回答这三类人能做什么。

  2. 4-2-1 的八进制加法

    读是 4,写是 2,执行是 1。同一组内把开启的权限相加即可:rwx 是 7,rw- 是 6,r-x 是 5,r-- 是 4。644 就是所有者 6、同组 4、其他人 4。

  3. 符号表示更适合表达意图

    rwxr-xr-x 是 ls -l 常见格式,u+x、go-w、a=r 是相对操作。数字形式适合一次性设置完整权限,符号形式适合只添加或移除某一部分,减少误覆盖。

  4. 目录的执行位不是运行程序

    文件上的 x 表示可以执行脚本或二进制;目录上的 x 表示可以进入目录、访问目录内已知名称的文件。一个目录只有读权限没有执行权限,通常仍然无法正常打开。

  5. setuid、setgid 和 sticky 位

    四位八进制的第一位记录特殊位。setuid 和 setgid 会让可执行文件以文件所有者或所属组身份运行;目录上的 setgid 会让新文件继承目录所属组;sticky 常用于共享目录,限制用户删除彼此文件。

  6. 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 输入都不会离开你的设备。

更多相关工具

继续探索其余的安全工具。