Skip to content

chmod 计算器 — Linux 文件权限

在线 chmod 计算器:Linux 文件权限在八进制(755、644)与 rwx 符号之间双向转换,实时生成可复制的 chmod 命令,并自动提示 777 等高危权限。免费使用,全部在浏览器本地完成,数据不上传。

无追踪 浏览器中运行 免费
所有计算均在你的浏览器本地完成——输入的权限不会离开这台设备。
常用权限
权限矩阵
读取(4)写入(2)执行(1) 数字 rwx
所有者(u) 7 rwx
组(g) 5 r-x
其他用户(o) 5 r-x
特殊权限位
chmod 命令
数字(绝对)模式
chmod 755 file
符号模式
chmod u=rwx,go=rx file
递归(-R)
chmod -R 755 dir
仅目录
find dir -type d -exec chmod 755 {} +
仅文件
find dir -type f -exec chmod 644 {} +

提示:chmod -R u+rwX 只给目录和已经可执行的文件添加执行位——比一刀切的 -R 755 更安全。

在 Linux 上,755 这样的数字 chmod 会保留目录上已有的 setuid/setgid——请用 00755、=755 或 u-s,g-s 显式清除(BSD/macOS 默认会清除)。

查看文件当前权限:stat -c '%a' file(Linux)· stat -f '%Lp' file(macOS)

umask 计算器

新建文件(基数 666)
644 · rw-r--r--
新建目录(基数 777)
755 · rwxr-xr-x

effective = base & ~umask

Linux 文件权限对照表:常用 chmod 值

Linux 文件权限对照表:常用 chmod 值
八进制 符号 典型用途 所有者 其他用户
400 r-------- SSH 私钥(只读) r-- --- ---
600 rw------- 私密文件、SSH 密钥 rw- --- ---
644 rw-r--r-- 网页、配置文件 rw- r-- r--
664 rw-rw-r-- 组可编辑文件 rw- rw- r--
666 rw-rw-rw- 任何人可编辑——避免使用 rw- rw- rw-
700 rwx------ 私有目录 rwx --- ---
755 rwxr-xr-x 脚本、Web 目录 rwx r-x r-x
775 rwxrwxr-x 组共享目录 rwx rwx r-x
777 rwxrwxrwx 任何人可做任何事——避免使用 rwx rwx rwx
1777 rwxrwxrwt 共享临时目录(/tmp) rwx rwx rwt

权限数字 0-7 速查

权限数字 0-7 速查
数字 二进制 rwx 含义
0 000 --- 无权限
1 001 --x 仅执行
2 010 -w- 仅写入
3 011 -wx 写入 + 执行
4 100 r-- 仅读取
5 101 r-x 读取 + 执行
6 110 rw- 读取 + 写入
7 111 rwx 读取 + 写入 + 执行
已对照 POSIX chmod 语义与 GNU coreutils 手册审核;s/S 与 t/T 大小写、子句顺序以及 GNU 对目录 setuid/setgid 的保留行为均经一手资料核验 — Go Tools 工程团队 · 2026年7月17日

什么是 chmod?

chmod——change mode——是 Unix 和 Linux 中设置谁可以读取、写入或执行某个文件的命令。每个文件携带九个权限位,分成三组(所有者、组、其他用户);chmod 既接受八进制数字形式的数字(绝对)模式,如 chmod 755,也接受字母形式的符号模式,如 chmod u=rwx,go=rx。两者描述的是完全相同的位,本计算器在它们之间实时互译。

八进制速记之所以成立,是因为每种权限都是 2 的幂:读取是 4,写入是 2,执行是 1,每类用户的那位数字就是它们的和。于是 7 是全部权限(4+2+1),5 是读取加执行,6 是读取加写入,0 什么都没有。把 rwxr-xr-x 从左到右按三个一组来读,就得到 7、5、5。第四位(最前面的那位)编码特殊模式——setuid(4)、setgid(2)和 sticky 位(1)——4755 或 1777 就是这么来的;它们在符号串中表现为 s 或 t 取代 x 的位置。

