当前位置:首页>Linux>【技术推荐】Linux文件权限(一):基础权限与 chmod

【技术推荐】Linux文件权限(一):基础权限与 chmod

  • 2026-09-05 00:13:22
【技术推荐】Linux文件权限(一):基础权限与 chmod

Linux 文件权限问题之所以高频出现,常见原因并不只是命令使用不熟练,而是对访问主体、权限对象和系统判定顺序缺少完整认识。本文从权限对象、rwx 含义、目录与文件的权限差异切入,并结合 `chmod` 的数字模式与符号模式,建立 Linux 文件权限的基础判断框架。

权限基础:rwx到底代表什么
1

本节概述权限对象、rwx 含义和检查顺序,并说明目录权限的差异。

1.1  三类权限与三类用户

Linux权限体系将权限分为三类,每类对应不同的用户:

•所有者(Owner/u):文件创建者或指定的所有者

•所属组(Group/g):文件关联的组

•其他用户(Others/o):既不是所有者也不属于所属组的用户

•所有人(All/a):上述三类用户的并集

每类用户拥有三种权限:

•读(Read/r):查看文件内容或列出目录内容

•写(Write/w):修改文件内容或在目录中创建/删除文件

•执行(Execute/x):运行程序或进入目录

1.2 权限的数值表示
●●●Terminal
# 查看文件权限的符号表示ls -la /etc/passwd# -rw-r--r-- 1 root root 3805 Apr  7 10:00 /etc/passwd

•解读:

•- : 文件类型(- 普通文件,d 目录,l 符号链接,c 字符设备,b 块设备)

•rw- : 所有者权限(rw- = r=4 + w=2 + x=1 = 6)

•r-- : 所属组权限(r-- = r=4 + -=0 + -=0 = 4)

•r-- : 其他用户权限(r-- = 4)

•1 : 硬链接数

•root : 所有者

•root : 所属组

•3805 : 文件大小(字节)

•Apr 7 10:00 : 修改时间

•/etc/passwd : 文件名

权限数值对照表

符号数值二进制含义
r--4100只读
-w-2010只写
--x1001只执行
rw-6110读写
-wx3011写执行
r-x5101读执行
rwx7111读写执行
---0000无权限
1.3 权限验证机制

Linux权限检查的顺序是:所有者 -> 所属组 -> 其他用户。一旦匹配即应用对应权限,不再继续检查后续类别。

●●●Terminal
# 创建测试环境mkdir -p /tmp/test_permstouch /tmp/test_perms/file.txtchmod 640 /tmp/test_perms/file.txtls -la /tmp/test_perms/file.txt# -rw-r----- 1 root root 0 Apr  7 10:00 /tmp/test_perms/file.txt

•当前用户如果是所有者,应用所有者权限(rw-)

•当前用户如果在所属组中,应用所属组权限(r--)

•都不满足则应用其他用户权限(---)

1.4  目录权限的特殊性

目录权限与文件权限含义不同:

●●●Terminal
# 目录权限详解# r (读):可以列出目录内容(ls)ls /tmp/test_perms# 需要x配合才能使用ls -l的详细格式# w (写):可以在目录中创建、删除、重命名文件touch /tmp/test_perms/newfile.txtrm /tmp/test_perms/file.txt# 需要x配合才能真正执行# x (执行):可以进入目录(cd),访问目录下的文件属性cd /tmp/test_perms# x是目录的基本权限,没有x则无法访问目录内容# 示例:只有r没有xchmod 644 /tmp/test_permsls /tmp/test_perms# 可以看到文件名列表ls -l /tmp/test_perms# ls: cannot access '/tmp/test_perms/file.txt': Permission denied# 只有xchmod 111 /tmp/test_permsls /tmp/test_perms# ls: cannot open directory /tmp/test_perms: Permission deniedcd /tmp/test_permspwd# 可以进入目录ls /tmp/test_perms/file.txt# 可以访问文件属性(如果知道文件名)
chmod:数字模式和符号模式详解
2

本节整理 chmod 的数字模式、符号模式和递归设置。

2.1  数字模式(Octal Notation)

