CentOS 7 文件权限之访问控制列表(ACL)
Linux的ACL是文件权限访问的一种手段。当拥有者所属组其他人(own,group,other)不能满足给一个单独的用户设置单独的权限时,ACL的出现就很好的解决了该问题。
比如其他用户own,不属于log文件的拥有者也不在log文件的所属组中,而log文件对于其他人无法访问,此时想单独给own用户开小灶,怎么办呢?acl就是用来开小灶的,单独给own用户设置对log文件的权限,使得仅仅own用户对于log文件有读、写或者执行的权限。
1、查看系统是否支持ACL?如何加载ACL属性

我的系统根目录挂载在/dev/mapper/centos-root目录下,这时候我们就需要查看/dev/mapper/centos-root目录是否支持ACL

因为我使用的系统是CentOS 7,而CentOS 7默认创建分区并写入文件系统时附加上ACL属性,所以我通过dmesg系统启动信息,直接查到“SGI XFS with ACLs”。通过网上查找,可以使用dumpe2fs -h /dev/mapper/centos-root 来查看是否附加了ACL属性。
接下来mount -o remount,acl 临时开启ACL属性,vim /etc/fstab可以永久设置开机附加ACL属性。

/etc/fstab文件用于在系统启动时,自动将指定的文件系统挂载到指定的目录。<file system> 表示要挂载的分区或者存储设备,如U盘 <dir>表示存储设备要挂载到哪个目录下 <type>表示要挂载的分区或者存储设备的文件系统类型,一般为ext2、ext3、ext4、xfs、ntfs......,其他的几个参数可以依葫芦画瓢,当然这里需要在default加上逗号,acl , reboot重启
2、如果没有ACL属性,需要手动安装ACL包
首先配置国内yum源或者配置本地yum源,如果已经配置请自动过滤。
https://mirrors.huaweicloud.com/ 华为yum源配置地址

yum install libacl acl -y 安装acl和libacl包,接着再安装上面的操作设置启动ACL
3、ACL权限设置
Linux设置文件ACL权限是通过setfacl工具来设置的,通过getfacl工具来获取ACL访问控制列表

ls -l工具可以查看到文件所属的九列权限,同时可以看到九列权限之后一位:如果是点(.)表示仅仅有九列权限,如果是+,表示除九列之外还有ACL权限,这时候就需要通过getfacl工具查看ACL权限

如果文件或者目录存在ACL权限,那么通过九列权限来判断用户对文件是否有访问权就不能一概而论了。下面解释一下如何看这张表:
1> 表的前三列以#字号注释,表示该三行是解释说明的意思,不起作用
file:后面紧跟文件或者目录名称
owner:后面紧跟文件拥有者
group:后面紧跟文件所属组
2>#字之后的每一行代表一条ACL规则
user::rwx user是用户的意思;冒号(:)起到分隔的作用,分隔域;第一个冒号之后是用户名;第二个冒号之后是熟悉的权限:r(读)、w(写)、x(执行)
所以user:tel:rwx 表示用户tel对目录log有读写进入目录的权限,尽管从九列来看tel属于其他用户,它应该仅仅有读和进入目录的权限,但因为log目录设置了ACL规则,所以以ACL规则为主,而九列对tel用户不起作用,但是对除tel的其他用户还是有r-x的权限的
那么问题来了,user::rwx 两个冒号之间啥都没有事什么意思?缺省的是注释owner:root用户,所以全称应该是user:root:rwx,只是在这里缺省了而已。
然后goup::r-x other::r-x 分别表示log目录对所属组root组有r-x权限,对其他用户有r-x权限
其实,user::rwx介绍的ACL权限有点差错!应该说只要文件或者目录设置ACL权限,那么就以ACL权限为唯一权限了,本质上可以将九列理解为ACL规则一部分,ACL规则执行的顺序是自上而下的执行,当tel用户从user::rwx执行到user:tel:rwx时,符合规则,对应权限为rwx,那么后面的group::r-x other::r-x更本就没有执行,ACL规则执行到符合规则的行就不执行后面的规则。
3>setfacl 工具设置ACL规则
setfacl [选项...] filename....

setfacl 命令之后你能说root组(假设root组为普通组,root在Linux中就是上帝,没有访问权限,root用户也可以读写执行)有rwx的权限吗?但实质上,这里的组rwx确是tel组的权限。你的第一眼看见+号,直接getfacl来查看权限,而不是依据九列权限来识别权限。
--modify=acl 修改文件或目录的ACL规则 --modify的ACL规则可以设置多条,每条用逗号隔离开,setfacl文件也可以多个文件一起来修改
--modify-file=filename 从文件读取ACL规则,并以此为模板修改文件权限

