ACL授权比chmod更加灵活,也更加精细化,在进行授权操作时,推荐使用ACL方式。
?
一.添加权限
setfacl -m u:username:rwx dir/file ?#此时会看的dir的权限多了一个加号
-m:添加或者修改
u[设置用户]:username[用户名]:rwx[设置权限]
g[设置组]:groupname[组名]:rwx[设置权限]
?
setfacl -m u:username:r -R dir #同时设置子目录下的权限
-R : 递归设置子目录下的权限
?
setfacl -m mask::r-- dir/file #设置mask的值,mask用于限制ACL_USER, ACL_GROUP和ACL_GROUP_OBJ的最大值
ACL_USER_OBJ : user::rwx ?#文件所有者
ACL_USER:user : user:username:rwx
ACL_GROUP_OBJ : group::r-x #文件所属组
ACL_GROUP : group:groupname:r-x
?
?
二.查看权限
getfacl dir/file ?#查看该目录被设置的所有acl权限
--omit-header :去掉头信息
?
三.删除权限
setfacl -x u:username dir/file #删除用户的权限
setfacl -x g:groupname dir/file #删除组的权限
setfacl -b dir/file ?#删除该目录的全部acl权限
?
?
四.缺省的ACL设置
说明:如果希望在dir下建立的所有文件都可以被某一用户访问. 那么我们就应该对dir目录设置Default ACL。
setfacl -d -m user:username:rw dir
-d : 设置default acl
这样,任何人在该目录下创建的文件,都可以被username读写。
?
setfacl -k dir # 删除缺省acl设置
?
?
五.示例:
1.文件
1)ll -d testfile
drwxr-xr-x 2 root root 4096 1月 ?20 18:59 testfile
?
2)setfacl -m u:hanqunfeng:rwx testfile
?
3)ll -d testfile
drwxrwxr-x+ 2 root root 4096 1月 ?20 18:59 testfile
?
4)getfacl testfile
# file: test
# owner: root
# group: root
user::rwx
user:hanqunfeng:rwx
group::r-x
mask::rwx
other::r-x
?
说明:缺省的mask值也被设定为rwx.那是因为它规定了ACL_USER[user:hanqunfeng:rwx], ACL_GROUP和ACL_GROUP_OBJ[group::r-x]的最大值。
?
5)setfacl -m mask::r-- testfile
6)getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:hanqunfeng:rwx ? ? ? ? ? ? #effective:r--
group::r-x ? ? ? ? ? ? ? ? ? ? ?#effective:r--
mask::r--
other::r-x
?
说明:此时会看到相应的权限后面多出了#effective:r--,因为mask规定了ACL_USER, ACL_GROUP和ACL_GROUP_OBJ的最大值,所以实际的权限也是r--。
?
7)getfacl --omit-header testfile #去掉头信息
user::rwx
user:hanqunfeng:rwx ? ? ? ? ? ? #effective:r--
group::r-x ? ? ? ? ? ? ? ? ? ? ?#effective:r--
mask::r--
other::r-x
?
8)setfacl -x u:hanqunfeng testfile
?
9)ll -d testfile
drwxr-xr-x+ 2 root root 4096 1月 ?20 18:59 testfile
?
10)setfacl -b testfile
?
11)ll -d testfile
drwxr-xr-x 2 root root 4096 1月 ?20 18:59 testfile
?
2.目录
1)setfacl -m u:hanqunfeng:rwx -R testdir
?
2)ll -d testdir
drwxrwxr-x+ 2 root root 4096 1月 ?20 18:59 testdir
?
3)getfacl --omit-header testdir
user::rwx
user:hanqunfeng:rwx
group::r-x
mask::rwx
other::r-x
?
4)setfacl -d -m u:hanqunfeng:rwx -R testdir
?
5)getfacl --omit-header testdir
user::rwx
user:hanqunfeng:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:hanqunfeng:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
?
6)setfacl -b testdir
?
7)ll -d testfile
drwxr-xr-x 2 root root 4096 1月 ?20 18:59 testdir
?
?