目录1.简介
在Linux系统中,文件权限是保障系统安全与多用户协作的核心机制。它决定了谁能对文件/目录执行读、写、执行等操作,有效避免未授权访问和数据篡改。无论是个人用户管理自己的文件,还是系统管理员维护服务器,理解并正确配置文件权限都是必备技能。本文将从基础到中级,全面解析Linux文件权限的原理、操作与最佳实践。
2.Linux文件权限基础2.1用户类别:Owner,Group,Others
Linux将文件的访问者分为三类,权限设置针对这三类用户分别生效:
2.2权限类型:读(r)、写(w)、执行(x)
针对上述三类用户,Linux定义了三种基本权限,分别用字母r(读)、w(写)、x(执行)表示,对应八补码数字4、2、1(用于数字模式权限设置):
2.3文件与目录权限的区别
权限对文件和目录的作用存在差别,需非常注意:
权限文件(File)目录(Directory)
可读取文件内容
可列举目录内文件/子目录(ls)
可更改文件内容
可创建、删除、重命名目录内文件
可执行文件(如脚本、二补码程序)
可步入目录(cd)或访问子目录内容
关键区别:目录的w权限依赖x权限(无x则难以操作目录内文件);文件的x权限仅对可执行文件有意义(如.sh、.py脚本)。
3.查看文件权限:ls-l命令解析3.1ls-l输出格式解读
使用ls-l命令可查看文件/目录的权限信息,输出格式如下:
-rw-r--r-- 1 alice dev 1024 Jun 1 10:00 demo.txt
各数组涵义(从左到右):

权限字符串(10个字符):第1位为文件类型,后9位分3组(所有者、组、其他用户),每组3位对应rwx。硬链接数:一般为1(文件)或目录中子目录数(+1)。所有者:alice(文件归属用户)。所属组:dev(文件归属组)。文件大小:1024字节(目录显示块大小linux文件 权限,需加-h人性化显示)。更改时间:Jun110:00。文件名:demo.txt。3.2示例:评析文件权限
# 目录,所有者 rwx,组 r-x,其他 r-x
drwxr-xr-x 2 bob staff 4096 Jun 1 11:00 docs/
# 普通文件,所有者 rw-,组 r--,其他 ---
-rw-r----- 1 alice dev 2048 Jun 1 12:00 secret.log
# 可执行脚本,所有者 rwx,组 r-x,其他 ---
-rwxr-x--- 1 root sys 512 Jun 1 13:00 backup.sh
4.更改文件权限:chmod命令
chmod(changemode)用于更改文件/目录的权限,支持符号模式(直观)和数字模式(高效)两种形式。
4.1符号模式(SymbolicMode)
句型:chmod
用户类别
操作符
文件
示例:
# 给所有者添加执行权限
chmod u+x script.sh
# 移除组的写权限
chmod g-w data.txt
# 给所有用户设置读权限(覆盖原有)
chmod a=r public.html
# 给组添加读写,其他添加读权限
chmod g+rw,o+r docs/
4.2数字模式(NumericMode)
将权限转换为八补码数字(每组rwx对应3位二补码,求和得0-7),格式为chmod
三位数字
文件,三位数字分别对应所有者、组、其他。
权限数字对应表:
示例:
# 所有者 rw- (6),组 r-- (4),其他 r-- (4) → 644
chmod 644 index.html
# 所有者 rwx (7),组 r-x (5),其他 --- (0) → 750
chmod 750 app/
# 所有用户 rwx (777) → 危险!谨慎使用
chmod 777 temp/
4.3常见chmod操作示例
场景符号模式数字模式说明
普通文件(默认)

chmodu=rw,go=r
644
所有者读写,其他只读
可执行脚本
chmodu+x
755
所有者可执行,其他读+执行
敏感文件(仅自己访问)
chmodgo-rwx
600
仅所有者读写
共享目录(组可写)
chmodg+w
775
所有者/组读写执行,其他读执行
5.更改所有者与所属组:chown与chgrp
文件的所有者和所属组决定了权限的作用对象,通过chown和chgrp命令更改。
5.1chown:更改文件所有者
句型:chown所有者
:所属组
文件

(:分隔所有者和所属组,可同时更改三者)
注意:
示例:
# 将 file.txt 所有者改为 alice
sudo chown alice file.txt
# 将 dir/ 所有者改为 bob,所属组改为 dev(递归)
sudo chown -R bob:dev dir/
5.2chgrp:更改文件所属组
句型:chgrp组名文件
(功能与chown:组名相同,更直观)
示例:
# 将 data.log 所属组改为 staff
chgrp staff data.log
# 递归修改 docs/ 所属组为 design
chgrp -R design docs/
5.3注意事项与示例
# 团队共享目录配置示例:所有者 root,组 dev,组可写
sudo chown root:dev /opt/project
sudo chmod 775 /opt/project # 所有者/组 rwx,其他 r-x
6.特殊权限:SUID,SGID与StickyBit
除基础权限外,Linux还支持特殊权限,用于实现中级功能(如临时挂马、目录承继等)。它们通过在权限字符串前添加额外位表示,对应八补码数字4(SUID)、2(SGID)、1(StickyBit)。
6.1SetUID(SUID)6.2SetGID(SGID)显示:组权限位的x变为s(无x则显示S)。6.3StickyBit6.4特殊权限的设置与查看
设置句型:在数字模式前添加特殊权限位(4=SUID,2=SGID,1=Sticky),格式chmod
三位基础权限
文件。
示例:
# 设置 SUID(4)+ 基础权限 755 → 4755
sudo chmod 4755 /usr/bin/passwd # 普通用户执行时获得 root 权限
# 设置 SGID(2)+ 基础权限 775 → 2775(目录新文件继承组)
chmod 2775 /opt/share # 新文件所属组为 /opt/share 的组
# 设置 Sticky Bit(1)+ 基础权限 777 → 1777(仅所有者可删自己文件)
sudo chmod 1777 /tmp # 系统默认配置
查看示例:
-rwsr-xr-x 1 root root 63K May 1 2023 /usr/bin/passwd # SUID(s 代替 x)
drwxrwsr-x 2 root dev 4096 Jun 1 10:00 /opt/share/ # SGID(s 代替 x)
drwxrwxrwt 7 root root 4096 Jun 1 08:00 /tmp/ # Sticky Bit(t 代替 x)
7.中级权限管理:ACL(访问控制列表)
基础权限(UGO)仅支持三类用户,难以满足复杂场景(如给特定用户/组单独授权)。ACL(AccessControlLists)扩充了权限管理linux文件 权限,准许为任意用户/组设置权限。
7.1ACL的作用与优势7.2查看ACL:getfacl
句型:getfacl文件/目录
示例:
getfacl demo.txt
# 输出:
# # file: demo.txt
# # owner: alice
# # group: dev
# user::rw- # 基础所有者权限
# user:charlie:r-- # 额外用户 charlie 只读
# group::r-- # 基础组权限
# group:design:rw- # 额外组 design 读写
# mask::rw- # 权限掩码(限制最大权限)
# other::--- # 其他用户权限
7.3设置ACL:setfacl
句型:setfacl规则文件
核心规则:-mu:用户:权限(用户)、-mg:组:权限(组)。
常用选项:
示例:
# 给用户 charlie 授予 demo.txt 只读权限
setfacl -m u:charlie:r-- demo.txt
# 给组 design 授予 docs/ 读写执行权限(递归)
setfacl -R -m g:design:rwx docs/
# 删除用户 bob 的 ACL 规则
setfacl -x u:bob demo.txt
# 清除所有 ACL 规则
setfacl -b data/
7.4默认ACL与承继
对目录设置默认ACL(d:前缀),新创建的文件/子目录会手动承继ACL规则。
示例:
# 为 /opt/project 设置默认 ACL:组 dev 读写执行,用户 charlie 只读
setfacl -d -m g:dev:rwx /opt/project
setfacl -d -m u:charlie:r-- /opt/project
# 新创建的文件会继承默认 ACL
touch /opt/project/newfile.txt
getfacl /opt/project/newfile.txt # 可看到继承的 dev 和 charlie 权限
8.常见实践:默认权限与umask
新创建文件/目录的默认权限由umask(权限网段)决定,它从系统默认权限中“减去”对应位。
8.1umask是哪些?8.2估算默认权限
默认权限=系统默认权限-umask(按位除法,非数值除法)。
示例:

umask0002→文件664(rw-rw-r--),目录775(rwxrwxr-x)。8.3临时与永久更改umask
# 在 ~/.bashrc 中添加
umask 0027 # 文件 640,目录 750
9.最佳实践与安全建议9.1遵守最小权限原则
仅授予用户/进程完成任务所需的最小权限,比如:
9.2敏感文件的权限设置9.3共享目录的权限策略9.4防止使用危险权限(如777)
chmod777授予所有用户读写执行权限red hat linux 下载,可能造成:
9.5定期审计与权限检测
使用以下命令排查异常权限:
# 查找全局可写文件
find / -perm -0002 -type f 2>/dev/null
# 查找设置了 SUID 的文件(潜在提权风险)
find / -perm -4000 -type f 2>/dev/null
# 检查敏感目录权限(如 /tmp)
ls -ld /tmp # 应设置 Sticky Bit(1777)
10.故障排除:常见权限问题解决10.1″Permissiondenied”错误
可能缘由:
排查步骤:
用ls-l文件确认权限是否正确。用id确认当前用户所属组是否匹配文件的组权限。若权限正确,检测父目录是否有x权限(如访问/a/b/c.txt,需/a、/a/b均有x)。10.2目录访问权限问题
示例:用户bob对/data/docs有rwx权限,但未能ls目录内容。
缘由:父目录/data无x权限→chmodo+x/data即可。
10.3排查步骤与工具检测基础权限:ls-l、ls-ld目录。检测ACL:getfacl文件(可能存在隐藏的ACL限制)。检测特殊权限:ls-l查看是否有s/t位异常。模拟用户测试:su-用户-c”命令”(如su-bob-c”catfile.txt”)。11.总结
Linux文件权限是系统安全的基石,从基础的UGO权限到中级的ACL和特殊权限,灵活的配置既能保障数据安全,也能支持多用户协作。核心原则是“最小权限”,即仅授予完成任务所需的最低权限。通过本文的学习linux环境变量,你应能:
合理配置文件权限,是每位Linux用户和管理员的必备技能。
12.参考资料