数字模式是权限设置最直接的方式,每个权限位用0-7的八进制数表示。

●●●Terminal
# 基本用法chmod 755 /path/to/file    # 所有者rwx(7),组rx(5),其他rx(5)chmod 644 /path/to/file    # 所有者rw(6),组r(4),其他r(4)chmod 600 /path/to/file    # 所有者rw(6),组无,其他无chmod 700 /path/to/file    # 所有者rwx(7),组无,其他无# 特殊权限也可以用数字表示chmod 4755 /path/to/file   # SUID(4) + rwx(7) + rx(5) + rx(5)chmod 2755 /path/to/file   # SGID(2) + rwx(7) + rx(5) + rx(5)chmod 1755 /path/to/file   # SBIT(1) + rwx(7) + rx(5) + rx(5)chmod 6755 /path/to/file   # SUID(4) + SGID(2) + rwx(7) + rx(5) + rx(5)
2.2  符号模式(Symbolic Notation)

符号模式更加灵活,支持精细的权限调整。

●●●Terminal
# 基本语法:chmod [who] [+|-|=] [permissions] file# who 选项:# u  - 所有者 (user/owner)# g  - 所属组 (group)# o  - 其他用户 (others)# a  - 所有人 (all),默认# 操作符:# +  - 添加权限# -  - 移除权限# =  - 设置权限(覆盖原有权限)# permissions 选项:# r  - 读# w  - 写# x  - 执行# s  - SUID/SGID# t  - SBIT# X  - 条件执行(仅对目录或已有执行权限的文件设置执行)# 示例chmod u+x script.sh        # 给所有者添加执行权限chmod g-w file.txt        # 从组移除写权限chmod o=r file.txt       # 设置其他用户只有读权限chmod a+rw file.txt       # 给所有人添加读写权限chmod u=rw,go=r file.txt  # 设置所有者rw,组和其他r# X 权限的特殊用法chmod -R 755 directory/          # 所有文件都设置执行权限(包括普通文件)chmod -R u+X,go+X directory/     # 只对目录和已有执行权限的文件设置执行
2.3  递归与选择性设置
●●●Terminal
# 递归设置目录权限chmod -R 755 /var/www/html# 风险:会修改所有文件的权限,包括普通文件# 更好的方式:目录和文件分开处理find /var/www/html -type d -exec chmod 755 {} \;   # 目录find /var/www/html -type f -exec chmod 644 {} \;   # 文件# 或者使用find + xargsfind /var/www/html -type d -print0 | xargs -0 chmod 755find /var/www/html -type f -print0 | xargs -0 chmod 644# 只设置特定条件的文件find /var/www/html -name "*.sh" -exec chmod 755 {} \;   # 所有shell脚本find /var/www/html -user www-data -exec chmod 640 {} \;  # 属于www-data的文件
2.4 参考权限表
●●●Terminal
# 常用权限配置参考# 600 - 私有文件(只有所有者可读写)# 644 - 普通文件(所有者读写,其他人读)# 700 - 私有目录(只有所有者可访问)# 755 - 公共目录(所有者全部权限,其他人读和执行)# 775 - 共享目录(组内协作)# 664 - 共享文件(组内可写)# 666 - 不推荐(有安全风险)# Web服务常见配置chmod -R 755 /var/www/html            # 网站文件chmod -R 644 /var/www/html/*.html     # HTML文件chmod -R 644 /var/www/html/*.css      # CSS文件chmod -R 644 /var/www/html/*.js       # JS文件chmod 600 /var/www/html/wp-config.php # WordPress配置(包含数据库密码)# 数据库文件(MySQL)chown -R mysql:mysql /var/lib/mysqlchmod -R 700 /var/lib/mysql          # 仅MySQL用户可访问
本篇小结

至此,rwx、所有者/所属组/其他用户、目录权限差异,以及 `chmod` 的两种修改方式已经形成清晰对应。后续面对 `644`、`755`、`u+x` 等具体设置时,重点不再只是调整数值或符号,而是判断修改对象、作用层级及其控制目的。

欢迎「长按」下方图片👇,关注我们在公众号上的专业知识分享。

最新文章

随机文章