ACL(Access Control List),主要是提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设置。ACL 可以针对单一使用者、群组,单一文件、目录来进行 r,w,x 的权限规范。

主要可以针对几个项目控制权限:

  • 使用者 (user):针对使用者来设置权限;
  • 群组 (group):针对群组为对象来设置其权限;
  • 默认属性 (mask):针对在该目录下在创建新文件/目录时,规范新数据的默认权限;

setfacl 设置ACL

# setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
选项与参数:
-m :设置后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除“所有的” ACL 设置参数;
-k :移除“默认的” ACL 参数;
-R :递回设置 acl ,亦即包括次目录都会被设置起来;
-d :设置“默认 acl 参数”的意思!只对目录有效,在该目录新建的数据会引用此默认值

针对使用者设置权限

# touch acl_test1
# ll acl_test1
-rw-r--r--. 1 root root 0 Nov 11 19:00 acl_test1
# setfacl -m u:wakamizu:rx acl_test1
# ll acl_test1
-rw-r-xr--+ 1 root root 0 Nov 11 19:00 acl_test1
设置了acl参数后,权限部分就会多出一个+号

# setfacl -m u::rwx acl_test1
# ll acl_test1
-rwxr-xr--+ 1 root root 0 Nov 11 19:00 acl_test1
u后面没有跟使用者,默认为该文件拥有者

getfacl 获取ACL

# getfacl acl_test1 
# file: acl_test1   #文件名
# owner: root   #文件拥有者
# group: root   #文件所属组
user::rwx   #文件拥有者权限
user:wakamizu:r-x   #针对wakamizu的权限
group::r--   #针对文件群组的权限
mask::r-x   #文件默认的有效权限
other::r--   #其他用户的权限

针对群组设置权限

# setfacl -m g:wakamizu:rx acl_test1 
# getfacl acl_test1 
# file: acl_test1
# owner: root
# group: root
user::rwx
user:wakamizu:r-x
group::r--
group:wakamizu:r-x   #新增群组权限
mask::r-x
other::r--

设置有效权限

规范最大允许的权限 

# setfacl -m m:r acl_test1 
# getfacl  acl_test1 
# file: acl_test1
# owner: root
# group: root
user::rwx
user:wakamizu:r-x		#effective:r--
group::r--
group:wakamizu:r-x		#effective:r--
mask::r--
other::r--
wakamizu与mask的交集只有r,所以wakamizu仅有r的权限,x权限的配置不生效

设置默认权限

提供未来的子目录/文件继承acl权限

# mkdir /opt/test
# setfacl -m d:u:wakamizu:rx /opt/test/
# getfacl /opt/test
getfacl: Removing leading '/' from absolute path names
# file: opt/test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:wakamizu:r-x
default:group::r-x
default:mask::r-x
default:other::r-x
# mkdir /opt/test/test2
# getfacl /opt/test/test2
getfacl: Removing leading '/' from absolute path names
# file: opt/test/test2
# owner: root
# group: root
user::rwx
user:wakamizu:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:wakamizu:r-x
default:group::r-x
default:mask::r-x
default:other::r-x

移除ACL权限

移除单一设置值
setfacl -x filename
移除默认设置值
setfacl -k filename
移除全部设置值
setfacl -b filename