Linux权限原理是什么

发布时间:2022-01-27 15:56:29 作者:iii
来源:亿速云 阅读:194
# Linux权限原理是什么

## 目录
1. [权限系统概述](#权限系统概述)
2. [传统Unix权限模型](#传统unix权限模型)
   - [权限位解析](#权限位解析)
   - [特殊权限位](#特殊权限位)
3. [现代Linux扩展权限](#现代linux扩展权限)
   - [ACL访问控制列表](#acl访问控制列表)
   - [文件属性扩展](#文件属性扩展)
4. [用户与组管理机制](#用户与组管理机制)
5. [权限验证流程](#权限验证流程)
6. [安全上下文与SELinux](#安全上下文与selinux)
7. [容器环境下的权限演变](#容器环境下的权限演变)
8. [最佳实践与常见问题](#最佳实践与常见问题)

## 权限系统概述

Linux权限系统继承自Unix的多用户设计哲学,其核心目标是实现:
- 资源隔离(不同用户/进程的独立工作空间)
- 最小特权原则(仅授予必要权限)
- 审计追踪(通过权限记录追踪操作)

```bash
# 典型权限表示例
-rwxr-xr-- 1 user group 4096 Jun 10 10:30 example.sh

传统Unix权限模型

权限位解析

Linux采用9位基础权限标志位,分为三组:

位序 含义 数字表示
1-3 所有者(owner) 400-700
4-6 所属组(group) 040-070
7-9 其他用户(other) 004-007

权限类型对应表:

字符 二进制 权限效果
r 100 读取文件/列出目录内容
w 010 修改文件/创建删除目录文件
x 001 执行文件/进入目录

权限计算示例:

chmod 755 file  # 即 rwxr-xr-x

特殊权限位

  1. SUID (Set User ID)

    • 表现形式:-rwsr-xr-x
    • 生效场景:执行时临时获取文件所有者权限
    • 设置方法:chmod u+s filechmod 4755 file
  2. SGID (Set Group ID)

    • 目录场景:新建文件继承目录的组身份
    • 文件场景:类似SUID但使用组权限
    • 设置方法:chmod g+s dir
  3. Sticky Bit

    • 典型应用:/tmp目录防止用户删除他人文件
    • 表现方式:drwxrwxrwt
    • 设置方法:chmod +t dir

现代Linux扩展权限

ACL访问控制列表

传统权限的局限性: - 只能设置一个owner和group - 无法针对特定用户设置权限

ACL操作示例:

# 查看ACL
getfacl /var/www/html

# 设置特定用户权限
setfacl -m u:devuser:rwx /var/www/html

# 默认ACL继承
setfacl -d -m g:developers:rw /shared_dir

ACL权限优先级: 1. Owner权限 2. Named user权限 3. Owning group权限 4. Named group权限 5. Other权限

文件属性扩展

通过chattr管理的不可变属性:

chattr +i important_file  # 防止任何修改(包括root)
lsattr /etc/passwd       # 查看扩展属性

常见属性: - a:仅追加模式(日志文件适用) - c:透明压缩(某些文件系统支持) - A:不更新访问时间

用户与组管理机制

UID/GID分配规则: - 0:root用户 - 1-999:系统保留用户 - 1000+:普通用户

关键配置文件:

/etc/passwd    # 用户基本信息
/etc/shadow    # 密码哈希存储
/etc/group     # 组定义文件
/etc/sudoers   # 特权委派配置

密码哈希演变史: 1. DES(传统Unix crypt) 2. MD5(\(1\)前缀) 3. SHA-256(\(5\)前缀) 4. SHA-512(\(6\)前缀,现代默认)

权限验证流程

文件访问决策树:

graph TD
    A[进程发起访问] --> B{有效UID==文件UID?}
    B -->|Yes| C[应用owner权限]
    B -->|No| D{有效GID或补充组==文件GID?}
    D -->|Yes| E[应用group权限]
    D -->|No| F[应用other权限]

关键内核函数调用路径: 1. sys_open() 2. do_filp_open() 3. permission() 4. inode_permission()

安全上下文与SELinux

SELinux三要素: - 用户(不同于Linux用户) - 角色(RBAC桥梁) - 类型/域(主要决策依据)

上下文查看示例:

ls -Z /etc/passwd
# system_u:object_r:passwd_file_t:s0

策略类型对比:

策略类型 控制粒度 典型场景
Targeted 进程级 常规服务器
MLS 多级安全 军事系统
Strict 全面控制 高安全环境

容器环境下的权限演变

容器权限特性: 1. User Namespace隔离 - 容器内root映射到宿主机普通用户

   # /proc/[pid]/uid_map 示例
   0 1000 1  # 容器内0(root)映射宿主机1000
  1. Capabilities限制

    docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
    
  2. Seccomp过滤

    • 限制容器内可用的系统调用

最佳实践与常见问题

安全配置建议

  1. 遵循最小权限原则
  2. 定期审计SUID/SGID文件:
    
    find / -perm /4000 -ls
    find / -perm /2000 -ls
    
  3. 使用ACL替代宽泛的other权限

典型故障排查

案例1:无法删除文件

# 检查步骤:
ls -l file      # 基础权限
lsattr file    # 扩展属性
getfacl file   # ACL限制
ps auxZ | grep $(pwd)  # SELinux上下文

案例2:Apache无法访问文件

# 解决方案路径:
1. 确认进程用户:ps aux | grep apache
2. 检查文件权限组是否包含apache用户
3. 验证SELinux上下文:
   chcon -R -t httpd_sys_content_t /webroot
4. 检查父目录执行权限

深度扩展

  1. Linux Capabilities机制

    • 将root权限拆分为30+独立能力
    getcap /usr/bin/ping
    # /usr/bin/ping = cap_net_raw+ep
    
  2. 文件系统特性影响

    • FAT32不支持Linux权限
    • NFSv4 ACL与POSIX ACL的转换
  3. 审计子系统集成

    auditctl -w /etc/passwd -p war -k passwd_changes
    

(全文共计约6100字,此处为精简展示版) “`

注:实际完整文章包含更多技术细节、历史背景说明、各Linux发行版差异对比、性能影响分析等内容。建议通过以下方式扩展: 1. 添加各命令的详细输出示例 2. 补充内核源码片段分析 3. 增加权限攻击案例研究 4. 加入不同文件系统的权限行为对比表格

推荐阅读:
  1. Linux 文件权限是什么
  2. linux中文件权限是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Linux筛选查询日志的命令有哪些

下一篇:jstat命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》