在Linux文件系统里,每一个文件或目录都关联着一套权限模型,最核心的便是r、w、x这三个基础标记。它们不仅代表读、写、执行三种操作许可,还各自对应固定的八进制数值,组合之后形成我们常见的如755、644这类权限数字。搞清这些数值的由来,是掌握Linux权限管理的前提。

r w x的基础数值与含义拆解
字母r来自英文read,表示读权限,在八进制中固定对应数字4。拥有r权限的用户能够查看文件内容,或者使用ls命令列出目录中的条目。如果缺少r权限,即便文件存在,普通用户也会在访问时收到权限拒绝的提示。对于目录而言,r权限决定了能否浏览其下的文件列表,但不代表能进入该目录。
字母w来自write,对应数值2,代表写权限。对文件来说,w允许修改、覆盖或追加内容;对目录来说,w意味着可以在其中创建、删除或重命名文件。需要注意的是,删除文件的能力取决于所在目录的w权限,而非文件自身的w权限,这一点常被初学者误解。字母x来自execute,对应数值1,表示执行权限。对脚本或二进制程序,x是运行的必要条件;对目录,x代表能否使用cd进入或通过路径访问其子项。
当r、w、x组合时,直接将对应数值相加即可得到该范围的权限数。比如rwx就是4+2+1=7,r-x是4+0+1=5,rw-是4+2+0=6。Linux权限分为属主、属组、其他人三段,每段都是0到7的数字,合起来便构成类似754这样的九位权限表达。用数字方式设置权限,比逐个写字母更紧凑,也更不易出错。
用chmod数字模式设置rwx权限的实践
使用chmod命令时,最方便的做法便是采用数字模式。例如要把一个脚本设为属主可读写执行、组和其他仅可读执行,就执行chmod 755 script.sh。这里的7由rwx相加得出,两个5分别是r-x。这种写法在批量部署时尤其高效,因为只需记住目标角色应有的数值总和。
如果只想给属主写权限而去掉组的写权限,可以用chmod 644 file.txt,即rw-r--r--。很多Web服务器要求缓存目录可被Web进程写入,但又不能让所有人写,这时常设成755或775,具体取决于属组是否包含运行用户。下面是一段在Shell中批量修正权限的示例,把当前目录下所有.sh文件设为755:
#!/bin/bash # 遍历当前目录的脚本文件 for f in *.sh; do # 将权限设为 rwxr-xr-x 对应数字 755 chmod 755 "$f" echo "已设置 $f 权限为 755" done
数字模式不仅能用于文件,也能用于目录。但递归改目录时要小心,若执行chmod -R 777 .会把所有内容开放给任何人,带来严重安全隐患。推荐的做法是区分文件和目录:文件一般644,目录一般755,可用find配合不同参数分别处理。理解rwx数值,才能写出安全的递归脚本。
从stat与ls输出核对rwx对应数值
除了用chmod设置,我们还可以通过stat命令直接查看文件权限的八进制表达。执行stat -c '%a %n' file.txt会输出类似644 file.txt的结果,其中644就是rwx数值的直观呈现。对比ls -l输出的rw-r--r--,你能确认每一段字母都正确映射到了对应数字。
在排查权限故障时,这种核对非常重要。例如某程序报无法写入日志,用stat看到日志文件是644,说明组和其他人没有w(数值2),而运行进程恰好不属于属主,自然写不进。此时应改为664或6755(带setuid特殊情况),而不是直接给777。下面示例展示如何用stat获取详细模式:
# 查看文件权限的数字与名称 stat -c '权限数字:%a 权限串:%A 文件:%n' /var/log/app.log # 输出示例: 权限数字:644 权限串:-rw-r--r-- 文件:/var/log/app.log
另外,特殊权限如setuid、setgid和sticky bit,是在基础rwx数值之上再加高位数字,比如2755中的2代表setgid。它们不影响rwx本身对应的4、2、1,但会让总权限超出三位数。掌握基础rwx数值后,再理解这些扩展位就轻松许多,也不会在误设时破坏系统安全模型。
Linuxrwx_permissionfile_mode修改时间:2026-08-16 18:32:13