权限是 Unix 安全的第一道防线,日常权限问题大多能归结为几种固定模式:脚本无法运行是缺执行位(u+x),目录进不去是缺 x 位,Web 资源应该是 644 配上层 755 目录,私钥必须是 600 否则 OpenSSH 拒绝使用。错误也同样成群出现——最臭名昭著的就是 chmod 777,它用把写权限交给机器上每一个账户的方式来「修复」访问错误。本页把算术、符号、可直接运行的命令和风险警告集中在一处;既然八进制只是基数为 8 的记数法,你还可以用进制转换器探索其背后的进位算术。

# Make a script executable, then verify with ls -l
$ ls -l deploy.sh
-rw-r--r--  1 jack  staff  512 Jul 17 10:00 deploy.sh
$ chmod 755 deploy.sh
$ ls -l deploy.sh
-rwxr-xr-x  1 jack  staff  512 Jul 17 10:00 deploy.sh

# The symbolic equivalent of 755
$ chmod u=rwx,go=rx deploy.sh

# Read the current mode as a number
$ stat -c '%a' deploy.sh   # Linux → 755
$ stat -f '%Lp' deploy.sh  # macOS → 755

核心特性

三种视图,一个状态

复选框矩阵、八进制数字和符号 rwx 串全都是可编辑的实时输入——修改任意一个,另外两个即刻跟进,双向同步。

特殊权限位处理到位

setuid、setgid 和 sticky 位是一等公民:第四位八进制数字、s/S 与 t/T 的大小写规则、正确的符号子句(u+s、g+s、a+t)都严格按照 chmod 的理解方式呈现。

ls -l 整行直接粘贴

把整行 ls -l 输出丢进符号框——文件类型字符、SELinux 点号、ACL 加号或 macOS 的 @ 都能处理——无需手动修剪即可得到八进制模式。

真正能运行的命令

数字、符号、递归以及更安全的 find -type d / find -type f 组合,每条都带复制按钮——另附读取文件当前权限的 stat 命令,以及关于清除目录 setuid 的 GNU 说明。

输入即刻触发风险提示

任何人可写的模式会立即亮起警告:777 和 666 被单独点名,任何其他用户写位都会触发提示,而 1777 会被正确识别为共享目录的 sticky 位模式而非错误。

umask、速查表与分享链接

内置的 umask 计算器显示新建文件和目录将获得的权限,两张速查表覆盖常用模式和数字 0-7,「复制链接」可分享精确状态——全部 100% 在你的浏览器中完成。

chmod 权限示例

755 — 脚本与 Web 目录的标准权限

755
rwxr-xr-x — chmod 755 file · chmod u=rwx,go=rx file

755 让所有者拥有完全控制(读 + 写 + 执行 = 4 + 2 + 1 = 7),而组和其他用户只能读取和执行、无法修改(4 + 1 = 5)。这正是部署脚本或公开 Web 目录需要的设置:服务器可以进入目录并对外提供内容,但只有所有者能改动它。计算器同时给出两种命令形式——数字模式 755 和等价的符号形式 u=rwx,go=rx——而「仅文件」命令会自动降为 644,因为普通文件不应携带用不上的执行位。

600 — 把私密文件锁定为仅所有者可用

600
rw------- — 所有者可读写,其他人一无所见

600(rw-------)是 SSH 私钥、.env 文件、API 凭据以及任何不应被本机其他账户打开的文件的正确设置。OpenSSH 会主动强制执行这一点:组或其他用户可读的私钥会被直接拒绝,并抛出著名的「Permissions 0644 ... are too open」错误。载入 600 预设,复制 chmod 600 file,风险面板保持静默——这正是最小权限基线应有的样子。

4755 — setuid 剖析:为什么 x 变成了 s

4755
rwsr-xr-x — 所有者的执行位显示为 s 而不是 x

开头的 4 是 setuid 位:无论谁运行该程序,它都以文件所有者的身份执行——passwd 之所以能让普通用户更新 root 拥有的文件,靠的就是它。在符号形式中,所有者的执行位从 x 变为 s(小写 s 表示执行位同时置位;大写 S 表示设置了 setuid 却没有执行位,这几乎总是配置失误)。计算器会渲染第四个八进制位、勾选 setuid 复选框并给出提示性警告,因为 setuid 可执行文件值得认真审视。

解码 ls -l 输出 — 整行直接粘贴

