云计算百科
云计算领域专业知识百科平台

操作系统与虚拟化安全重点 3.1.自主访问控制机制

自主访问控制机制

    • 一、访问控制的主要任务
    • 二、自主访问控制(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
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 操作系统与虚拟化安全重点 3.1.自主访问控制机制
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!