一、ACL权限简介与开启
1、ACL权限简介
我们都知道一个文件默认只有 所有者,所属组,其他人三个对象,现在我有一个av文件,我可以对这个文件执行 rwx 操作,我想让我舍友可以对他有 rwx 权限,我就可以把他们放到文件所属组,除了我和我的舍友,其他人对这个文件都没有任何权限。现在隔壁老王想看,我想给他一个 r-x 权限,但是原有的三个对象都明显不可能让他加入,这时候就需要引入ACL权限。
Linux 下用户对文件的操作权限有 r-读, w-写, x-可执行三种,而对linux 下的文件而言,用户身份分为:所有者, 所属组, 其它人, 且文件的所有者,所属组都只能是一个,所以在对文件分配用户的使用权限时,只能对这三种身份进行分配rwx 权限.Linux 主要作为服务器系统使用,用户众多.所以在实际使用场景中,这三种身份并不能很好地实现资源权限分配问题,所以就有了ACL权限. ACL 权限就是为了解决linux 下三种身份不能满足资源权限分配需求的问题的.
setfacl [选项] 文件目录名
选项:
-m 设定ACL权限
-x 删除指定用户,用户组的ACL权限,针对用户,用户组
-b 删除文件所有的ACL权限,针对文件
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设置ACL权限
2、查看分区ACL权限是否开启
[root@localhost ~]# dumpe2fs -h /dev/sda5
>>> # dumpe2fs命令是查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级块中信息,而不是显示磁盘块组的详细信息
3、临时开启分区ACL权限
[root@localhost ~]# mount -o remount,acl /
# 重新挂载根分区,并挂载加入acl权限
4、永久开启分区ACL权限
[root@bogon ~]# vi /etc/fstab
# 这个配置文件不能乱改,改错一个地方系统可能就会崩溃
[root@bogon ~]# mount -o remount /
# 重新挂载文件系统或重启系统,使修改生效
二、查看与设定ACL权限
1、查看ACL权限
[root@bogon ~]# getfacl 文件名
# 查看 acl 权限
2、设定ACL权限的命令
[root@bogon ~]# setfacl 选项 文件名
选项:
-m 设定ACL权限
-x 删除指定用户,用户组的ACL权限,针对用户,用户组
-b 删除文件所有的ACL权限,针对文件
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
(1)给用户设定ACL权限
操作命令:
[root@bogon ~]# useradd cjj
[root@bogon ~]# groupadd stu
[root@bogon ~]# mkdir av
[root@bogon ~]# chown cjj:stu av
[root@bogon ~]# chmod 770 av
[root@bogon ~]# usersdd lw
[root@bogon ~]# setfacl -m u:lw:rx av (u:给用户设定)
# 给用户lw赋予r-x权限,使用 “u:用户名:权限” 格式
看看acl的作用:
(2)给用户组设定ACL权限
[root@bogon ~]# groupadd tgoup2
[root@bogon ~]# setfacl -m g:tgoup2:rx av (u:给用户设定)
# 为组tgoup2分配ACL权限。使用“g:组名:权限” 格式
三、最大有效权限与删除ACL权限
1、最大有效权限
mask 是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“相与”擦能才能得到用户的真正权限。
什么是相与呢?
A | B | and |
r | r | r |
r | - | - |
- | r | - |
- | - | - |
lw 权限:r-x 与 mask 权限:rwx 相与的结果就是最终权限:r-x 。
修改最大有效权限
[root@bogon ~]# setfacl -m m:rx 文件名
# 设定mask权限为 r-x 。使用 “m:权限” 格式
注:一般情况下是不会用到mask的,特殊情况需要限定最高权限时才用。
2、删除ACL权限
[root@bogon ~]# setfacl -x u:用户名 文件名
# 删除指定用户的ACL权限
[root@bogon ~]# setfacl -x g:组名 文件名
# 删除指定用户组的ACL权限
[root@bogon ~]# setfacl -b 文件名
# 删除文件所有的ACL权限
四、默认ACL权限和递归ACL权限
1、递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。(对已经有的文件)
[root@bogon ~]# setfacl -m u:用户名:权限 -R 目录名
[root@bogon home]# setfacl -m u:lw:rx -R /home/av/
注:容易权限溢出,因为目录可以赋予执行权限,但是目录里面的普通文件也会递归上 x 权限。
2、默认ACL权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有的子文件都会继承目录中的ACL权限。(对这条命令执行后建立的文件)
[root@bogon ~]# setfacl -m d:u:用户名:权限 目录名