ACL概述

ACL概述

一、什么是ACL

ACLlinux系统中一种被称为访问控制列表的权限控制方法,它是一种权限分配之外的普遍范式。在一般情况下,要确认三个权限组:ownergroupother。而使用ACL则可以增加权限给其他用户或组别,不再仅仅是在“other”中定义权限,可以允许指定的用户拥有不同于其所属组的权限。

ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS,
Btfrs,
等。CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。

二、启动ACL的方法

mount
-o acl /dev/sda7 
取消的方式,重新挂载时不指定即可

tune2fs
-o acl /dev/sda7
取消的方式 tune2fs -o ^acl /dev/sda7

以上两种方式开启的ACL可以通过mount查看是否开启ACL

三、ACL权限判断的顺序

先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACLUSER,如果是则执行USER权限后结束,如果不是ACLUSER, 则判断是否属于GROUPACL GROUP,如果是,则取最大权限(即两者权限的合集)。如果不属于任何GROUP,则执行OTHER

四、命令示例

基础ACL通过两条命令管理:setfacl用于增加或者修改ACLgetfacl用于显示分配完的ACL

命令语法:1setfacl -m u:username:—[, u:username:—]file[direct](中括号表示可选择)作用:设置ACL USER

 2getfacl file[direct]  作用:查看指定文件的ACL设置

示例:首先在/app目录下创建testdir目录,并在该目录下分别创建目录dir和文件file(便于区分),新创建的文件其用户和用户组均为root,先要将testdir目录分享给sky用户,并为其分配rx权限,结果如下图所示。

ACL概述

命令语法:setfacl -m g:groupname:— file[direct]  作用:设置ACL GROUP

示例:设置用户组big对于testdir具有写的权限,big用户组中的辅助组成员有mu用户,结果如下图所示。

ACL概述

 

命令语法:setfacl –Rm u:username:— direct/direct[file]   作用:递归设置

示例:设置用户wind对于testdir及其目录下的文件具有读写以及执行的权限,结果如下图所示。

ACL概述

 

命令语法:setfacl -m d: u:username:— direct/direct[file] 作用:设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。

示例:要求guanyu用户对testdir目录及所有用户在其下创建的新文件新目录均有rwx权限,结果如下图所示:

ACL概述

 

命令语法:getfacl -R /direct > filetxt  作用:将目录下的所有文件的ACL属性备份到文件(-R在此处仍是递归的作用)

示例:将testdir/dirACL属性备份到acltxt文件中,结果如下图所示。

ACL概述

 

命令语法:setfacl -x u:username direct[file]  作用:单独去除一条ACL权限

示例:删除guanyu用户的ACL权限

ACL概述

结果显示删除成功。

 命令语法:setfacl -X aclrm.txt  direct[file]

              aclrm.txt 内容如下

                     u:username

                     ggroupname

ACL概述

结果显示删除成功。

 命令语法:setfacl -b file 作用:去除该文件上ACL属性。

ACL概述

结果显示删除成功。

 命令语法:setfacl -x d:name direct[file] 作用:删除一条默认权限

setfacl -x g:groupname direct[file] 删除一条非默认组的权限(不加d即可)

ACL概述

结果显示删除成功。

 

命令语法:setfacl -k direct[file]   作用:删除全部默认权限

ACL概述

结果显示删除成功。

 

命令语法:setfacl -b direct[file] 作用:删除ACL属性

ACL概述

结果显示删除成功。

 

命令语法:

setfacl -R
–set-file=acl.txt direct[file] 
作用:通过文件还原ACL属性的方法1

ACL概述

 

setfacl –restore
acl.txt   
通过文件还原ACL属性的方法2

ACL概述

结果显示还原成功。

从以上的结果显示中,我们会发现有一个mask的值,那么mask的作用是什么呢?让我们来做一个实验:首先在之前设置的基础上将testdir的所有者改为mu用户,所有组同样改为mu,因为root用户是超级管理员,其权限最大,为避免因为root用户权限过大而出现影响实验结果的现象所以将文件所有者改为普通用户。然后我们设置mask的值为wx,其语法命令格式与上述的设置用户的权限类似:setfacl -m mask:—
file[direct]
,然后查看不同用户对于testdir的权限变化,结果如下图所示。

ACL概述

