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)的更多相关文章

  1. 文件权限和访问控制列表ACL (1)

    背景知识: 文件的权限主要针对三类对象进行定义 Owner: 属主u Group: 属组g Other: 其他o 每个文件针对每一类的访问者都设定了三种权限 r: Readable 读 w: Writ ...

  2. 【Linux命令】setfacl、getfacl命令基本用法(文件权限全文控制列表acl)

    一.setfacl命令setfacl用来细分linux下的文件权限. chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限. 换句话说,setf ...

  3. 由于 web 服务器上此资源的访问控制列表(acl)配置或加密设置,您无权查看此目录或页面。

    场景:IIS中遇到无法预览的有关问题(HTTP 异常 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置 IIS中遇到无法预览的问题(HTTP ...

  4. 用访问控制列表(ACL)实现包过滤

      用访问控制列表(ACL)实现包过滤 一.ACL概述 1.ACL(Access Control List,访问控制列表)是用来实现数据包识别功能的 2.ACL可以应用于诸多方面 a>.b包过滤 ...

  5. 第10章 网络安全(5)_访问控制列表ACL

    6. 访问控制列表ACL 6.1 标准访问控制列表 (1)标准ACL ①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件.即,所有的条件都是基于源IP地址的. ②基本不允许或拒绝整个协议组 ...

  6. 基本的访问控制列表ACL配置

    摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息  来 ...

  7. HCNA Routing&Switching之访问控制列表ACL

    前文我们了解了DHCP服务相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15147870.html:今天我们来聊一聊访问控制列表ACL: ACL(ac ...

  8. 网络访问控制列表ACL(读懂这篇就基本够了,后面有配置案例)

    一.访问控制列表是什么? 访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃.访问控制列表被广泛地应用于路由器和三层交换机,借助于访问 ...

  9. linux访问控制列表 ACL实现文件权限设置

    ACL:Access Control List,实现灵活的文件权限管理 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限 CentOS7 默认创建的xfs和ext4文件系统具有ACL功能 A ...

随机推荐

  1. Nginx 配置实例-配置高可用

    Nginx 配置实例-配置高可用 1. 实现效果 2. 两台机器 nginx 的安装 2.1 192.168.25.120 中 nginx 的安装 2.1.1 安装 pcre 依赖 2.1.2 安装其 ...

  2. 3D重建算法原理

    3D重建算法原理 三维重建(3D Reconstruction)技术一直是计算机图形学和计算机视觉领域的一个热点课题.早期的三维重建技术通常以二维图像作为输入,重建出场景中的三维模型.但是,受限于输入 ...

  3. LLD-LLVM链接器

    LLD-LLVM链接器 LLD是LLVM项目中的链接器,是系统链接器的直接替代,并且运行速度比它们快得多.它还提供了对工具链开发人员有用的功能. 链接器按完整性降序支持ELF(Unix),PE / C ...

  4. .NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<.NET平台系列2 .NET Framework 框架详解>与 <.NET平台系列7 .NET Core 体系结构 ...

  5. P1522 [USACO2.4]牛的旅行 Cow Tours(Floyd)

    题目描述 Farmer John 的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer Joh ...

  6. 一、部署监控服务器--安装LNMP环境

    1.要求: 本案例要求部署-台Zabbix监控服务器, -台被监控主机,为进一步执行具体的监控任务做准备:1.安装LNMP环境2.源码安装Zabbix3.安装监控端主机,修改基本配置4.初始化Zabb ...

  7. 【题解】逐个击破 luogu2700

    题目 题目描述: 现在有N个城市,其中K个被敌方军团占领了,N个城市间有N-1条公路相连,破坏其中某条公路的代价是已知的. 现在,告诉你K个敌方军团所在的城市,以及所有公路破坏的代价,请你算出花费最少 ...

  8. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」

    那一天我们许下约定 内部题,题干不粘了. $30分算法$ 首先看数据范围,可以写出来一个普通dp #include<bits/stdc++.h> #define ll int #defin ...

  9. 【Python】(六)Python数据类型-列表和元组,九浅一深,用得到

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文分十个章节介绍数据类型中的列表(list)和元组(tuple),从使用说到底层实现,包您满意 干货满满,建议收藏,需要用到时常看看. 小伙伴们 ...

  10. Vue3全家桶升级指南一composition API

    1.setup() vue3中的composition API中最重要的就是setup方法了,相当于组件的入口,所有的composition API都必须放到setup()中的使用. setup是在组 ...