在CentOS上查看文件详情时,ls -l输出的第一列总是一串类似drwxr-xr-x或-rw-r--r--的字符,而修改权限时我们又会输入chmod 755、chmod 644这样的命令。这两者之间其实是一一对应的关系,理解了这套映射规则,Linux权限管理就不再神秘。本文详细拆解rwx权限位的结构、数字换算原理以及常见权限组合的实际用法。

一、权限位结构:从rwxr-xr-x说起
执行ls -l /etc/passwd,输出第一段是-rw-r--r--。这一串字符共10位(不算前面的文件类型判断时是9位),需要分成两部分理解。第一位代表文件类型:d表示目录,-表示普通文件,l表示符号链接,还有b、c、s、p等分别对应块设备、字符设备、套接字和管道文件。
剩下的9位按每3位一组分成三段,分别对应三种身份:
- 所有者(owner/user):文件的主人,通常是谁创建的文件谁就是所有者
- 所属组(group):文件所属的用户组,组内成员共享这一段权限
- 其他人(others):既不是所有者也不在所属组里的所有用户
以rwxr-xr-x为例,第一段rwx表示所有者拥有读、写、执行全部权限;第二段r-x表示组内用户可以读和执行,但不能写;第三段r-x表示其他用户同样只能读和执行。三个字母的含义分别是:r(read,读,值为4)可以查看文件内容或列出目录内容;w(write,写,值为2)可以修改文件内容或在目录中新建、删除文件;x(execute,执行,值为1)可以运行脚本或程序,对目录而言则是可以进入该目录(配合cd命令使用)。
这里有个容易被忽视的点:目录的x权限和文件的x权限含义不同。目录没有x权限,即使有r权限也无法cd进去,只能看到文件名列表却无法访问文件属性。所以给目录设置权限时要格外小心,常见的chmod 444 目录会让目录变得几乎不可用。
二、数字表示法的换算原理
数字表示法的本质是八进制编码。每一段3个权限位可以看作3个二进制位,r对应4(二进制100),w对应2(二进制010),x对应1(二进制001)。把一段中存在的权限数值相加,就得到一个0到7之间的数字。三段拼起来就是常见的三位数。
举例说明:rwxr-xr--换算过程如下:所有者是rwx,即4+2+1=7;所属组是r-x,即4+0+1=5;其他人中只有r,即4+0+0=4。合起来就是754。反过来,看到755就能立刻还原出rwxr-xr-x。下表列出所有可能的单段组合:
| 二进制 | 权限串 | 数字 | 含义 |
|---|---|---|---|
| 000 | --- | 0 | 无任何权限 |
| 001 | --x | 1 | 仅执行 |
| 010 | -w- | 2 | 仅写 |
| 011 | -wx | 3 | 写加执行 |
| 100 | r-- | 4 | 仅读 |
| 101 | r-x | 5 | 读加执行 |
| 110 | rw- | 6 | 读写 |
| 111 | rwx | 7 | 全部权限 |
熟练掌握这张表后,看到任何三位数都能瞬间反应出权限含义。比如SSH私钥要求的600,就是rw-------,只有所有者可读写,这正是保证密钥安全的关键——如果私钥权限过于宽松(比如644),ssh客户端会直接拒绝使用该密钥并提示权限警告。
三、chmod命令的实际操作与常见组合
chmod命令修改权限有两种模式。数字模式直接指定完整权限:
chmod 755 deploy.sh # 所有者rwx,组和其他人r-x chmod 600 ~/.ssh/id_rsa # 仅所有者可读写,SSH密钥标准权限 chmod -R 644 /var/www/html # 递归修改目录下所有文件
符号模式则是在现有基础上增减权限,格式为身份+操作+权限:
chmod u+x script.sh # 给所有者增加执行权限 chmod g-w data.txt # 移除组的写权限 chmod o=r file.conf # 将其他人权限设为只读 chmod a+r readme.md # 所有人增加读权限
两种方式的区别在于:数字模式会整体覆盖原权限,适合明确知道目标权限的场景;符号模式只改动指定部分,其余保持不变,适合微调。例如只想给脚本加执行权限,用chmod +x比重新计算三位数字更方便。
日常运维中有几个经典组合值得记住。755用于可执行脚本和目录,是大多数程序安装后的默认值;644用于普通配置文件和网页文件,所有者可改,其他人只读;600用于敏感文件如私钥、数据库密码文件;700用于私有目录,比如~/.ssh目录必须设为700否则SSH功能异常;777则是危险信号,意味着任何用户都能任意修改,生产环境中几乎不应该出现,遇到权限问题时应该优先排查所属用户和组是否正确,而不是粗暴地放开全部权限。
四、权限相关的进阶要点与常见坑
修改权限之外,chown和chgrp负责变更所有者和所属组,三者经常配合使用。例如部署网站时常见的操作序列:
chown -R nginx:nginx /var/www/html # 递归修改所有者和组
find /var/www/html -type d -exec chmod 755 {} \; # 目录统一755
find /var/www/html -type f -exec chmod 644 {} \; # 文件统一644这样区分目录和文件的原因前面已经提到:目录需要x权限才能进入,而普通文件大多不需要执行权限。如果统一设成644,目录会无法访问;统一设成755,文件会多出不必要的执行位,存在被植入恶意脚本的隐患。
另一个容易踩的坑是umask。umask决定了新文件和新目录的默认权限:CentOS中root用户的umask通常是0022,普通用户是0002。计算规则是目录用777减去umask,文件用666减去umask(且默认不赋予执行位)。所以umask为022时,新建目录权限是755,新建文件是644。理解umask后就能解释为什么不同用户创建的文件权限不一样,也方便在需要时通过umask 027临时调整默认策略。
最后提一下特殊权限位。有时候会看到四位数字如4755,最前面那位就是特殊权限:4是SUID(执行时以文件所有者身份运行),2是SGID(目录内新文件继承目录的组),1是Sticky Bit(典型应用是/tmp目录,用户只能删除自己的文件)。这些内容超出了基础rwx的范畴,但了解它们有助于看懂/usr/bin/passwd这类权限显示为-rwsr-xr-x的文件。
总结一下,CentOS的权限体系核心就是三组身份乘以三种权限的九宫格,数字表示法只是把每组的rwx状态压缩成一个八进制数。掌握4、2、1的加法规则和三类身份的排列顺序,任何权限数字都能轻松读懂,配置服务器时也能做到心中有数。
CentOS文件权限rwx数字表示法Linux chmod命令修改时间:2026-09-07 00:10:42