目录
一、ACL是什么
ACL是AccessControlList,访问控制列表
主要的目的是在提供传统的owner,group,others的read,write,execute(读,写,执行)权限之外的细部权限设置。ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范,对于需要特殊权限的使用状况非常有帮助。
使用者(user):可以针对使用者来设置权限;
群组(group):针对群组为对象来设置其权限;
默认属性( mask ):还可以针对在该目录下在创建新文件 / 目录时,规范新数据的默认权限;
ACL几乎已经默认加入在所有常见的Linux文件系统的挂载参数中(ext2/ext3/ext4/xfs等等)
二、ACL的使用:setacl与getacl
getfacl
:取得某个文件
/
目录的
ACL
设置项目;
setfacl
:设置某个目录
/
文件的
ACL
规范。
setfacl 指令用法介绍及 “ u: 帐号 : 权限 ” 设置setfacl [-bkRd] [{-m|-x} acl 参数 ] 目标文件名选项与参数:-m :设置后续的 acl 参数给文件使用,不可与 -x 合用;-x :删除后续的 acl 参数,不可与 -m 合用;-b :移除 “ 所有的 ” ACL 设置参数;-k :移除 “ 默认的 ” ACL 参数,关于所谓的 “ 默认 ” 参数于后续范例中介绍;-R :递回设置 acl ,亦即包括次目录都会被设置起来;-d :设置 “ 默认 acl 参数 ” 的意思!只对目录有效,在该目录新建的数据会引用此默认值
1)针对特定使用者的方式:
设置规范:
“ u:[
使用者帐号列表
]:[rwx] ”
,例如针对
vbird1
的权限规范
rx
:
1. 创建acl_test1后设置其权限
touch acl_test1
ll acl_test1
setfacl -m u:vbird1:rx acl_test1
ll acl_test1
-rw-r-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
2. 读取acl_test1的权限
setacl filename
getfacl 的选项几乎与 setfacl 相同
2)针对特定群组的方式:
设置规范:
“ g:[
群组列表
]:[rwx] ”
,例如针对
mygroup1
的权限规范
rx
:
setfacl -m g:mygroup1:rx acl_test1
getfacl acl_test1
3)针对有效权限 mask 的设置方式:
设置规范:
“ m:[rwx] ”
,例如针对刚刚的文件规范为仅有
r
:
setfacl -m m:r acl_test1
getfacl acl_test1
使用者或群组所设置的权限必须要存在于
mask
的权限设置范围内才会生 效,此即“
有效权限 (effective permission)
”
4) 针对默认权限的设置方式:
设置规范:
“ d:[ug]:
使用者列表
:[rwx] ”
让
myuser1
在
/srv/projecta
下面一直具有
rx
的默认权限!
setfacl -m d:u:myuser1:rx /srv/projecta
getfacl /srv/projecta
-rw-rw----+ 1 root projecta 0 Jul 21 17:50 zzz1drwxrws---+ 2 root projecta 6 Jul 21 17:51 zzz2# "+"代表acl 在目录下面的数据有继承的功能