Linux中的对象权限是指对文件、目录等系统资源访问控制的核心机制,主要用于限定用户和进程对资源的操作范围。其权限体系基于用户身份(User)、所属组(Group)和其他用户(Others)三个层级,并通过读(r)、写(w)、执行(x)三种基础权限组合实现精细化控制。以下是详细解析:
1. 基础权限类型
- 读(r):对文件可查看内容,对目录可列出子项(如`ls`命令)。
- 写(w):对文件可修改内容,对目录可创建/删除子项(需同时具备执行权限)。
- 执行(x):对文件可运行(如脚本或二进制程序),对目录可进入(`cd`命令)。
2. 特殊权限标志
- SUID(Set User ID):文件运行时以属主身份执行(如`/usr/bin/passwd`)。
- SGID(Set Group ID):文件运行时以属组身份执行;目录中新文件继承父目录属组。
- Sticky Bit(粘滞位):目录下仅文件所有者或root可删除/重命名文件(如`/tmp`目录)。
3. 权限表示方式
- 符号模式:使用`chmod u=rwx,g=rx,o=r file`形式修改权限。
- 数字模式:三位或四位八进制数(如`755`表示`rwxr-xr-x`,`4755`表示带SUID的相同权限)。
4. 扩展控制机制
- ACL(访问控制列表):突破基础三组限制,为特定用户/组单独配置权限(命令`setfacl`/`getfacl`)。
- SELinux/AppArmor:提供基于安全策略的强制访问控制(MAC),细化到进程级权限管理。
5. 权限继承与掩码
- 新文件权限受umask值影响(如`umask 022`会屏蔽组和其他用户的写权限)。
- 目录的SGID权限可使子文件自动继承属组,便于协作开发场景。
6. 权限验证流程
系统按用户身份匹配顺序检查权限:先验证属主权限,再检查属组,最后匹配其他用户。若用户同时属于多个组,任一属组权限匹配即生效。
7. 安全实践建议
- 遵循最小权限原则,禁止随意设置`777`或SUID/SGID。
- 敏感文件应配置ACL或移至保护目录,并通过`chattr +i`设置为不可修改。
Linux权限设计体现了多层次的安全哲学,结合传统DAC(自主访问控制)与现代MAC机制,确保系统资源在灵活共享的同时避免越权访问。