显而易见,之前的mask值为rwx,在将mask值修改为wx之后我们看到方框标志的两部分出现了明显的不同,skywind以及group的权限后面均产生新的权限,而big用户组因为其之前的权限与mask相同,所以没有发生变化。那么不同用户的真正权限是保持之前的还是与#effective的提示相同呢,我们可以来具体的测试一下:

首先使用测试文件所有者的权限是否变化,结果如下图所示。

 ACL概述

由此可见,mask的值并未影响到文件所有者的权限。

接下来我们来验证sky用户的权限,结果如下图所示。

ACL概述

结果显示,sky用户仅仅可以进入testdir目录,读写权限均没有,仅有执行权限。这样是不是验证#effective显示的权限就是用户或用户组的实际权限,我想我们还是需要一一验证一下。

ACL概述

此结果显示的是wind用户对于testdir的权限,由结果显示可知,wind用户对于testdir的权限是wx。最后我们来验证一下文件所属组的权限,首先我们将新建一个用户使其成为用户组mu的辅助成员,但对于testdir并没有其他权限,从而完全继承mu用户组的权限以便于验证,结果如下图所示。

ACL概述

由结果可以看出用户xm的权限仅有执行权限,读写权限均没有。

现在,我们已经将受mask值影响的用户及用户组的权限一一验证过,由此可以得出以下结论:

1mask值对于文件所有者的权限并不产生影响;

2mask对除了文件所有者之外的用户或者用户组产生权限的影响;

3、被影响的用户或用户组的最大权限不能超过mask设置的权限,即其真正权限为自身原设置的权限与mask值的交集。

【补充】1ACL MASK随着新的ACL设置会被重置,重置的标准是让该文件上的所有ACL及文件原GROUP上的权限都有效,所以一般情况下都是将所有的ACL设置完成之后再最后设置mask的值。

2、修改mask值的方法有两种,除了上述提到过的setfacl -m mask:—
file[direct]
,还有chmod g=rwx file[direct]这种方法,因为 一旦设置了ACL权限后,原有的文件GROUP不可再更改,但权限并没有失效,使用chmod即修改ACL MASK,且在使用ll命令查看文件的权限时,在原来group的权限位置上显示的也是mask的权限值,只有当取消ACL之后才会显示真正的group权限。

总结:虽然增加了很多示例,但是希望读者可以自己也做一些相关的实验,编者的角度毕竟也是仅仅从个人的学习角度出发,并不能涵盖所有的方面,有些问题可能解释的并不完美,同时也存在一些暂时没有发现的问题。Linux的学习需要学习他人的经验,但更需要个人的练习以及个人的思考,加油每一个学习linux的朋友!

 

 

原创文章,作者:poetic snow,如若转载,请注明出处:http://www.178linux.com/83234

(0)
poetic snowpoetic snow
上一篇 2017-07-29
下一篇 2017-07-29

相关推荐

  • path

    path简单应用

    Linux干货 2017-10-30
  • 马哥教育首届IT技术博客大赛–复审阶段

    马哥教育首届IT博客大赛大众评审开始了 2016年马哥教育首届IT博客技术大赛,评委初审已结束,正式进入大众评审阶段。。。。 此次博客大赛,虽然因为准备时间比较仓促,举办经验略有不足(快去鄙视小编~😒),但还是收到了10多位优秀的小伙伴共80篇博文(看看人家的劲头,这就是差距呀😓)的参赛作品投递; 其中初审最高…

    Linux干货 2016-06-07
  • 文本处理相关工具

    文本工具       操作系统中,文本的处理这一操作,比如操作一些内容,查看一些内容等等这些东西在linux中都得借助工具来完成对文本的操作。下面来说说对文本处理的工具;  其中:        查看文件内容工具:more、less、cat     &nbsp…

    Linux干货 2016-08-05
  • 命令find应用

    作业:  查找/var目录下属主为root,且属组为mail的所有文件 [root@localhost bin]# find /var/ -user root -group mail     2. 查找/var目录下不属于root、lp、gdm的所有文件    [root@localhost bin…

    Linux干货 2016-08-22
  • 马哥教育网络班21期-第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;     #fdisk /dev/sdb (n;p;1;+10G;w)     #partx -a -n 1 /dev/sdb     (1…

    Linux干货 2016-08-22
  • 马哥教育网络班22期+第4周课程练习 忍者乱太郎喻成

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   cp -rp /etc/skel /home/tuser1   chmod -R 700 /home/tuser1 2、…

    Linux干货 2016-10-09