Linux 系统访问控制列表ACL

常见的文件系统的一般权限(rwx)、特殊权限(SUID,SGID,STICK)、隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的。而如果希望对某个指定的用户进行单独的权限控制,那么就需要用文件的访问控制列表来实现啦。基于普通文件或目录设置文件访问控制列表(Access Control Lists,ACL)访问控制策略,通俗来说就是设置指定的特定用户或用户组对某个文件的操作权限。另外如果对某个目录设置了访问控制策略,那么子文件则继承其访问策略,而若对文件设置了访问控制策略则不再继承上级目录的控制策略。

如何设置ACL(文件控制访问列表)

获取文件控制访问列表的方式为:
getfacl FileName
设定文件控制访问列表的命令为setfacl,如果加上-m,就表示设定访问权限,-x表示取消访问权限:
setfacl -m u:USERNAME:MODE FileName
setfacl -m g:GROUPNAME:MODE FileName
如果是取消权限,则无需指定具体的权限,只指定用户名或组名即可:
setfacl -x u:USERNAME:MODE FileName
setfacl -x g:GROUPNAME:MODE FileName
setfacl -b FileName 取消对该文件上的所有ACL权限。

其它:

对用户设置权限实例
#setfacl -m u:username:rw- /test.txt       //普通的文件
#setfacl -Rm d:u:username:rw- /test/       //对目录设置

对组设置权限
#setfacl -m g:group:r-- /test.txt
#setfacl -m d:g:group:r-- /test/

查看权限
#getfacl filename/directory  //文件或目录名

常用的ls命令是看不到访问控制列表信息的,但是却可以看到文件的权限最后一个点(.)变成了加号(+),而这就意味着这个文件已经被设置有了ACL访问策略。

[root@rhel7 rusky]# ll
total 8
drwxrwxr-x+ 2 lxjtest users 6 Jul 21 02:33 lxjtest_mkdirtest
drwxrwxrwt+ 2 rusky   rusky 6 Jul 20 21:58 testSticky
[rusky@localhost ~]$ cd /root/
-bash: cd: /root/: Permission denied
[rusky@localhost ~]$ su -
Password: 
Last login: Mon Nov 27 15:44:08 CST 2017 on pts/1
[root@localhost ~]# setfacl -Rm u:rusky:rwx /root/
[root@localhost ~]# su - rusky
Last login: Mon Nov 27 15:44:28 CST 2017 on pts/1
[rusky@localhost ~]$ cd /root/
[rusky@localhost root]$ cat anaconda-ks.cfg 

[rusky@localhost root]$ ls -ld /root/
dr-xrwx---+ 15 root root 4096 Nov 27 11:21 /root/
getfacl命令用于显示文件的ACL规则,格式为:"getfacl 文件名称"。
[root@localhost ~]# getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::r-x
user:rusky:rwx
group::r-x
mask::rwx
other::---
原文地址:https://www.cnblogs.com/rusking/p/7217840.html