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