drwxr-xr-x  5 jack staff 160 Jul 17 dist
755

把 ls -l 输出中的一行原样粘贴到符号框——无需任何修剪。工具会读取第一个字段 drwxr-xr-x,把开头的 d 识别为文件类型字符(目录)而非权限位,兼容部分系统附加的 SELinux 点号、ACL 加号或 macOS 的 @,并把剩余九个字符转换为八进制 755。这是在代码评审或故障处理中回答「这个权限是几?」最快的方式,对符号链接的 l 和普通文件的 - 同样适用。

如何使用 chmod 计算器

  1. 1

    以任意方式设置权限

    按用户类别勾选读取、写入、执行复选框,输入 755 或 4755 这样的八进制值,或从预设开始——SSH 私钥 400、私密文件 600、网页文件 644、脚本 755 等等。

  2. 2

    三种视图同时阅读

    复选框矩阵、八进制值和符号 rwx 串在任意方向上保持同步,每一行都会随操作显示对应的数字和三字符片段。

  3. 3

    复制你需要的那条命令

    五条可直接运行的变体实时更新:数字模式、带智能分组的符号等价形式、递归 -R,以及基于 find -type 的更安全的仅目录/仅文件组合。

  4. 4

    解码已有权限

    把完整的 ls -l 行——连同文件类型字符、ACL 标记——粘贴进符号框,立即读出八进制值,特殊权限位也包含在内。

  5. 5

    检查 umask 并分享结果

    umask 区域显示新建文件和目录将获得的权限,「复制链接」把当前模式收进一条 URL,可直接放进代码评审或运维手册。

常见 chmod 错误

用 777 来「修复」Permission denied

把权限向全世界敞开通常只是掩盖了所有权问题而非解决它——还让机器上的每个账户都能修改你的文件。先修所有权,权限保持收紧。

✗ 错误
sudo chmod -R 777 /var/www   # 能访问了,安全也没了
✓ 正确
sudo chown -R www-data:www-data /var/www   # 修复所有权,保持 755/644

对上传目录一刀切地 chmod -R

递归数字模式用同一个值同时打在文件和目录上:755 会让每张图片、每个文档都变成「可执行」,777 则让它们任何人可写。应该按类型拆分递归。

✗ 错误
chmod -R 777 uploads/
✓ 正确
find uploads -type d -exec chmod 755 {} + && find uploads -type f -exec chmod 644 {} +

忘记目录需要执行位

目录上的 x 位意味着「可以进入和遍历」。644 的目录连能列出它的用户都无法 cd 进去——并在更深一层制造令人困惑的 Permission denied 错误。

✗ 错误
chmod 644 reports/   # cd reports/ → Permission denied
✓ 正确
chmod 755 reports/   # 目录带上 x 位才能被进入

发布脚本时忘了执行位

新创建的文件继承 umask 默认值(如 644),因此 ./script.sh 会报 Permission denied,直到至少为所有者加上执行位。CI runner 和 Docker 入口脚本天天撞上这个问题。

✗ 错误
./deploy.sh   # bash: ./deploy.sh: Permission denied
✓ 正确
chmod u+x deploy.sh && ./deploy.sh

chmod 计算器能做什么

安全地部署到 Web 服务器
用生成的 find 命令为 nginx 或 Apache 文档根目录设置目录 755、文件 644,并让风险面板在上线前确认没有任何东西是任何人可写的。当某个目录还需要基本认证保护时,可配合 htpasswd 生成器使用。
修复 SSH 密钥权限
400 和 600 预设给出的正是 OpenSSH 对私钥的要求,FAQ 还详细讲解了私钥被组用户可读时出现的「Permissions 0644 ... are too open」报错。
故障排查时解码权限
把生产环境 shell 里的 ls -l 行直接粘贴到符号框,rwxr-sr-x 立刻变成 2755,不用在脑子里数位——特殊模式、ACL 标记和文件类型字符全都能识别。
搞定共享主机和 FTP 的权限数字
控制面板和 FTP 客户端要的是数字模式:public_html 用 755,页面用 644,含凭据的配置文件用 600。载入预设、查阅速查表、复制数字——不用猜。
为容器和 CI 脚本做准备
入口脚本和 hook 脚本需要 u+x,Docker 或 CI runner 才能执行它们,而卷挂载会继承宿主机的权限。在这里为每种情况生成精确的 chmod 命令,再用 crontab 生成器安排运行它们的定时任务。

