访问控制ACL

出自Linux Wiki

在2013年5月9日 (四) 12:25由Spunkzwy (讨论 | 贡献)所做的修订版本

介绍

 传统上,系统支持POSIX(可移植操作系统接口)系列标准,一个简单但功能强大的文件系统权限模型:每个文件系统对象关联三套定义为所有者的权限,所属组和其他人的权限。每一组可能包含读(r),写(w)和执行(x)的权限。此方案是通过使用为每个对象只有9位。除了这9位,SUID,SGID,SBIT位用于一些特殊情况下。
 虽然传统的模型是非常简单的,足以满足大多数的管理方面的需求。虽然这种系统有明显的局限性,但是它很好的保存了unix简洁和可预测的传统,但是事实上所有的非unix操作系统上都采用了一种实质上更为复杂的方式来管理对于文件的访问:访问控制列表(access control list)简称ACL。每个文件或者目录都有一个与之相关的ACL,这个ACL规定来用在文件或者目录身上的权限规则。ACL内每一个规则叫做一个访问控制项,或者简称ACE。
 一般来说一个ACE规定了它的应用对象,以及应用到那些用户的一组权限。ACL不限制长度,可以包含用于多个用户或者用户组的权限规定


ACL类型

ACL 是由一系列的Access Entry所组成的. 每一条Access Entry定义了特定的类别可以对 文件拥有的操作权限. Access Entry有三个组成部分: Entry tag type, qualifier (optional)

Entry tag type, 它有以下几个类型 ACL_USER_OBJ: 相当于Linux里file_owner的权限 ACL_USER: 定义了额外的用户可以对此文件拥有的权限 ACL_GROUP_OBJ: 相当于Linux里group的权限 ACL_GROUP: 定义了额外的组可以对此文件拥有的权限 ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限 ACL_OTHER: 相当于Linux里other的权限

 来看一个详细的例子

[spunk@wapbaidu ~]$ getfacl test

  1. file: test <==说明文件名
  2. owner: spunk <==说明此文件的所有者
  3. group: spunk <==说明此文件的所属组

user::rwx <==文件所有者的权限 user:xue:r-x <==用户xue具有的权限 group::--- <==文件所属组的权限 group:spunk:r-x <==spunk组对该文件的权限 mask::r-x <==该文件的默认最大权限 other::--- <==其他人拥有的权限 [spunk@wapbaidu ~]$ ll -rwxr-x---+ 2 spunk spunk 4096 5月 9 19:42 test 在文件权限的最后多了一个+号. 当任何一个文件拥有了ACL_USER或者ACL_GROUP的值以后我 们就可以称它为ACL文件.这个+号就是用来提示我们的。

常用命令

getfacl

setfacl

个人工具
简体繁体转换