linux之ACL授权
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