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

相关推荐

  • Linux基本文本管理命令

    一.Linux上的文件管理命令都有哪些,其使用的方法及其相关演示1.cp命令:copy (文件复制功能)源文件,目标文件单源复制:cp [OPTION]…[-T] SOURCE DEST多源复制:cp [OPTION]…SOURCE…DIRECTORYcp [OPTION]… -T DIRECTORY SOURCE… 单源复制:cp [OPTION]…[-T…

    2017-09-20
  • 第七周

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; 第一步先在磁盘上创建分区:fdisk /dev/sdc n –> e –> 5 –> default &#…

    Linux干货 2017-05-18
  • 如何在Java中避免equals方法的隐藏陷阱

    译者注 :你可能会觉得Java很简单,Object的equals实现也会非常简单,但是事实并不是你想象的这样,耐心的读完本文,你会发现你对Java了解的是如此的少。如果这篇文章是一份Java程序员的入职笔试,那么不知道有多少人会掉落到这样的陷阱中。原文转自http://www.artima.com/lejava/articles/equality.…

    开发运维 2015-04-03
  • 优云运维安全专家实践:使用802.1X+FreeRadius+LDAP实现网络准入方案

    本文,将为大家分享运维前沿在网络准入管理方面的实践经验。 网络准入业界常用方案 为了保证网络资源的安全,拒绝非法入侵,现代IT网络总需要一定的网络准入方案,而目前业界常用的网络准入方案有: 而今天给大家介绍的802.1X+FreeRadius+LDAP网络准入方案,则避免了上述方案中的缺点,是一套低成本,控制能力强,符合行业标准的一套网络准入认证体系。 什么…

    安全运维 2016-07-10
  • 第三周作业

    博客具体内容请移步博客园: http://www.cnblogs.com/ITOps/p/6204549.html

    Linux干货 2016-12-20
  • Linux三剑客awk命令

    1 .awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得自…

    2017-09-08