自主访问控制机制
-
- 一、访问控制的主要任务
- 二、自主访问控制(DAC)的概念与分类
-
- (一)DAC 概念
- (二)DAC 分类
-
- 1. 基于行的DAC(按主体管理)
- 2. 基于列的DAC(按客体管理)
- 三、Linux中的DAC实现机制
-
- (一)9位权限机制(传统模式)
- (二)ACL机制(扩展模式)
- 四、Linux中与DAC相关的重要概念
-
- (一)用户身份标识
- (二)特殊权限位
- (三)DAC相关数据结构(Linux内核)
- 五、总结要点
一、访问控制的主要任务
访问控制是计算机系统安全机制的核心,其任务主要包括以下三个方面:
授权
- 定义:确定系统中哪些主体(用户、进程等)有权访问哪些客体(文件、目录、设备等)。
- 例如:决定“张三可以读取文件A,但不能修改”。
确定访问权限
- 定义:为主体分配具体的访问模式,如读、写、执行、删除、追加等。
- 例如:用户李四对文件B拥有“读写”权限,但没有“执行”权限。
实施访问权限
- 定义:在系统运行时,实际执行访问控制策略,防止未授权访问。
- 例如:当王五试图删除他没有权限的文件时,系统会拒绝该操作。
二、自主访问控制(DAC)的概念与分类
(一)DAC 概念
自主访问控制是一种基于客体所有者意愿的访问控制机制。在DAC中:
- 文件所有者可以自主决定系统中哪些用户能够访问其文件,以及以何种方式访问。
- “自主”体现在:
- 所有者可以自主授予权限;
- 获得权限的用户也可将权限(直接或间接)转移给其他用户。
(二)DAC 分类
DAC可分为两类,分别对应访问控制矩阵的行和列:
1. 基于行的DAC(按主体管理)
在每个主体上附加一个可访问客体的列表。
常见实现方式:
| 能力表 | 每个用户有一张“能力列表”,标明能访问哪些客体 | 权限传递方便 | 难以查询“谁能访问某文件” |
| 前缀表 | 用户有一个前缀表,列明可访问的客体和权限 | 易于检查用户权限 | 权限撤销困难,管理复杂 |
| 口令 | 每个客体对应一个口令,知道口令即可访问 | 简单易用 | 难以控制具体用户,口令易泄露 |
2. 基于列的DAC(按客体管理)
在每个客体上附加一个可访问主体的列表。
常见实现方式:
- 访问控制列表(ACL):为每个客体维护一个列表,记录每个主体对该客体的访问权限。
- 例如:文件A的ACL为:张三:rwx, 李四:r_x, *:r__
- 支持细粒度控制,可针对特定用户或组设置权限。
三、Linux中的DAC实现机制
(一)9位权限机制(传统模式)
在UNIX/Linux系统中,每个文件附有一段9位的二进制权限信息,分为三组:
rwx rwx rwx
↑ ↑ ↑
主人 同组 其他人
- 主人:文件所有者
- 同组:与所有者同组的用户
- 其他人:除上述两者外的用户
示例: rwxr-xr– 表示:
- 主人可读、写、执行
- 同组可读、执行
- 其他人仅可读
缺点:无法精确控制同一组内的不同用户。
(二)ACL机制(扩展模式)
为弥补9位权限的不足,Linux支持ACL,允许为单个用户或组设置权限。
ACL结构示例(三元组):
<type, id, perm>
- type:用户(user)或组(group)
- id:用户或组ID
- perm:权限,如rwx
常用命令:
- setfacl -m user:张三:rwx file1 → 给张三添加读写执行权限
- getfacl file1 → 查看文件的ACL
- chacl → 修改ACL
四、Linux中与DAC相关的重要概念
(一)用户身份标识
- UID:用户真实ID
- EUID:有效用户ID,用于权限检查
- SUID:设置用户ID,用于程序执行时临时切换身份
- FSUID:文件系统用户ID,用于文件访问控制
(二)特殊权限位
- S_ISUID:设置用户ID位,程序运行时以文件所有者身份执行
- S_ISGID:设置组ID位,程序运行时以文件所属组身份执行
- S_ISVTX(粘滞位):常用于目录,仅文件所有者可删除自己的文件
(三)DAC相关数据结构(Linux内核)
- task_struct:进程(主体)
- inode:文件、管道、套接字等客体
- file:打开的文件
- kern_ipc_perm:IPC对象(信号量、共享内存、消息队列)
五、总结要点
| 访问控制三任务 | 授权、确定权限、实施权限 |
| DAC核心思想 | 所有者自主控制权限,权限可传递 |
| DAC分类 | 基于行(能力表、前缀表、口令)、基于列(ACL) |
| Linux 9位权限 | 分主人、同组、其他人,用chmod设置 |
| Linux ACL | 细粒度权限控制,用setfacl设置 |
| 相关命令 | chmod、chown、setfacl、getfacl、chacl |
| 特殊权限位 | SUID、SGID、Sticky位 |
| 身份标识 | UID、EUID、SUID、FSUID |
网硕互联帮助中心







评论前必须登录!
注册