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 ...
随机推荐
- Python+Selenium学习笔记12 - 窗口大小和滚动条
涉及到的三个方法 set_window_size() 用于设置浏览器窗口的大小 e.gset_window_size(600,600) window.scrollTo() 用于设置浏览器窗口滚动条的 ...
- 手把手带你快速入门jQuery(视频|资料,建议收藏!)
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架). jQuery设计的宗旨是 ...
- 服务化部署框架Paddle Serving
服务化部署框架Paddle Serving 概述 常见的深度学习模型开发流程需要经过问题定义.数据准备.特征提取.建模.训练过程,以及最后一个环--将训练出来的模型部署应用到实际业务中.如图1所示,当 ...
- ARM NEON指令集优化理论与实践
ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...
- 旷视MegEngine数据加载与处理
旷视MegEngine数据加载与处理 在网络训练与测试中,数据的加载和预处理往往会耗费大量的精力. MegEngine 提供了一系列接口来规范化这些处理工作. 利用 Dataset 封装一个数据集 数 ...
- 车载智能HUD
车载智能HUD 从 HUD 到行车记录仪再到后视镜,最近有不少团队都发布了自己的车载智能硬件. 什么是 HUD? HUD 全称抬头数字显示仪 (Heads Up Display),又叫平视显示系统,简 ...
- VB 老旧版本维护系列---有点懵逼的webserver访问
有点懵逼的webserver访问 '定义webserver地址 Dim postUrl As String = "" '定义webserver所需xml字符串参数 Dim xmlR ...
- UF_DRAW 制图操作
Open C uc6476uc6477uc6478uc6479uc6480uc6481uc6482uc6483uc6484uc6485uc6486uc6488uc6489uc6492uc6494uc6 ...
- 使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化
前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化. 镜像的优化 通过 docker images 看到简单的一个 node 服务端 ...
- Spring Boot配置Filter
此博客是学习Spring Boot过程中记录的,一来为了加深自己的理解,二来也希望这篇博客能帮到有需要的朋友.同时如果有错误,希望各位不吝指教 一.通过注入Bean的方式配置Filter: 注意:此方 ...