什么是ACL
Acess Control List,访问权限列表,主要目的是在传统的owner,group,other的read,write,execute权限之外,进行更加细化的权限设定,ACL可以对用户,组,甚至是文件和目录进行r,w,x的权限设置,对于需要特殊权限的情况非常有帮助。
主要针对下面几个部分内容进行设置
·用户(user):可以针对使用者来进行权限设定
·群组(group):可以针对群组来进行权限设定
·默认属性(mask):与umask功能类似,注意这里没有u哦,如此值被设置为055,那么在该目录下新建文件或目录时,都回继承上面mask的权限限制,最后得到的权限为700
ACL的设定
setfacl与getfacl
修改某个文件/目录的ACL规范
setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
选项 | 意义 |
---|---|
-m | 后接acl参数,表示将xxx的acl权限设置为actl参数的样子,不可与-x同时使用 |
-x | 后街acl参数,表示将xxx的acl权限设置删除 |
-b | 移除所有的acl设定 |
-k | 移除预设的acl参数(比如mask值为077) |
-R | 递归设置acl,即目录及子目录都被包含在内 |
-d | 设定预设acl参数,值对目录有效 |
针对用户设定
当被设置完acl权限之后,文件的属性上多了一个加号+,这时虽然显示对于other用户来讲,时只读的权限但是实际上的结果可能会有所不同。
那么上面所说的不同的权限具体是什么呢,如何来查看呢?可以使用getfacl命令
getfacl acl_test1
看到了吗,虽然文件对于other用户来说是只读的,但是对于user1来说,是rx的,这就是acl的强大之处
针对群组设置
# 针对群组的设置
setfacl -m g:user3:rwx acl_test1
针对有效权限设置
上面所提到过的mask,代表的是effective permission,有效权限,意义为,限制权限的范围,不会超过有效权限
setfacl -m m:r acl_test1
getfacl acl_test1
注意上边红色框区域,它所代表的含义是,虽然左边的user,group等对此文件有读以上的权限,即>4,但是这里因为设置了acl的权限限定,所以此时有效的权限只有r,即只读。
这样做的好处是,我们可以为文件设置一个最大的权限限定,所以即便由于操作疏忽,导致即便赋予777权限,但是实际上有效权限只有400
ACL目录属性默认权限
setfacl -m d:[ug]:用户/组:[rwx] 目录
这个命令仅能作用在目录上,意义为,当用户在该目录(A)下新建文件或路径时,都会继承上面设置的权限,但是仅对该目录下的子目录或文件有效,对该目录(A)无效。
下面我们在/tmp目录下创建一个test_acl_extends目录,然后设置acl目录的默认权限,(此目录下的新建文件或路径都遵循设定的acl)
接下来创建一个名为a.txt的文件,发现此文件的属性里也多了一个加号+
接下来我们来验证一下,看看是否能修改a.txt文件