开发者学堂课程【Linux用户和组管理:ACL(访问控制列表)权限管理】学习笔记,与课程紧密联系,让用户快速学习知识.
课程地址:https://developer.aliyun.com/learning/course/580/detail/7997
ACL(访问控制列表)权限管理
内容介绍
一.ACL权限
二.rwx权限
三.mask权限
四.ACL备份和恢复
三.mask权限
1.概念
ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
getfacl 可看到特殊权限:flags
通过ACL赋予目录默认x权限,目录内文件也不会继承x权限base ACL不能删除
setfacl -k dir 删除默认ACL权限
setfacl -b file1清除所有ACL权限
getfacl file1 | setfacl --set-file=- file2复制file1的acl权限给file2
2.Mask
[root@centos7 dir]#setfacl -m u:wang : rw f1
[root@centos7 dir]#getfacl f1
#file:f1
#owner: root
#group: root
user : : rw-
user:wang : rw-
group : :r—
[root@centos7 dir]#11f1
-rw-rwr--+ 1 root root 595 sep 28 11:02 f1
[root@centos7 dir]#chomd o= f1
[root@centos7 dir]#11f1
-rw-rw--—-+ 1 root root 595 sep 28 11:02 f1
[root@centos7 dir]#getfaclf1
#file:f1
#owner: root#
group: root
user: : rw-
user:wang : rw-
group : :r—
mask : : rw-
other : :---
「
root@centos7 dir]#id mage
uid=1001(maae)qid=1001(mage)groups=1001(mage),1002(webs)
[root@centos7 dir]#usermod -G "" mage
[root@centos7 dir]#id mage
uid=1001(mage) gid=1001(mage) groups=1001(mage)
[root@centos7 dir]#11f1
rw-rw----+1 root root_595 sep 28 11:02 f1
[root@centos7 dir]#getfal f1
#file:f1
#owner: root#
group: root
user: : rw-
user:wang : rw-
group : :r—
mask : : rw-
other : :---
mask权限
[root@centos7 dir]#setfacl -m u : mage : rwx f1
[root@centos7 dir]#11f1
-rw- rwx-—-+ 1 root root 595 sep 28 11:02 f1
[root@centos7 dir]#getfacl f1
# file:f1
#owner:root#
group: root
user: : rw-
user: wang : rw-
user:mage : rwx
group: :r--
other::-
--
[ root@centos7 dir]#id mage
id-1001(maae) aid=1001(mage) groups=1001(mage) ,0(root)
[ root@centos7 dir]#
此时到底是root组权限生效,还是mage权限生效,此时能看到也能写进东西,说明此时是mage权限生效了。相当于所属者权限不起作用。
3.Mask的用法
由于wang用户,mage用户以及添加的新组权限都比较大,所以可以通过mask命令将其变小。
[root@centos7 dir]#setfacl -m g: webs : rwx f1
[root@centos7 dir]#getfacl f1
#file: f1
#owner: root
#group: root
user : : rw-
user:wang : rw-
user:mage : rwx
group: :r—
group : webs : rwx
mask : : rwx
other : :---
[root@centos7 dir]#setfacl -m mask : : r f1[root@centos7 dir]#getfacl f1
#file: f1
#owner: root
#group: root
user: : rw-
user:wang : rw- #effective: r—
user:mage : rwx #effective: r—
group: :r—
group : webs : rwx入
#effective:r—
mask: : r—
other : : ---
#effective: r—
为限高线,调高限高线
[root@centos7 dir]#chmod g=rw f1
[root@centos7 dir]#getfac1f1
#file: f1
#owner: root
# group: roo
tuser: : rw-
user:wang : rw-
user:mage : rwx #effective : rw-
group : :r—
group : webs : rwx #effective : rw-
mask: :rw-
other : :---
4.getfacl file1 | setfacl --set-file=- file2复制file1的acl权限给file2
[root@centos7 dir]#11f2
-rw-r--r-- 1 root_root 595 sep 28 11:02f2
[root@centos7 dir]#getfaclf1
[root@centos7 dir]#getfacl f1 >f1.acl
[root@centos7 dirj#cat f1.acl
[root@centos7 dir]#setfacl --set-file=f1.acl
f
2
[root@centos7 dirj#cat f1.acl
5.应用
mask只影响除所有者和other的之外的人和组的最大权限
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(EffectivePermission)
用户或组的设置必须存在于mask权限设定范围内才会生效 setfacl -m mask:rx file
--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
示例:setfacl --set u::rw,u:wang:rw,gr,o:-file1
6.--set选项
[root@centos7 dir]#setfacl --set u::r,g::0,0::-,u:zhang:rwf1
[root@centos7 dir]#getfacl f1
四.ACL备份和恢复
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -Rrb /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1
1.ACL操作中遇到的问题
ACL权限丢失
[root@centos7 dir]#cp f1 f11
[root@centos7 dir]#getfaclf11
#fi1e: f11
#owner: root
#group: root
user: : r—
group: : r—
other: :---
2.解决
采用备份和还原ACL
[root@centos7 data]#getfacl -R dir > /root/dir.ac1
[root@centos7 dataj#setfacl-Rb dir
[root@centos7 dataj#getfacl -R
还原
[root@centos7 data]#getfac
l
--restore/root/dir.ac1
[root@centos7 dataj#getfacl dir
命令
Getfal
Setfacl
Mask
Chatter
Lsatter