Unix文件权限计算器(chmod)
可视化chmod权限计算器。勾选所有者、所属组、其他用户的权限位,立即获得八进制数字和符号表示。也可直接输入八进制数字进行解码。
| tools.unix-permissions-calculator.label.read | tools.unix-permissions-calculator.label.write | tools.unix-permissions-calculator.label.execute | Oct | |
|---|---|---|---|---|
| tools.unix-permissions-calculator.label.owner | 7 | |||
| tools.unix-permissions-calculator.label.group | 5 | |||
| tools.unix-permissions-calculator.label.other | 5 |
常用预设
chmod 755 filename工作原理
Unix权限与八进制表示的起源
Unix文件权限由Ken Thompson于1969年在PDP-7上设计原始Unix时创建。每个文件的inode存储九个权限位:所有者三位、所属组三位、其他用户三位。将每三位组合成一个八进制数字(0-7)是最自然的选择,三个数字即可完整表示所有权限。该八进制惯例在POSIX.1-1988中被标准化,并在此后所有Linux、macOS、BSD及类Unix系统中保持不变。
符号表示(rwxr-xr-x)从最早的Unix发行版的`ls -l`输出中出现,成为八进制数字的人类可读补充。POSIX将两种表示均定为规范,`chmod u+x file`使用符号形式,`chmod 755 file`使用八进制形式,最终都是对inode模式字段的相同位操作。
读取、写入、执行权限的含义
对于普通文件:读取(r=4)允许打开并读取文件内容;写入(w=2)允许修改或截断文件;执行(x=1)允许将文件作为程序运行。各位互相独立。每个实体的八进制值是已设置位的总和:rwx=7,r-x=5,r--=4。
对于目录,含义有所不同。读取(r)允许用`ls`列出目录内容。执行(x)——有时称为搜索位——允许用`cd`进入目录并通过路径访问其中的文件。写入(w)允许在目录内创建、删除或重命名文件。有读取权限但无执行权限的目录几乎没有实用价值:可以看到文件名但无法打开任何文件。典型目录权限为755。
常见权限模式与安全注意事项
644(rw-r--r--)是普通文件(配置文件、HTML、文本)的标准权限:所有者可编辑,其他人只读。755(rwxr-xr-x)是目录和可执行脚本的标准权限:所有者管理内容,其他人可浏览和读取。600(rw-------)和700(rwx------)将访问权限完全限制给所有者,适用于SSH私钥和密码文件。切勿在Web暴露的文件上使用777;赋予「其他用户」写入权限意味着系统上任意进程都可以覆盖该文件。
umask决定新建文件和目录的默认权限。常见的umask 022意味着新文件权限为644,新目录权限为755(从文件默认666和目录默认777中减去umask对应的位)。了解chmod值和umask的配合关系,可以完全掌控系统的权限基线。
常见问题
›755代表什么含义?
755表示所有者拥有读+写+执行权限(7=4+2+1),所属组拥有读+执行权限(5=4+1),其他用户拥有读+执行权限(5=4+1)。这是目录和可执行脚本的标准权限。
›644代表什么含义?
644表示所有者拥有读+写权限(6=4+2),所属组只读(4),其他用户只读(4)。这是配置文件、网页等普通文件的默认权限。
›目录为什么需要执行权限?
对于目录,执行位是「搜索位」。没有它就无法cd进入该目录或通过路径打开其中的文件,即使有读取权限也不行。只有读取权限而没有执行权限的目录在实践中几乎没有用。
›所有者、所属组、其他用户有什么区别?
所有者是拥有该文件的用户账户(创建时设置,可用chown修改)。所属组是文件所属的组(可用chgrp修改),该组内的用户适用组权限。其他用户涵盖系统上既非所有者又不在所属组的所有用户。
›什么是SUID和SGID?
SUID(设置用户ID)和SGID(设置组ID)是超出标准九位的特殊权限位。可执行文件设置SUID后,以文件所有者的权限运行而非调用者权限——passwd和sudo等命令就使用了这一机制。目录上的SGID使新创建的文件继承目录的所属组。符号表示中用「s」表示(如rwsr-xr-x),八进制值加4000或2000(如4755)。
›chmod 777有危险吗?
是的,特别是在共享系统或Web服务器上。777对系统上所有用户授予读取、写入和执行的完整权限。包括被攻击的Web应用在内的任何进程都可以覆盖或执行该文件,在Web服务器上往往会导致任意代码执行。权限应限制在必要的最小范围内。
›如何使用chmod命令?
使用`chmod 八进制 路径`对单个文件生效,`chmod -R 八进制 目录`递归应用。例如:`chmod 644 index.html`或`chmod 755 /var/www`。也可使用符号语法:`chmod u+x script.sh`仅为所有者添加执行权限而不影响其他位。
›umask是什么?
umask是创建新文件或目录时应用于默认权限的掩码。umask 022会从组和其他用户中移除写入权限,使新文件权限为644,新目录权限为755。在Shell中运行`umask`可查看当前设置,`umask 值`可修改当前会话的设置。
相关工具
最后更新: