本文档风哥主要介绍RHEL LINUX 10系统中基础文件权限问题排查与解决实战,包括文件权限的概念、权限类型与表示方法、特殊权限说明、权限规划要点、安全原则与最佳实践、权限问题排查方法论、权限查看命令、权限修改命令、所有者与所属组管理、权限拒绝问题排查、Web应用权限配置、共享目录权限配置等内容,参考Red Hat Enterprise Linux 10官方文档Permissions内容,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 文件权限的概念
文件权限是Linux系统中用于控制用户对文件和目录访问的机制。每个文件和目录都有三组权限:所有者权限、所属组权限和其他用户权限。权限分为读(Read)、写(Write)和执行(Execute)三种基本类型。
- 读权限(r):允许读取文件内容或列出目录内容
- 写权限(w):允许修改文件内容或在目录中创建/删除文件
- 执行权限(x):允许执行文件或进入目录
- 所有者权限:文件所有者的权限
- 所属组权限:文件所属组成员的权限
- 其他用户权限:其他所有用户的权限
1.2 权限类型与表示方法
权限类型与表示方法:
– 读权限(r):数字表示4
– 写权限(w):数字表示2
– 执行权限(x):数字表示1
– 无权限(-):数字表示0
# 权限组合
– rwx:读+写+执行 = 4+2+1 = 7
– rw-:读+写 = 4+2 = 6
– r-x:读+执行 = 4+1 = 5
– r–:只读 = 4
– –x:只执行 = 1
– —:无权限 = 0
# 权限表示方法
– 符号法:rwxr-xr-x
– 数字法:755
1.3 特殊权限说明
特殊权限说明:
– SUID(Set User ID):设置用户ID,执行时以文件所有者身份运行
– SGID(Set Group ID):设置组ID,执行时以文件所属组身份运行
– Sticky Bit:粘滞位,仅所有者可以删除目录中的文件
# 特殊权限表示
– SUID:s或S(在执行位上)
– SGID:s或S(在执行位上)
– Sticky Bit:t或T(在其他用户的执行位上)
# 特殊权限数字表示
– SUID:4
– SGID:2
– Sticky Bit:1
Part02-生产环境规划与建议
2.1 权限规划要点
权限规划要点:
– 最小权限原则:仅授予必要的最小权限
– 默认拒绝策略:默认拒绝所有未明确允许的访问
– 职责分离原则:不同角色具有不同的权限
– 定期审查权限:定期审查和更新文件权限
– 记录权限变更:记录文件权限变更历史
– 使用ACL进行精细控制:对于复杂权限需求使用ACL
– 避免使用777权限:避免使用过于宽松的权限
– 定期检查异常权限:定期检查异常权限配置
2.2 安全原则与最佳实践
安全原则与最佳实践:
- 最小权限原则:仅授予必要的最小权限
- 默认拒绝原则:默认拒绝所有未明确允许的访问
- 职责分离原则:不同角色具有不同的权限
- 定期审查原则:定期审查和更新文件权限
- 深度防御原则:多层防护,避免单点故障
2.3 权限问题排查方法论
权限问题排查方法论:
1. 确认问题现象:权限拒绝、无法访问等
2. 检查文件权限:使用ls -l查看文件权限
3. 检查所有者和所属组:确认文件所有者和所属组
4. 检查用户身份:确认当前用户身份和所属组
5. 检查父目录权限:确认父目录权限
6. 检查SELinux状态:确认SELinux是否影响访问
7. 检查文件系统挂载选项:确认挂载选项是否影响权限
8. 修改权限:根据需要修改文件权限
9. 验证修复:验证问题是否已解决
Part03-生产环境项目实施方案
3.1 权限查看命令
3.1.1 ls命令查看文件权限
# ls -l /etc/passwd
-rw-r–r–. 1 root root 2345 Apr 2 10:00 /etc/passwd
# 2. 查看目录详细信息
# ls -ld /etc
drwxr-xr-x. 134 root root 8192 Apr 2 10:00 /etc
# 3. 查看目录内容详细信息
# ls -l /etc
total 1234
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 abrt
-rw-r–r–. 1 root root 18 Apr 2 09:00 adjtime
-rw-r–r–. 1 root root 1529 Apr 2 09:00 aliases
-rw-r–r–. 1 root root 12288 Apr 2 10:00 aliases.db
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 alsa
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 alternatives
-rw-r–r–. 1 root root 61 Apr 2 09:00 anacrontab
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 audit
drwxr-xr-x. 3 root root 4096 Apr 2 09:00 authselect
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 avahi
-rw-r–r–. 1 root root 512 Apr 2 09:00 bashrc
-rw-r–r–. 1 root root 234 Apr 2 09:00 chrony.conf
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 cron.d
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 cron.daily
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 cron.hourly
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 cron.monthly
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 cron.weekly
-rw-r–r–. 1 root root 45 Apr 2 09:00 crontab
drwxr-xr-x. 2 root root 4096 Apr 2 09:00 crypto-policies
-rw-r–r–. 1 root root 2345 Apr 2 10:00 passwd
# 4. 查看文件权限数字表示
# stat /etc/passwd
File: /etc/passwd
Size: 2345 Blocks: 8 IO Block: 4096 regular file
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-04-02 10:00:00.000000000 +0800
Modify: 2026-04-02 10:00:00.000000000 +0800
Change: 2026-04-02 10:00:00.000000000 +0800
Birth: 2026-04-02 09:00:00.000000000 +0800
3.1.2 查看特殊权限
# find / -perm -4000 -type f 2>/dev/null | head -20
/usr/bin/passwd
/usr/bin/su
/usr/bin/sudo
/usr/bin/ping
/usr/bin/mount
/usr/bin/umount
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/pkexec
/usr/bin/chage
/usr/bin/crontab
# 2. 查看具有SGID权限的文件
# find / -perm -2000 -type f 2>/dev/null | head -20
/usr/bin/wall
/usr/bin/write
/usr/bin/ssh-agent
# 3. 查看具有Sticky Bit权限的目录
# find / -perm -1000 -type d 2>/dev/null | head -20
/tmp
/var/tmp
3.2 权限修改命令
3.2.1 chmod命令修改权限
# chmod u+x testfile
# ls -l testfile
-rwxr–r–. 1 root root 0 Apr 2 10:00 testfile
# 2. 使用数字法修改权限
# chmod 755 testfile
# ls -l testfile
-rwxr-xr-x. 1 root root 0 Apr 2 10:00 testfile
# 3. 递归修改目录权限
# chmod -R 755 /data
# ls -ld /data
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 /data
# 4. 批量修改文件权限
# chmod 644 *.txt
# ls -l *.txt
-rw-r–r–. 1 root root 0 Apr 2 10:00 file1.txt
-rw-r–r–. 1 root root 0 Apr 2 10:00 file2.txt
-rw-r–r–. 1 root root 0 Apr 2 10:00 file3.txt
# 5. 设置SUID权限
# chmod 4755 testfile
# ls -l testfile
-rwsr-xr-x. 1 root root 0 Apr 2 10:00 testfile
# 6. 设置SGID权限
# chmod 2755 testfile
# ls -l testfile
-rwxr-sr-x. 1 root root 0 Apr 2 10:00 testfile
# 7. 设置Sticky Bit权限
# chmod 1777 /data
# ls -ld /data
drwxrwxrwt. 2 root root 4096 Apr 2 10:00 /data
3.3 所有者与所属组管理
3.3.1 chown命令修改所有者
# chown user1 testfile
# ls -l testfile
-rwxr-xr-x. 1 user1 root 0 Apr 2 10:00 testfile
# 2. 修改文件所有者和所属组
# chown user1:group1 testfile
# ls -l testfile
-rwxr-xr-x. 1 user1 group1 0 Apr 2 10:00 testfile
# 3. 仅修改所属组
# chown :group1 testfile
# ls -l testfile
-rwxr-xr-x. 1 user1 group1 0 Apr 2 10:00 testfile
# 4. 递归修改目录所有者
# chown -R user1 /data
# ls -ld /data
drwxr-xr-x. 2 user1 root 4096 Apr 2 10:00 /data
# 5. 批量修改文件所有者
# chown user1 *.txt
# ls -l *.txt
-rw-r–r–. 1 user1 root 0 Apr 2 10:00 file1.txt
-rw-r–r–. 1 user1 root 0 Apr 2 10:00 file2.txt
-rw-r–r–. 1 user1 root 0 Apr 2 10:00 file3.txt
3.3.2 chgrp命令修改所属组
# chgrp group1 testfile
# ls -l testfile
-rwxr-xr-x. 1 user1 group1 0 Apr 2 10:00 testfile
# 2. 递归修改目录所属组
# chgrp -R group1 /data
# ls -ld /data
drwxr-xr-x. 2 user1 group1 4096 Apr 2 10:00 /data
# 3. 批量修改文件所属组
# chgrp group1 *.txt
# ls -l *.txt
-rw-r–r–. 1 user1 group1 0 Apr 2 10:00 file1.txt
-rw-r–r–. 1 user1 group1 0 Apr 2 10:00 file2.txt
-rw-r–r–. 1 user1 group1 0 Apr 2 10:00 file3.txt
Part04-生产案例与实战讲解
4.1 权限拒绝问题排查
4.1.1 文件访问权限拒绝
# 分析步骤:
# 1. 尝试访问文件
# cat /data/testfile
cat: /data/testfile: Permission denied
# 2. 检查文件权限
# ls -l /data/testfile
-rw——-. 1 root root 0 Apr 2 10:00 /data/testfile
# 3. 检查当前用户
# whoami
user1
# 4. 检查用户所属组
# groups
user1 group1
# 5. 检查父目录权限
# ls -ld /data
drwx——. 2 root root 4096 Apr 2 10:00 /data
# 6. 解决方案:修改文件权限
# chmod 644 /data/testfile
# ls -l /data/testfile
-rw-r–r–. 1 root root 0 Apr 2 10:00 /data/testfile
# 7. 解决方案:修改父目录权限
# chmod 755 /data
# ls -ld /data
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 /data
# 8. 验证文件访问
# cat /data/testfile
# 9. 解决方案:修改文件所有者
# chown user1 /data/testfile
# ls -l /data/testfile
-rw-r–r–. 1 user1 root 0 Apr 2 10:00 /data/testfile
# 10. 验证文件访问
# cat /data/testfile
4.2 Web应用权限配置
4.2.1 Nginx Web目录权限配置
# ls -ld /usr/share/nginx/html
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 /usr/share/nginx/html
# 2. 查看Nginx运行用户
# ps aux | grep nginx
root 1234 0.0 0.1 12345 2345 ? Ss 10:00 0:00 nginx: master process /usr/sbin/nginx
nginx 1235 0.0 0.1 12345 2345 ? S 10:00 0:00 nginx: worker process
# 3. 修改Web目录所有者为nginx
# chown -R nginx:nginx /usr/share/nginx/html
# ls -ld /usr/share/nginx/html
drwxr-xr-x. 2 nginx nginx 4096 Apr 2 10:00 /usr/share/nginx/html
# 4. 设置Web目录权限为755
# chmod -R 755 /usr/share/nginx/html
# ls -ld /usr/share/nginx/html
drwxr-xr-x. 2 nginx nginx 4096 Apr 2 10:00 /usr/share/nginx/html
# 5. 设置Web文件权限为644
# find /usr/share/nginx/html -type f -exec chmod 644 {} \;
# ls -l /usr/share/nginx/html/
total 4
-rw-r–r–. 1 nginx nginx 615 Apr 2 10:00 index.html
# 6. 设置Web目录权限为755
# find /usr/share/nginx/html -type d -exec chmod 755 {} \;
# ls -ld /usr/share/nginx/html
drwxr-xr-x. 2 nginx nginx 4096 Apr 2 10:00 /usr/share/nginx/html
# 7. 验证Web服务
# curl -I http://localhost
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Thu, 02 Apr 2026 02:00:00 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 02 Apr 2026 01:00:00 GMT
Connection: keep-alive
ETag: “624c3a1e-267”
Accept-Ranges: bytes
4.3 共享目录权限配置
4.3.1 团队共享目录权限配置
# mkdir -p /data/shared
# ls -ld /data/shared
drwxr-xr-x. 2 root root 4096 Apr 2 10:00 /data/shared
# 2. 创建共享组
# groupadd sharedgroup
# 3. 将用户添加到共享组
# usermod -aG sharedgroup user1
# usermod -aG sharedgroup user2
# 4. 修改共享目录所属组
# chown :sharedgroup /data/shared
# ls -ld /data/shared
drwxr-xr-x. 2 root sharedgroup 4096 Apr 2 10:00 /data/shared
# 5. 设置共享目录权限为2775(SGID)
# chmod 2775 /data/shared
# ls -ld /data/shared
drwxrwsr-x. 2 root sharedgroup 4096 Apr 2 10:00 /data/shared
# 6. 设置共享目录权限为2770(仅组成员可访问)
# chmod 2770 /data/shared
# ls -ld /data/shared
drwxrws—. 2 root sharedgroup 4096 Apr 2 10:00 /data/shared
# 7. 验证共享目录访问
# su – user1 -c “ls -l /data/shared”
total 0
# 8. 创建测试文件
# su – user1 -c “touch /data/shared/testfile1.txt”
# ls -l /data/shared/
total 0
-rw-r–r–. 1 user1 sharedgroup 0 Apr 2 10:00 testfile1.txt
# 9. 验证SGID生效
# su – user2 -c “touch /data/shared/testfile2.txt”
# ls -l /data/shared/
total 0
-rw-r–r–. 1 user1 sharedgroup 0 Apr 2 10:00 testfile1.txt
-rw-r–r–. 1 user2 sharedgroup 0 Apr 2 10:00 testfile2.txt
Part05-风哥经验总结与分享
5.1 权限管理最佳实践
权限管理最佳实践:
- 最小权限原则:仅授予必要的最小权限
- 默认拒绝策略:默认拒绝所有未明确允许的访问
- 定期审查权限:定期审查和更新文件权限
- 记录权限变更:记录文件权限变更历史
- 使用ACL进行精细控制:对于复杂权限需求使用ACL
- 避免使用777权限:避免使用过于宽松的权限
- 定期检查异常权限:定期检查异常权限配置
- 备份重要文件:修改权限前备份重要文件
- 测试环境验证:在测试环境中验证修改效果
- 监控权限变更:监控文件权限变更
5.2 权限配置检查清单
权限配置检查清单:
– [ ] 文件权限符合最小权限原则
– [ ] 目录权限符合最小权限原则
– [ ] 所有者和所属组配置正确
– [ ] 特殊权限配置合理
– [ ] 避免使用777权限
– [ ] 定期审查文件权限
– [ ] 记录权限变更历史
– [ ] 使用ACL进行精细控制
– [ ] 备份重要文件
– [ ] 测试环境验证
– [ ] 监控权限变更
5.3 权限管理工具推荐
权限管理工具推荐:
- chmod:修改文件权限
- chown:修改文件所有者
- chgrp:修改文件所属组
- setfacl:设置ACL权限
- getfacl:查看ACL权限
- find:查找特定权限的文件
- stat:查看文件详细信息
- ls:查看文件权限
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
