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. VGG16迁移学习实现

    VGG16迁移学习实现 本文讨论迁移学习,它是一个非常强大的深度学习技术,在不同领域有很多应用.动机很简单,可以打个比方来解释.假设想学习一种新的语言,比如西班牙语,那么从已经掌握的另一种语言(比如英 ...

  2. 算法编程Algos Programming

    算法编程Algos Programming 不同算法的集合,用于编程比赛,如ACM ICPC. 算法按主题划分.大多数算法都可以从文件中按原样运行.每种算法都有一个参考问题,并对其时间和空间复杂度作了 ...

  3. 实用的jar包加密方案

    前言 jar包相信大家都很熟悉,是通过打包java工程而获得的产物,但是jar包是有一个致命的缺点的,那就是很容易被反编译,只需要使用jd-gui就可以很容易的获取到java源码. 如果你想要防止别人 ...

  4. the rust book 的简单入门笔记

    rust learning day 1 (2021/05/27) 学了常量,变量,数据类型,控制流,所有权 char 的宽度是4字节,一个 unicode 的宽度 控制流条件都不要括号 rust 中的 ...

  5. 使用adb命令在模拟器安装apk

    1.adb connect 127.0.0.1:7555 连接网易模拟器地址2.adb devices -L 查看有几个连接端口地址3.执行推送配置文件 命令 adb push 文件 路径

  6. Flink实时计算pv、uv的几种方法

    本文首发于:Java大数据与数据仓库,Flink实时计算pv.uv的几种方法 实时统计pv.uv是再常见不过的大数据统计需求了,前面出过一篇SparkStreaming实时统计pv,uv的案例,这里用 ...

  7. SpringBoot原理深入及源码剖析(一) 依赖管理及自动配置

    前言 传统的Spring框架实现一个Web服务需要导入各种依赖jar包,然后编写对应的XML配置文件等,相较而言,SpringBoot显得更加方便.快捷和高效.那么,SpringBoot究竟是如何做到 ...

  8. yum的配置

    1. 创建两台虚拟机[root@room9pc01 ~]# clone-vm7Enter VM number: 8 [root@room9pc01 ~]# clone-vm7Enter VM numb ...

  9. Vue.js源码解析-Vue初始化流程

    目录 前言 1. 初始化流程概述图.代码流程图 1.1 初始化流程概述 1.2 初始化代码执行流程图 2. 初始化相关代码分析 2.1 initGlobalAPI(Vue) 初始化Vue的全局静态AP ...

  10. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...