4.3.2 基于能力表的自主访问控制

4.3.2 基于能力表的自主访问控制

用二元组(x,y)表示对一个客体的访问能力,其中,x是该客体的唯一的名字,y是对x的一组访问权限的集合,并称(x,y)为能力。能力(x,y)是一个许可证,持有者可对客体x进行y中所允许的访问。在系统中,为每一个主体分配一个能力表,主体s的能力表由访问控制矩阵中s所对应的行中所有非空项组成,其形式如表4-1所示,表长n≥0,其中,xi表示客体,yi是访问矩阵A中A[s,xi]项所给出的权限。

表4-1 能力表

例4-7 图4-4所示的能力表提供了对代码A的读权限和执行权限,对数据对象B、C的读权限和对数据对象D的读权限和写权限。

图4-4 能力表的例子

根据每个主体s的能力表,可以决定s是否可以对给定的客体进行访问以及进行哪些访问。能力表在时间效率和空间效率上都优于访问矩阵,但是能力表也有自身的缺点。对于一个给定的客体,要确定所有有权访问它的主体,用户生成一个新的客体并对其授权或删除一个客体时都比较复杂。