centos8基础篇(十九)ACL权限控制

作者: 学知 | 来源:发表于2020-03-10 01:28 被阅读0次

各位尊敬的读者朋友,大家好,本文是《centos8服务器基础》系列的第十九篇,往期文章主要分享了Linux操作系统( centos8版本 )的入门使用、密码破解和网络管理、文件管理等知识。本系列文章将帮助你由浅入深的理解Linux操作系统,更多内容分享请点击往期精选

01 本文主题

上文《文件权限设置》中我们介绍了什么是Linux权限以及如何使用chmod、chown以及chgrp命令设置Linux权限。

细心的你是否发现上述命令始终有一个不方便的地方,那就一旦设置权限,总会影响一批用户的权限。举个例子,chmod 777 hello.txt,会让该文件所属组中的所有人都对该文件拥有rwx权限。

在实际运用中,我们往往只想针对单一用户或者某一个组授权,此时就需要强大的ACL授权命令登场了。

ACL 全称access control list,访问控制列表,主要是提供传统的所有者、所属组、其它用户的rwx权限之外的具体权限设置。ACL主要针对用户、用户组、默认权限(mask)进行授权。

本文中,我们将介绍如下知识点

  • 如何使用ACL权限命令?
  • ACL如何设置权限、删除权限?
  • ACL如何设置默认权限?
  • 如何设置mask默认有效权限?

总之,本文会详细盘点ACL权限设置的来龙去脉,帮助大家熟练掌握该命令。

02 实验环境

  • windows10电脑
  • cmder远程连接工具
  • vmware虚拟机+Linux操作系统环境(centos版本)

getfacl命令用来查看ACL权限的授权结果,命令格式如下

getfacl   文件名或目录名

例如,我们需要查看mnt目录下test.txt文件的授权结果,则

[root@VM_0_8_centos mnt]# getfacl test.txt/
# file: test.txt/           <=文件名
# owner: root           <=所有者
# group: root           <=所属组
user::rwx                 <=所有者权限为rwx
group::r-x                <=所属组权限为rx
other::r-x                 <=其它用户权限为rx

是不是很简单呢,显示的数据前添加了#号的代表这是文件的默认属性,包括文件名、所有者、所属组等。

下面我们将稍复杂的setfacl命令,该命令负责设置权限、删除权限等操作。

03 设置ACL权限

setfacl -m u:用户名:权限  文件名或目录名   
setfacl -m g:组名:权限  文件名或目录名
setfacl -R -m u|m:用户名或组名:权限  目录名

注意了,设置ACL权限的参数用-m,此处m是modify的意思。给用户设置权限则u开头,给组设置权限则g开头。如果要递归式的给子目录或子目录中的文件设置ACL权限,则需要添加-R参数。

下面,我们将test.txt文件的rwx权限授权给user1用户

[root@centos mnt]# setfacl -m u:user1:rwx test.txt/
[root@centos mnt]# getfacl test.txt/
# file: test.txt/
# owner: root
# group: root
user::rwx
user:user1:rwx   <=新设置的权限
group::r-x
mask::rwx         <=mask代表最大有效权限
other::r-x

用命令ll查看权限

[root@VM_0_8_centos mnt]# ll
total 4
drwxrwxr-x+ 2 root root 4096 Mar  9 23:29 test.txt

可以看到位于权限字符后新增了一个+好,代表该文件设置过acl权限。

还有一个问题,acl权限结果中mask到底是什么呢?mask 权限指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。

04 设置mask最大有效权限

既然已经知道mask是最大有效权限的意思,那么mask权限应该怎么设置呢?

[root@VM_0_8_centos mnt]# setfacl -m m:rw test.txt/
[root@VM_0_8_centos mnt]# getfacl test.txt/
# file: test.txt/
# owner: root
# group: root
user::rwx
user:user1:rwx                  #effective:rw-
group::r-x                      #effective:r--
mask::rw-
other::r-x

从ACL设置结果中可以看到mask权限对用户和组的权限做了限定,由于我们规定mask权限为rw,所以即使给user1设置了rwx权限,但只有rw权限生效,用 #effective:rw-表示。

05 删除ACL权限

关于删除ACL权限,有两种用法,一是删除某个人的ACL权限,二是删除所有设置过的ACL权限。

例1:  setfacl -x u:user1 test1.txt    删除user1对test1文件的ACL权限
例2:  setfacl -b test1.txt   删除test1.txt上所有人的ACL权限 

06 设置ACL默认权限

设置默认权限的对象只能是目录,今后用户在该目录中创建文件时,会默认继承该权限。

setfacl -m d:u:用户名:权限  目录名  <=给用户设置默认权限
setfacl -m d:g:组名:权限  目录名   <=给组设置默认权限

例如我们为dir1目录默认的rwx权限授权给user1,以后只要user1在该目录下创建文件,都会默认继承该权限。

[root@centos mnt]# setfacl -m d:u:user1:rwx dir1/
[root@centos mnt]# getfacl dir1/
# file: dir1/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

可以看到,权限结果中多了default字样,代表添加了默认权限,值得注意的是我们将dir1目录的默认权限授权给了user1,但此时user1并没有被授权,这些权限在user1在该目录下创建文件时才会被继承。

[root@centos mnt]# cd dir1/
[root@centos dir1]# mkdir dir3
[root@centos dir1]# getfacl dir3/
# file: dir3/
# owner: root
# group: root
user::rwx
user:user1:rwx     <=继承了dir1的默认权限
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

07 删除ACL默认权限

setfacl -k  目录名  <=删除默认权限

到此,setfacl、getfacl命令均已讲解完毕,希望你将这些命令和命令全称联想记忆,今后在用到的时候就不会混淆。

时光荏苒,岁月如梭,如今距离我开设《centos8服务器基础》 已然过去五个月,五个月里,每一篇文章都经过我精心的排版以及提炼。当然,我能坚持到今天,同样也离不开各位读者的支持,在此,我真心的向各位读者致谢。

相关文章

网友评论

    本文标题:centos8基础篇(十九)ACL权限控制

    本文链接:https://www.haomeiwen.com/subject/ffevdhtx.html