Linux 文件权限的工作原理

八进制算术:4 + 2 + 1
每类用户占一位八进制数字,其值是读取 = 4、写入 = 2、执行 = 1 之和。八种组合全部存在:0 无权限,1 仅执行,2 仅写入,3 写 + 执行,4 仅读取,5 读 + 执行,6 读 + 写,7 三者俱全。因此 640 这样的模式读作:所有者 6(读 + 写)、组 4(仅读)、其他用户 0(无)。本页的数字速查表列出全部八行,勾选复选框时矩阵会同步展示这个求和过程。
数字(绝对)模式与符号模式
chmod 用两种方式接受同样的位。数字模式陈述完整的最终结果——chmod 755 file 会替换之前的一切设置。符号模式则描述相对当前状态的变化:chmod u=rwx,go=rx file 显式设定各用户类别,而 chmod g+w file 只翻转一个位、其余保持不变。数字模式适合在脚本和部署中强制执行已知的正确状态;符号模式擅长 u+x 这类一次性调整。本计算器两种都会生成,并像有经验的管理员那样自动合并用户类别(go=rx、a=rwx)。
setuid、setgid 与 sticky 位
最前面的第四位八进制数字编码特殊模式:setuid = 4000 让可执行文件以文件所有者的身份运行;setgid = 2000 对组做同样的事(并让目录中新建的文件继承其组);sticky 位 = 1000 加在共享目录上,把删除权限限制为各文件的所有者——/tmp 的 1777 就是典型。在 ls -l 中它们占据执行位的位置:执行位同时置位时是小写 s 或 t,未置位时是大写 S 或 T(通常是值得检查的配置失误)。一个 GNU/Linux 细节:数字 chmod 会刻意保留目录上已有的 setuid/setgid——用 00755 这样的五位模式、=755 这样的等号子句或 u-s,g-s 才能清除,详见 GNU coreutils 手册。BSD 和 macOS 则默认在数字模式下清除它们。
umask 如何决定新文件的权限
新建文件从基数 666 出发,目录从 777 出发;进程的 umask 随后关掉其中包含的位——有效权限 = 基数 & ~umask。默认的 umask 022 屏蔽组和其他用户的写位,得到熟悉的 644 文件和 755 目录。更严格的 077 给出 600 和 700,一切仅所有者可见;协作场景的 002 给出 664 和 775,组成员可以写入。本页的 umask 区域对两种基数实时运行这套计算。

文件权限最佳实践

授予能工作的最小权限
从最紧的模式出发,只在出问题时逐步放开:私密文件 600,共享可读文件 644,只有真正需要执行或进入时才用 755。每多一个写位就多一分攻击面。
默认 644 文件配 755 目录
这对组合几乎适用于所有 Web 根目录、仓库检出和共享读取场景。普通文件很少需要执行位;目录则永远需要它才能被进入——把两者弄混是日常权限报错的最大来源。
递归用 find -type,别用一刀切的 -R
chmod -R 755 会把每个文件都标成可执行。请使用本工具生成的仅目录和仅文件命令,或 GNU chmod 的大写 X(u+rwX,go+rX),它只在该加执行位的地方加。
服务器能触及的东西上绝不留 777
任何人可写的 Web 根目录和上传目录是文件注入和页面篡改的教科书路径。若多个账户确需写入,优先用共享组配 775 或 2775(setgid 保持组所有权一致),而不是把权限向全世界敞开。
SSH 密钥保持 600——定稿后可用 400
OpenSSH 断然拒绝组或其他用户可读的私钥。600 是工作标准;400 还能防止对不再编辑的密钥的意外覆盖。公钥和 authorized_keys 用 644 即可。

chmod 计算器常见问题

