访问控制列表ACL
Posted coolcoc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问控制列表ACL相关的知识,希望对你有一定的参考价值。
访问控制列表ACL
1.ACL介绍
- ACL:Access Control List,实现灵活的权限管理
- 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
- CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
- CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
- ACL生效顺序:所有者,自定义用户,自定义组,其他人
- ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
2.ACL的使用
ACL:设置
-
setfacl 可以设置ACL权限
setfacl -m u:用户名:rwx -R file|directory
setfacl -m d:u:用户名:rwx -R file|directory
-
范例:
[root@centos8 data]#ll f1.txt -rw-r--r-- 1 root root 709 Dec 18 14:37 f1.txt [root@centos8 data]#setfacl -m u:wang:- f1.txt [root@centos8 data]#ll total 4 -rw-r--r--+ 1 root root 709 Dec 18 14:37 f1.txt
ACL:查看
-
getfacl file |directory
-
范例:
[root@centos8 data]#getfacl f1.txt # file: f1.txt # owner: root # group: root user::rw- user:wang:--- group::r-- mask::r-- other::r--
ACL:删除
-
setfacl -k dir 删除默认ACL权限
-
setfacl –b file1清除所有ACL权限
-
范例:
mount -o acl /directory getfacl file |directory setfacl -m u:wang:rwx file|directory setfacl -m g:admins:rw file| directory setfacl -x u:wang file |directory #清除所有ACL权限 setfacl -b file1 #复制file1的acl权限给file2 getfacl file1 | setfacl --set-file=- file2
-
ACL:备份与恢复
-
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
#备份ACL getfacl -R /tmp/dir > acl.txt #消除ACL权限 setfacl -R -b /tmp/dir #还原ACL权限 setfacl -R --set-file=acl.txt /tmp/dir #还原ACL权限 setfacl --restore acl.txt #查看ACL权限 getfacl -R /tmp/dir
-
-
mask 权限
-
mask只影响除所有者和other的之外的人和组的最大权限
-
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
-
用户或组的设置必须存在于mask权限设定范围内才会生效
-
范例:
setfacl -m mask::rx file
-
范例:
[root@centos8 data]#ll f1.txt -rw-rw-r--+ 1 root root 728 Dec 18 14:51 f1.txt [root@centos8 data]#chmod g=r f1.txt [root@centos8 data]#ll f1.txt -rw-r--r--+ 1 root root 728 Dec 18 14:51 f1.txt [root@centos8 data]#getfacl f1.txt “” # file: f1.txt # owner: root # group: root user::rwuser: wang:--- group::r-- group:admins:-w- #effective:--- mask::r-- other::r-- [root@centos8 data]#setfacl -m mask::rw f1.txt [root@centos8 data]#getfacl f1.txt # file: f1.txt # owner: root # group: root user::rwuser: wang:--- group::r-- group:admins:-wmask:: rwother:: r-- [root@centos8 data]#setfacl -m u:wang:rwx f1.txt [root@centos8 data]#getfacl f1.txt # file: f1.txt # owner: root # group: root user::rwuser: wang:rwx group::r-- group:admins:-wmask:: rwx other::r-- [root@centos8 data]#setfacl -m mask::rw f1.txt [root@centos8 data]#getfacl f1.txt # file: f1.txt # owner: root # group: root user::rwuser: wang:rwx #effective:rwgroup:: r-- group:admins:-wmask:: rwother:: r--
-
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样
只是添加ACL就可以 -
范例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
-
练习
-
在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:
tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文
件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹mkdir /testdir/dir -pv ; chown -R root:webs /testdir/dir; chmod 2750 -R /testdir/dir setfacl -m g:apps:rwx -R /testdir/dir setfacl -m g:dbs:rx -R /testdir/dir
-
备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除
/testdir/dir中所有ACL权限,最后还原ACL权限#备份 cd /testdir/ ; getfacl -R dir/ > /root/acl.txt #清除 setfacl -b dir/ #恢复 setfacl -R --set-file=/opt/acl.txt dir/
以上是关于访问控制列表ACL的主要内容,如果未能解决你的问题,请参考以下文章