190430 ACL权限与mask权限详解(ACL作用/设定/查看等命令)

ACL作用简介:

  在Linux中,为了解决个别用户对某一文件或目录权限不足的情况,所以有了ACL权限的概念。使组外的用户和非所有者用户也能对某个文件或目录拥有指定的权限。

  例如我有一个testing目录,这个目录属于test用户与testgroup组,这个时候如果有一新用户,这个用户既不属于root组又不属于tenggroup组。而这个目录只有root用户与test用户有写权限,新建用户因为不属于这两个有写权限的组,我们就无法对该目录进行指定权限操作。

  想解决该新建用户不加入指定组,而又让新用户对文件或目录有写权限的问题,我们就要引入ACL权限的设定。

  简单来说,acl权限设定之后,用户对目录或文件的权限操作优先选择acl权限,而不考虑所有者与所属组权限的设定。

 

ps:现在的linux系统分区,默认是支持acl权限设定的,我们一般不需要另外设定。

        如果我们不放心如何查看文件或目录的ACL权限是否开启,语法:getfacl 文件名。

 

如果我们需要开启某个分区的ACL文件

umpe2fs -h /dev/sda分区名 ,

mount -o remount,acl,/重新挂载根分区,并加入acl权限。重启之后没有了。

如果想使acl永久生效,需改/etc/fstab(这个文件是系统开机自动挂载的分区。)

————————————————————————————————————————————————————

设定ACL权限:

[root@cent home]# setfacl -m u:test003:rwx ./testing

(-m:设定acl权限,u:指定用户名,rx指定该用户对目录的权限)

上面语句的意思就是给test003用户指定/testing目录的acl权限为rwx。设定完成后,test003用户就对/testing目录有了rwx的权限。即使之前test003用户对/testing目录没有任何权限。

注:上面的u代表设定用户的acl权限,如果要给组设定acl权限把u改成g(语法:setfacl -m g:组名:权限)

 

查看设定权限后目录的权限信息:

[root@cent home]# ll
drwxrwxr-x+  2 root    root       6 Apr  6 13:23 testing

设定acl完成后查看/testi目录,我们发现当前的/testing目录权限后多了一个➕号。

 

 

查看目录acl详细信息

[root@cent home]# getfacl ./testing/

#查看当前目录下/testing目录的acl权限
# file: testing/
# owner: root
# group: root
user::rwx
user:test003:rwx
group::r-x
mask::rwx
other::r-x

我们发现多了一个test003用户,对该目录也具有rwx的权限。

 

 

setfacl选项用法:

-m 设定ACL权限

-x   删除ACL权限,删除单个文件

-b   删除目录下所有acl权限

.....

 

递归创建ACL权限(让目标目录下的所有新建文件继承目录的ACL权限)

在原先的语法后加上-R就可以了。

语法:setfacl -m u:test003:rwx -R ./testing

 

但是这个命令是针对已存在目录设置的,如果在执行完该命令后,在该目录下新建一个子目录或文件则不具备acl权限。如果想解决新建的文件同时具有ACL权限的问题,则需要修改默认的ACLqu

 

设定目录默认的ACL权限

在m后面加d:就可以了,在具备ACL权限的目录下创建目录时默认继承父目录的ACL权限。

语法:setfacl -m d:u:test003:rwx -R ./testing

 

 

 

总结:setfacl -m u:用户名:权限(rmx)-R /目录,这条命令是针对已有目录设定ACL权限的。

           setfacl-m d:u:用户名:权限 -R /目录,是针对新建目录设定ACL权限的

 

注:这两条命令都只能针对目录

 

 

 

——————————————————————————————————————————————————————————————————mask权限

 

acl权限一般与最大有效权限mask结合使用,ACL权限与mask权限相与的值相与后的权限,为设定的真实权限。

如果设定ACL权限为 r-- ,mask的权限为r-x,那么真实权限为r--。

如果设定ACL权限为 rwx ,mask权限为r-x,那么真实权限为r-x。

意思就是ACL与mask两者同时具有某一权限时,真实权限才具备该权限,若有一方不具备该权限,则真实权限不具备此权限。

mask权限默认为rwx,相当于没有意义,因为相当于我们设定的acl权限为acl权限本身。我们可以通过调整mask权限来完成指定权限的更改。

 

#mask权限为最大有效权限,我们可以通过调整mask权限,来设定文件的有效权限

190430 ACL权限与mask权限详解(ACL作用/设定/查看等命令)_第1张图片

[root@localhost /]# getfacl /project/

#查看/project目录的权限
getfacl: Removing leading '/' from absolute path names
# file: project/
# owner: root
# group: tg
user::rwx
user:st:r-x
group::rwx
group:t2:rwx
mask::rwx
other::---

你可能感兴趣的:(Linux运维)