Linux 6 权限管理全解析

以下是关于 Linux 内核 6.x 版本(以 2026 年初主流 6.6 ~ 6.14+ 为基准)权限管理 的全解析。Linux 权限管理是系统安全的核心,涵盖用户态(如文件权限、用户组)和内核态(如系统调用检查、MAC 机制)。内容基于内核文档、学术论文和实践指南整理,力求全面、实用。重点包括基础模型、命令工具、高级扩展及内核实现演进。

1. 权限管理基础:DAC(Discretionary Access Control)模型

Linux 默认使用 DAC 模型,用户可自行决定文件/目录的访问权限。每个文件/目录有三个访问实体:Owner(所有者)Group(组)Others(其他人)。每个实体有三种权限:Read (r)Write (w)Execute (x)

  • 权限表示:通过 ls -l 查看,如 -rwxr-xr--,前10位是类型+权限(- 为文件,d 为目录;rwx 为 owner,r-x 为 group,r– 为 others)。
  • 数字表示:八进制模式,r=4, w=2, x=1(如 755 = rwxr-xr-x)。
权限类型文件含义目录含义
r (Read)查看文件内容列出目录内容 (ls)
w (Write)修改/删除文件内容创建/删除/重命名目录内文件
x (Execute)执行文件(如脚本/二进制)进入目录 (cd) 或遍历 (find 等)

内核 6.x 变化:权限检查更高效,集成 LSM(Linux Security Modules)框架,支持动态钩子(如 Landlock 在 5.13+ 引入,6.x 优化),允许细粒度沙箱。

2. 用户与组管理

权限基于用户(UID)和组(GID)。root (UID=0) 有最高权限,可绕过大部分检查。

核心命令

命令用途示例
useradd创建用户useradd -m -s /bin/bash newuser
usermod修改用户(组、shell 等)usermod -aG sudo newuser (加 sudo 组)
userdel删除用户userdel -r newuser (删除家目录)
groupadd创建组groupadd devgroup
groupmod修改组groupmod -n newname oldname
groupdel删除组groupdel devgroup
passwd设置/修改密码passwd newuser
chage密码策略(过期、锁定)chage -M 90 newuser (密码90天过期)
id查看用户/组 IDid newuser
  • 组类型:Primary Group(主组,用户创建文件时默认组)和 Supplementary Groups(附加组,支持多组)。
  • 最佳实践:使用最小权限原则(Least Privilege),避免 root 日常操作。

3. 文件/目录权限操作

核心命令

命令用途示例
chmod修改权限(符号/数字模式)chmod u+rw file (用户加读写) 或 chmod 644 file
chown修改所有者chown newuser:newgroup file
chgrp修改组chgrp devgroup file
umask设置默认权限掩码(新建文件权限=777-umask)umask 022 (默认文件 644, 目录 755)
setfacl设置 ACL(Access Control Lists)setfacl -m u:newuser:rwx dir (额外权限)
  • 符号模式:u (user), g (group), o (others), a (all);+ (加), – (减), = (设置)。
  • 递归:加 -Rchmod -R 755 /dir
  • 特殊位
  • SUID (4xxx):执行时以 owner 权限运行(如 /usr/bin/passwd)。
  • SGID (2xxx):文件继承组权限;目录内新文件继承组。
  • Sticky Bit (1xxx):目录内文件仅 owner 可删除(如 /tmp)。
  • ACL 扩展:标准权限不足时用,支持细粒度(如多个用户特定权限)。启用需文件系统支持(如 ext4 的 acl 选项)。

4. 高级权限管理:MAC 与 Capabilities

DAC 易被绕过(如用户误设权限),故引入 MAC(Mandatory Access Control)。

SELinux(Security-Enhanced Linux)

  • 内核集成:自 2.6 起,6.x 优化性能(如更快的上下文切换)。默认在 RHEL/Fedora 等启用。
  • 原理:每个进程/文件有 SELinux 上下文(user:role:type:level),策略(如 targeted)定义允许操作。
  • 命令
  • sestatus:查看状态。
  • setenforce 0/1:临时禁用/启用。
  • chcon:修改上下文,如 chcon -t httpd_sys_content_t file
  • restorecon:恢复默认上下文。
  • 模式:Enforcing (强制)、Permissive (记录但不阻挡)、Disabled。
  • 优势:防零日漏洞;缺点:配置复杂。

AppArmor

  • 内核模块:自 2.6.36 起,6.x 支持路径-based 策略。
  • 命令aa-statusaa-enforce /etc/apparmor.d/profile
  • 优势:比 SELinux 简单,聚焦应用配置文件。

Capabilities

  • 分解 root 权限(如 CAP_SYS_ADMIN),非 root 进程可获特定能力。
  • 命令setcap cap_net_bind_service+eip binary (允许绑定 <1024 端口)。
  • 内核 6.x:更多细粒度 caps,如 CAP_BPF (eBPF 相关)。

其他扩展

  • Landlock(5.13+,6.x 成熟):用户态沙箱,限制文件访问。
  • seccomp:过滤 syscall,容器常用。
  • Namespaces/Cgroups:隔离权限空间。

5. 内核级权限实现

  • 权限检查:在 VFS(Virtual File System)层,通过 inode_permission() 等函数。内核使用 cred 结构存储进程权限(UID/GID/caps)。
  • 钩子:LSM 框架允许模块(如 SELinux)插入检查点。
  • 分析工具:PeX 框架用于静态分析内核权限检查,识别漏洞。
  • 6.x 优化:减少权限相关 syscall 开销,支持 eBPF 动态监控。

6. 性能与安全优化

  • 监控:用 getfacl 查看 ACL;auditd 记录权限事件。
  • 常见问题:权限过松导致泄露;SUID 滥用成提权漏洞。
  • 最佳实践
  • 定期审计:find / -perm -4000 查 SUID 文件。
  • 容器化:Docker/Podman 用非 root 运行。
  • 最小化:用 sudoers 配置精确 sudo 权限(如 /etc/sudoers)。
  • 性能影响:MAC 如 SELinux 增加 ~5-10% 开销,但 6.x 通过缓存优化降低。

如果需要具体示例代码、内核源码剖析(如 inode_permission.c)或针对特定发行版(如 Ubuntu 26.04)的调整,继续问!

文章已创建 4206

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部