ACL是Access Control List 访问控制列表的缩写,在Linux中ACL可以对单一用户或组的设定访问文件的权限,其优势为让权限控制更加精细化,如:marking.txt文件为市场部文件,管理员拥有该文件的rwx权限,市场部组也拥有该文件的rwx权限,其他人无权限,新招的市场部新员工小王正处于试用期,管理员不想给小王对marking.txt文件的全部权限,只想给他查看该文件的权限,那么这种情况下,使用我们传统的属主属组other权限就无法做到这一点,这时我们可以考虑使用ACL访问控制的解决办法。
ACL策略的作用:在无法试用常规的权限设置时,我们可以使用ACL访问控制列表对某个用户或组进行设定访问文件的权限。
getfacl 命令用于查看文件的ACL策略及权限,其语法格式如下:
getfacl [选项] file
常用选项:
无,一般不接选项即可;
演示示例:
[root@nginx ~]# getfacl file1
# file: file1
# owner: root
# group: nginx
user::rwx
group::r--
other::r--
setfacl命令用于给文件针对某个用户或某个组设置ACL策略,其语法格式如下:
setfacl [选项] mode file
常用选项:
-m :修改acl策略
-x :删除某个用户或组的权限
-b :删除所有的acl策略
-R :递归,级联
mode表示权限设置:
u:用户名:权限 例如 u:oracle:rw
g:组名:权限 例如 u:macking:r
演示示例:
[root@nginx /]# ll file1 #先查看文件的权限
-rwxrwx--- 1 root root 7 Oct 5 22:32 file1
[root@nginx /]# su oracle #切换到Oracle用户,Oracle用户属于other类型
[oracle@nginx /]$ cat file1 #显示没有权限查看
cat: file1: Permission denied
[root@nginx /]# getfacl file1 #查看原来的权限位
# file: file1
# owner: root
# group: root
user::rwx
group::rwx
other::---
[root@nginx /]# setfacl -m u:oracle:wrx file1 #给Oracle用户设置acl策略,使之能读写执行file1文件
[root@nginx /]# getfacl file1
# file: file1
# owner: root
# group: root
user::rwx
user:oracle:rwx #这里就加多了一行,增加了Oracle的权限
group::rwx
mask::rwx
other::---
[root@nginx /]# su oracle
[oracle@nginx /]$ cat file1 #oracle用户能正常查看file1文件了
dsdsds
[oracle@nginx /]$ ll file1
-rwxrwx---+ 1 root root 7 Oct 5 22:32 file1 #发现权限为多了一个+号
[oracle@nginx /]$
[root@nginx /]# setfacl -b file1 #删除所有ACL策略
[root@nginx /]# getfacl file1 #查看删除acl策略后的文件发现没有了acl策略了
# file: file1
# owner: root
# group: root
user::rwx
group::rwx
other::---
[root@nginx /]# setfacl -m g:macking:r file1 #对macking组设置acl策略
[root@nginx /]# getfacl file1
# file: file1
# owner: root
# group: root
user::rwx
group::rwx #这个是原来的属组的权限的,不要看错哦
group:macking:r-- #这是我们刚才对macking组添加的acl策略
mask::rwx
other::---
[root@nginx /]# setfacl -R -m g:macking:r /usr/local/nginx/ #-R表示递归,级联
[root@nginx /]# setfacl -x u:oracle file1 #删除某个用户的acl策略
[root@nginx /]# setfacl -x g:dba file1 #删除某个组的acl策略
总结
当无法使用传统的文件权限控制时我们可以使用ACL访问控制策略实现权限的精细化控制,如,marking.txt文件为市场部文件,管理员拥有该文件的rwx权限,市场部组也拥有该文件的rwx权限,其他人无权限,新招的市场部新员工小王正处于试用期,管理员不想给小王对marking.txt文件的全部权限,只想给他查看该文件的权限。
1、getfacl [选项] file1 #查看文件的acl策略
2、setfacl -m u:oracle:rw file1 #给予Oracle用户对file1文件的rw权限
3、setfacl -m g:macking:r file1 #给予macking组对file1文件的r权限
4、setfacl -R -m g:macking:rwx /usr/local/nginx/ #递归级联给予macking组对nginx目录的rwx权限
5、setfacl -x u:oracle file1 #删除Oracle用户对file1文件的rw权限
6、setfacl -x g:macking file1 #删除macking组对file1文件的权限
7、setfacl -b file1 #全部删除file1文件的acl策略