ACL规则的文件依据getfacl显示模板,一条规则一行, --modify-file后面可以用绝对路径也可以用的相对路径
-x, --remove=acl 从ACL规则列表中移除某项规则
-X, --remove-file=filename 从文件读取ACL规则并以此为模板批量移除ACL规则 (注意:从文件删除ACL规则,需要对应到每条规则)
下面使用--remove=acl --remove-file=filename将上面建立的规则清空

-b,--remove-all 移除文件所有扩展的ACL规则

最后一个setfacl参数是-R,--recursive 递归操作到所有的子目录和文件
至于getfacl工具参数,基本上就没啥好说的,getfacl filename...我想就够用了
END
CentOS 7 文件权限之访问控制列表(ACL)的更多相关文章
- 文件权限和访问控制列表ACL (1)
背景知识: 文件的权限主要针对三类对象进行定义 Owner: 属主u Group: 属组g Other: 其他o 每个文件针对每一类的访问者都设定了三种权限 r: Readable 读 w: Writ ...
- 【Linux命令】setfacl、getfacl命令基本用法(文件权限全文控制列表acl)
一.setfacl命令setfacl用来细分linux下的文件权限. chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说,setf ...
- 由于 web 服务器上此资源的访问控制列表(acl)配置或加密设置,您无权查看此目录或页面。
场景:IIS中遇到无法预览的有关问题(HTTP 异常 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置 IIS中遇到无法预览的问题(HTTP ...
- 用访问控制列表(ACL)实现包过滤
用访问控制列表(ACL)实现包过滤 一.ACL概述 1.ACL(Access Control List,访问控制列表)是用来实现数据包识别功能的 2.ACL可以应用于诸多方面 a>.b包过滤 ...
- 第10章 网络安全(5)_访问控制列表ACL
6. 访问控制列表ACL 6.1 标准访问控制列表 (1)标准ACL ①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件.即,所有的条件都是基于源IP地址的. ②基本不允许或拒绝整个协议组 ...
- 基本的访问控制列表ACL配置
摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息 来 ...
- HCNA Routing&Switching之访问控制列表ACL
前文我们了解了DHCP服务相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15147870.html:今天我们来聊一聊访问控制列表ACL: ACL(ac ...
- 网络访问控制列表ACL(读懂这篇就基本够了,后面有配置案例)
一.访问控制列表是什么? 访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃.访问控制列表被广泛地应用于路由器和三层交换机,借助于访问 ...
- linux访问控制列表 ACL实现文件权限设置
ACL:Access Control List,实现灵活的文件权限管理 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限 CentOS7 默认创建的xfs和ext4文件系统具有ACL功能 A ...
随机推荐
- 解决使用go get 下载模块下载超时的问题
解决使用go get 下载模块下载超时的问题 解决使用go get 下载模块下载超时的问题 使用go env可以看到,默认的GOPROXY的值是https://proxy.golang.org, ...
- GO学习-(27) Go语言操作NSQ
Go语言操作NSQ NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优 ...
- Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法
Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法 之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...
- redis主从架构宕机问题手动解决
1 主机宕机 1. 设置端口6379是主机,端口6380是从机,全部都正常启动 2. 验证在6379写入数据,在6380也能得到数据 3. 现在将6379主机停掉,模拟主机宕机 4. 由 ...
- MindSpore图像分类模型支持(Lite)
MindSpore图像分类模型支持(Lite) 图像分类介绍 图像分类模型可以预测图片中出现哪些物体,识别出图片中出现物体列表及其概率. 比如下图经过模型推理的分类结果为下表: 类别 概率 plant ...
- 【Java编程实战】Metasploit_Java后门运行原理分析以及实现源码级免杀与JRE精简化
QQ:3496925334 文章作者:MG1937 CNBLOG博客ID:ALDYS4 未经许可,禁止转载 某日午睡,迷迷糊糊梦到Metasploit里有个Java平台的远控载荷,梦醒后,打开虚拟机, ...
- Task06:综合练习
练习一: 各部门工资最高的员工(难度:中等) 创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--- ...
- 【c++】string详解
参考: https://www.cnblogs.com/this-543273659/archive/2011/07/21/2113172.html 感谢博主 我能不用char*就不用,而使用C++ ...
- 基于Colab Pro & Google Drive的Kaggle实战
原文:https://hippocampus-garden.com/kaggle_colab/ 原文标题:How to Kaggle with Colab Pro & Google Drive ...
- 史上最详细的Air7xx驱动安装教程
由于Air7xx系列4G模块需要安装USB驱动,但是很多开发者对USB驱动的安装方法不是十分了解,所以经常出现问题,导致安装失败.特书此文,手把手教你装USB驱动. 第一步 从官网下载最新的驱动程序 ...