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)
上一篇 2017-07-29 20:15
下一篇 2017-07-29 20:47

相关推荐

  • 35个强大的UI设计教程

    下面是35个非常不错的UI设计的的教程及效果图,非常不错哦。不但教你如何做一些特效,同样教你如何做UI布局和界面设计。当然,他们风格迥异,也基本上都是Web页面上的。都非常不错。希望你喜欢。(点击下面的图片可以打开相关的教程) Old Paper Layout Professional Modern Web Layout Photography portfo…

    Linux干货 2015-04-01
  • 第十九周作业

    1、描述Tomcat的架构; 核心架构图: 架构简介: Server是管理Service接口的,是Tomcat的一个顶级容器。管理着多个Service; Service 是服务,管理着一个Container和多个Connector,Service的存在依赖于Server; Container : 一个或者多个Container 可以对应一个Connector…

    2017-06-23
  • 域名解析服务(DNS)之bind

    DNS简介 DNS是Domain Name System的简称,DNS的主要作用就是讲主机名解析成ip地址的过程,因为在计算机网络当中是通过ip地址来进行主机间通信的,ipv4的地址是32位,人类记忆起来十分困难,更何况ipv6的128位,所以我们需要一个简单容易记忆的字符串来替换ip地址,当我们访问www.baidu.com它能知道访问的是某个ip地址的服…

    Linux干货 2016-10-09
  • Linux命令帮助及history命令的使用

    1.Linux命令帮助的获取详解 在Linux中获取命令帮助时,内部命令和外部命令的获取方式是有区别的: 即  (1)内部命令:#help COMMAND ?            #man bash  (2)外部命令:<1> # COMMAND –hel…

    Linux干货 2016-08-05
  • 文件查询、yum安装等零散知识点总结

    归纳重要知识点:文件查询、Linux配置文件、文件的压缩与归档、yum安装包文件   这篇博客介绍以前遗落的重要知识点进行归纳总结,分为四大块:文件查询命令、全局与个人配置文件、文件的压缩与归档、yum命令安装程序包的相关条件与操作。下面结合个人理解与学习内容一一进行总结。     一.文件查询命令locate与find &nb…

    Linux干货 2016-08-26
  • Linux文件类型及颜色标识

    查看文件类型:      指令:ll 文件名或目录名      –  白色 普通文件(可执行文件)      l  扩写:sysbolic link 淡蓝色 符号链接文件   &…

    Linux干货 2016-10-18