chmod 计算器,免费

Linux/Unix 文件权限的交互式计算器。

没有数据离开您的设备
读取(4)
写入(2)
执行(1)
所有者
用户组
其他
数字表示
符号表示 ---------
chmod 000 filename

常用权限

使用方法

  1. 勾选复选框来为所有者、用户组和其他人设置读、写、执行权限。
  2. 或直接输入 3 位数字值(例如 755)。
  3. 符号表示法和 chmod 命令会实时更新。
  4. 点击复制命令以复制完整的 chmod 命令。

权限参考

数字 权限 符号
0无权限---
1仅执行--x
2仅写入-w-
3写入 + 执行-wx
4仅读取r--
5读取 + 执行r-x
6读取 + 写入rw-
7读取 + 写入 + 执行rwx

常见问题

chmod 755 是什么意思?

755 表示所有者可以读、写、执行(7),而用户组和其他人可以读和执行但不能写(5)。这是目录和脚本最常用的权限。

644 和 755 有什么区别?

644(rw-r--r--)允许所有者读写,其他所有人仅读 · 是文件的典型权限。755(rwxr-xr-x)多了执行权限 · 是目录和脚本的典型权限。

这也适用于目录吗?

适用。数字权限的工作方式相同。对于目录,「执行」表示可以进入该目录并访问其内容。

Unix九位权限模型

Unix类系统的每个文件和目录都带有一个「模式」,一个记录了「谁能做什么」的小整数。该模型自第六版Unix(1975年5月)起基本保持不变,最早的chmod手册条目出现在第一版Unix(1971年11月)中。它将九个权限位编码为三组读/写/执行三元组,分别对应文件的所有者、所属组和其他所有人:

Owner    Group    Others
r w x    r w x    r w x
4 2 1    4 2 1    4 2 1

三位二进制数恰好对应一个八进制数字,因为三位可以编码2³ = 8个不同值(0-7)。权重4、2、1分别对应2²、2¹、2⁰。读(4)+写(2)+执行(1)的任意组合均可不冲突地产生每类8个可能的数字,这就是完整的八进制到符号的映射关系。因此,chmod 755的含义是:所有者具有rwx(4+2+1=7)权限,所属组具有r-x(4+1=5)权限,其他人也具有r-x权限。

ls -l输出中看到的10字符字符串是相同数据加上最前面表示文件类型的一列:普通文件为-,目录为d,符号链接为l,字符设备为c,块设备为b,命名管道为p,套接字为s。其余九个字符是权限三元组。

符号表示法:chmod u+x file

八进制模式一次性覆写全部九个位。符号模式是非破坏性的,只翻转您指定的位。语法为who+op+perm

常用示例:

数字模式是明确且幂等的(chmod 755始终代表相同的九个位)。符号模式是精准的(chmod g+w仅翻转一个位)。生产脚本倾向于使用数字模式以便在审计日志中清晰可读;在命令行操作的运维人员则倾向于使用符号模式进行增量调整。

常见模式及其用途

模式符号表示典型用途
755rwxr-xr-x公开可执行文件和标准目录,/usr/bin/*,Web文档根目录,Git工作树
644rw-r--r--标准普通文件、配置文件、源代码、文档
700rwx------私有目录,~/.ssh,不应被他人查看的个人文档
600rw-------私有文件,~/.ssh/id_rsa~/.gnupg/*,密码文件
444r--r--r--所有人只读,固定参考数据,Cargo注册表索引
750rwxr-x---所有者完全权限,所属组读取/遍历,其他人无权限,组共享服务目录
777rwxrwxrwx几乎总是错误的。见下文。

为什么chmod 777几乎总是错误的

将文件设为777会使其对所有人可读、可写、可执行。机器上的任何用户(包括无特权服务账户和任何被入侵的进程)都能读取文件内容、修改文件并执行它。教程中「试试chmod 777,直到能用为止」的建议是一种安全反模式,已导致无数真实安全事故:被篡改的世界可写配置文件、成为篡改向量的世界可写Web目录、允许伪造日志的世界可写日志文件、允许任意代码执行的世界可执行目录。

如果权限错误阻碍了您,正确的解决方法几乎总是使用chown更改文件的所有者,或使用chgrp更改其所属组,从而让需要访问权限的用户实际拥有或共同拥有该文件,而不是为所有人移除访问控制。

特殊位:setuid、setgid、粘滞位

在模式前面添加第四个八进制数字可解锁三个特殊位,均为早期Unix设计的遗留物:

当这些位被设置时,ls -l输出会将执行字符替换为sStT(大写字母表示该位已设置但底层执行位未设置)。

umask:chmod的逆操作

chmod设置现有文件的权限。umask通过充当减法掩码来决定新建文件的默认权限。计算方式:新建普通文件的基础值为666(rw-rw-rw-),新建目录为777,再减去umask中设置的位。常见值:

不带参数输入umask可显示当前值。在Shell初始化文件(~/.bashrc~/.zshrc)或/etc/login.defs中设置,可应用于整个会话。

文件与目录:x的不同含义

相同的r/w/x位在目录上的含义与在文件上有微妙的区别:

递归chmod与find模式

chmod -R 755 /var/www对目录树中的每个文件和目录应用相同的模式,这几乎总是错误的,因为文件和目录需要不同的模式(如文件用644,目录用755)。正确的惯用写法是使用find

find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +

或者,等价地,使用GNU chmod的大写Xchmod -R u=rwX,go=rX /var/www仅对目录以及已在某个类别有执行权限的文件添加执行位,这正是通常想要的结果。

符号链接、ACL及Linux如何扩展权限模型

两点值得了解的细化:

更多问题

为什么我的SSH密钥被拒绝,提示「权限过于开放」?

因为OpenSSH客户端拒绝使用组或其他用户可读的私钥,其逻辑是任何他人可读的东西都不应作为凭据。解决方法是chmod 600 ~/.ssh/id_rsa(以及对目录本身执行chmod 700 ~/.ssh)。~/.gnupg/和大多数其他凭据存储适用相同的逻辑。

chmod和chown有什么区别?

chmod更改模式位,即所有者/组/其他用户可以做什么。chown更改所有者是谁。通常两者都需要:文件「错误用户无法读取」通常不需要开放权限,而是需要将文件的所有者更改为需要访问权限的用户。请先尝试chown myuser:mygroup file

日志文件应该使用666权限吗?

几乎不应该。世界可写的日志文件允许任何进程(包括以低权限用户运行的被入侵服务)伪造日志条目或清空日志。标准做法是使日志目录对特定日志组(Debian上为adm,BSD上为wheel等)可写,并将相关服务加入该组;或使用logrotate加上日志守护进程(rsyslog、systemd-journald)来处理文件所有权。

本计算器是否考虑了特殊位?

不考虑,它只涵盖基础九位权限位(标准3位模式)。对于setuid(4xxx)、setgid(2xxx)或粘滞位(1xxx),需要手动在前面添加前导数字。绝大多数日常chmod操作使用3位模式,从不涉及特殊位。

有任何内容会被发送至服务器吗?

不会。切换↔八进制↔符号的转换是纯算术运算,在您的浏览器中计算。本页面加载完成后可离线使用。

相关工具

.htaccess 生成器,免费 Cron 表达式生成器,免费 文件哈希计算器,免费