chmod 777 是什么意思?
它把读取、写入和执行权限授予所有人——所有者、组和其他所有用户一视同仁。每位数字都是某一类用户的读(4)、写(2)、执行(1)之和,三个位置都取最大值意味着没有任何人受到任何限制。符号形式是 rwxrwxrwx。777 有合法用途,但非常少见,而且几乎都是目录而非文件;当某篇教程让你对某个东西 chmod 777 来「解决问题」时,真正的问题几乎总是所有权,chown 才是正确的修复方式
chmod 777 危险吗?
对于其他用户或 Web 服务器能触及的任何东西,答案是肯定的:777 意味着系统上的任何账户——包括已被攻破的服务账户——都可以替换文件内容或向目录里投放新文件。被设成 777 的 Web 文档根目录是网站被篡改、被注入恶意代码的经典路径。唯一的例外恰恰印证了规则:1777 加上了 sticky 位,就像 /tmp 那样,允许所有人创建文件、同时阻止用户删除彼此的文件——本计算器会把裸 777 标记为风险,但能正确识别 1777 是共享目录的标准模式。
chmod 755 和 644 有什么区别?
区别在执行位。755(rwxr-xr-x)允许所有人执行或进入,这正是目录、脚本和二进制文件需要的;644(rw-r--r--)则完全没有执行权限,适合 HTML 页面、图片、配置文件这类普通文件。经典搭配是所有目录 755、目录内所有文件 644——本计算器生成的「仅目录」「仅文件」命令用 find -type d 和 find -type f 恰好实现这种区分。
如何解决「Permissions 0644 for 'id_rsa' are too open」?
运行 chmod 600 ~/.ssh/id_rsa 然后重新连接。OpenSSH 拒绝使用任何其他账户能读到的私钥:它会打印横幅 WARNING: UNPROTECTED PRIVATE KEY FILE!、一行 Permissions 0644 for '/home/user/.ssh/id_rsa' are too open.,声明私钥文件绝不能被其他人访问,然后忽略这把密钥——表现为突然要求输入密码,或报 Load key ... bad permissions。600(rw-------)能通过检查;400(r--------)同样可行,还能额外防止意外覆盖。密钥文件的具体要求见 OpenSSH 手册
chmod 和 chown 有什么区别?
chmod 改变现有的所有者、组和其他用户对文件能做什么——也就是权限位;chown 改变所有者和组本身是谁。两者解决的是不同的问题:如果 Web 服务器写不了自己的上传目录,正确的修复通常是对目录执行 chown www-data:www-data,而不是用 chmod 把权限向全世界敞开。当某个文件意外不可读时,一个好习惯是:先用 ls -l 检查所有权,再解码权限(把那一行粘贴进本计算器),然后才决定该用两条命令中的哪一条。
chmod +x 是做什么的?
它为未被 umask 屏蔽的用户类别添加执行位——在常见的 umask 022 下即所有人,因此 chmod +x script.sh 通常等价于 chmod a+x script.sh,能把一个 shell 拒绝运行的文件变成可执行文件。但在 077 这样更严格的 umask 下,+x 只影响所有者。如果你想要一个不受 umask 影响的确定结果,就明确写出来:只给所有者用 u+x,给所有人用 a+x。目录也需要同样的位才能被进入,这就是目录默认 755 而非 644 的原因。
如何递归地修改所有文件和目录的权限?
避免一刀切的 chmod -R 755:它会让每个普通文件都变成可执行,轻则制造噪音,重则埋下风险。干净的做法是把目录和文件分开处理——目录用 find dir -type d -exec chmod 755 {} +,文件用 find dir -type f -exec chmod 644 {} +,两条命令本计算器都会按你选择的模式生成。GNU chmod 的大写 X 能一行完成同样的事(chmod -R u+rwX,go+rX dir):它只给目录以及已经可执行的文件添加执行位。一个 Linux 细节:755 这样的纯数字 chmod 会保留目录上已有的 setuid/setgid 位——若确有此意,请用 00755 或 u-s,g-s 显式清除。
使用这个计算器时我的数据会被上传吗?
不会。每一次转换都在你的浏览器本地用纯 JavaScript 位运算完成——没有服务器调用,没有与你输入内容挂钩的分析事件,也没有任何留存。你可以打开浏览器开发者工具,边切换权限边观察网络面板保持静默,甚至完全离线继续使用。「复制链接」按钮把当前模式编码进 URL 片段(fragment),而片段同样永远不会发送到服务器。