ACL概述

一、什么是ACL

ACL是linux系统中一种被称为访问控制列表的权限控制方法,它是一种权限分配之外的普遍范式。在一般情况下,要确认三个权限组:owner、group和other。而使用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,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限(即两者权限的合集)。如果不属于任何GROUP,则执行OTHER。

四、命令示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

结果显示删除成功。

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

aclrm.txt 内容如下

u:username

g:groupname

结果显示删除成功。

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

结果显示删除成功。

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

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

结果显示删除成功。

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

结果显示删除成功。

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

结果显示删除成功。

命令语法:

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

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

结果显示还原成功。

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

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

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

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

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

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

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

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

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

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

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

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

【补充】1、ACL 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的朋友!

时间: 2024-10-21 18:38:49

ACL概述的相关文章

CCNA网络工程师学习进程(8)访问控制列表ACL

前面几节我们介绍了路由器的路由配置,接下来几节我们将介绍路由器的高级配置应用,包括ACL.NAT.DHCP.PPP.VPN和远程连接等的配置.     (1)ACL概述:   ACL(Access Control List)是一系列运用到路由器接口的指令列表.这些指令告诉路由器如何接收和丢弃数据包,按照一定的规则进行,如源地址.目的地址和端口号等.路由器将根据ACL中指定的条件,对经过路由器端口的数据包进行检查,ACL可以基于所有的Routed Protocols(被路由协议)对经过路由器的数据

分布式服务Dubbo+Zookeeper安全认证

前言 由于之前的服务都是在内网,Zookeeper集群配置都是走的内网IP,外网不开放相关端口.最近由于业务升级,购置了阿里云的服务,需要对外开放Zookeeper服务. 问题 Zookeeper+dubbo,如何设置安全认证?不想让其他服务连接Zookeeper,因为这个Zookeeper服务器在外网. 查询官方文档: Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使

【免费下载】全套最新 1Linux基础知识 视频教程+教学资料+学习课件+源代码+软件开发工具

1Linux基础知识视频教程 网盘地址: 链接:https://pan.baidu.com/s/1wmG\_AW0Ij5Q-5RWzcjHlqQ 提取码:7iy7 加公众号 获取更多新教程 教程目录大纲 ./1Linux基础知识 ├── 00 云计算-Linux系统管理-行业介绍 │?? ├── 001 云计算-Linux系统管理-行业介绍-IT主流行业1.avi │?? ├── 002 云计算-Linux系统管理-行业介绍-IT主流行业2.avi │?? ├── 003 云计算-Linux系统

ACL的三种访问控制列表的概述及实验配置

ACL的概述 在路由器上读取OSI七层模型的第三层及第四层包头的信息根据定义好的规则,对包进行过滤 ACL的工作原理 有两个方向出:已经过路由器的处理,正离开路由器接口的数据包入:已经到达路由器接口的数据包,将被路由器处理 列表应用到接口方向与数据方向有关 访问控制列表的类型 1 标准访问控制列表基于源IP地址过滤数据包白哦准访问控制列表的访问控制列表号是1~99 2 扩展访问控制列表基于源IP地址.目的ip地址.指定协议.端口和标志来过滤数据包扩展访问控制列表的访问控制列表号是100~199

蓝牙核心技术概述(一):蓝牙概述

蓝牙核心技术概述(一):蓝牙概述 标签: 蓝牙bluetoothsig 2014-07-26 16:01 6143人阅读 评论(3) 收藏 举报  分类: 协议(14)  版权声明:本文为博主原创文章,未经博主允许不得转载. 关键词:蓝牙 核心技术 协议 版本 历史作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢)欢迎指正错误,共同学习.共同进步!!下载连接:Bluetooth PROFILE SPECIFICATIONS (基本涵盖所有蓝牙协议).buletooth cor

工业防火墙架构与技术【第一节:概述】

1.1.   工控防火墙概述 我们将应用于工业控制网络环境中的防火墙称为工业控制防火墙(ICF,Industrial Control Firewall).工业防火墙(IFW,IndustrialFirewalls)或工控防火墙(在本文中主要称为工控防火墙).和ICT环境的防火墙作用类似,其是一个具体设备(物理或虚拟),用于两个网络之间的隔离控制.在ICT环境中,防火墙主要用于保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为.因其隔离.防守的属性,灵活应用于网络边界.子网隔离等位置,

权限系统与RBAC模型概述

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3793894.html 0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋.当时google了一些权限管理的资料,从中了解到早就有了RBAC这个东西.可惜一直没狠下心来学习. 更详细的RBAC模型非常复杂.本文只做了一些基础的理论性概述.

蓝牙核心技术概述

转:http://blog.csdn.net/xubin341719/article/details/38305331 关键词:蓝牙核心技术协议  HCI  L2CAP SDP RFCOMM 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!)欢迎指正错误,共同学习.共同进步!!下载链接:Bluetooth PROFILE SPECIFICATIONS (基本涵盖所有蓝牙协议).buletooth core 2.1-4.0 SPECIFICATION(三蓝牙版本的核心协议v2

利用ACL库快速创建你的网络程序--ACL_VSTREAM 流的使用

1.概述 操作系统在API层为我们**了进行网络通讯的库(一组socket函数库),但使用起来未免复杂,而且极易出错,虽然这些socket库最初起源于 BSD系统,各个操作系统厂商都**了自身平台的接口实现,但这些接口在不同OS上又略有差别,所以当你想写一个跨平台的网络通信程序时,工作量还是有的,并且如不知晓各个平台下的差异也极易出错. 本节向你介绍了怎样使用ACL库中的数据流(ACL_VSTREAM)来快速搭建你的网络通信程序:另外,ACL_VSTREAM 不仅是跨平台的,而且既可用于网络通信