按对象记录谁可以做什么
ACL常随对象组织访问权限,例如给某用户读取文件、给某组读写文件。它把权限落实到主体与操作的关系,不能只看一个人出现在列表里就认定读、写、执行都获准。
不同资源分别维护名单,便于描述局部授权,也带来更新工作。NIST指出,主体或情境变化后若不重新评估既有名单,用户可能持续累积已不必要的权限;ACL是一种表示与执行手段,不自动替管理员完成生命周期管理。
参考:[1]
Linux的有效权限还受到掩码限制
Linux文件ACL区分所有者、具名用户、所属组、具名组及其他主体。其mask条目约束具名用户和相关组条目可获得的最大权限;因此,一个具名用户条目写有rw,掩码只有r时,不能据该条目声称写权限已经有效。
这种掩码不限制所有者条目与other条目。扩展ACL存在时,传统文件模式中的组权限位还与掩码对应,而不总等于所属组条目;理解chmod等修改的效果,需要同时看模式位与ACL的对应规则。
参考:[2]
默认ACL用于新建对象的初始规则
Linux目录的access ACL约束目录本身,default ACL则参与新建对象的初始访问ACL。创建时还结合所请求的mode限制相应权限,所以继承不是无条件复制出比创建模式更多的访问能力。
权限检查按手册规定的主体匹配路径进行,不是把所有条目权限相加;例如已匹配具名用户却未获准,不能再靠other条目补足。这里描述的是Linux这一套文件ACL,不能直接当作所有网络或操作系统ACL的统一算法。
参考:[2]