『学了就忘』Linux权限管理 — 53、ACL权限详解
前面我们之前说过,Linux系统的权限分为六种。有读写执行的基本权限,umask默认权限。
今天我们来说一下ACL权限。
提示:每一个文件,只能有一个所有者,只能有一个所属组,剩下的都是other(其他人)。
1、什么是ACL权限
比如我是一个老师,创建可一个共享文件夹,这个文件夹的所有者肯定是我,我把所有的学生都加入到一个组里,把文件夹的所属组定义到学生组。这样我就能够分别定义我操作文件夹的权限,和学生对文件夹的操作权限,和其他人(其他班的同学)对文件夹的操作权限。但是如果我的班级要有试听同学,试听同学对文件夹的操作权限和班中同学的权限肯定要不同。就会出现下面的情况。
- 如果定义所有者为试听同学,肯定不行。
第一,我创建的文件夹,我已经是所有者了,虽然可以改,但是感觉会非常混乱。
第二,一个文件的所有者只能有一个,而试听同学可能会有多个。 - 如果试听同学定义成other(其他人),肯定不行。
因为试听同学能看了,那其他班级的同学也就能看了。 - 如果试听同学定义成所属组,这样也不行。
因为要求试听同学要有一定的对文件夹操作的权限,但是和班级的正式同学要有区别。
这时就会发现用户对文件的身份不够用了,这就需要用到ACL权限了。
ACL概述:ACL是用于解决用户对文件身份不足的问题的。
上边的描述如下图:

2、开启ACL
# dumpe2fs命令是查询指定分区详细文件系统信息的命令
[root@localhost ~]# dumpe2fs -h /dev/sda3
选项:
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。
/dev/sda3文件内容,如下图:

这就表示Linux分区支持ACL权限。默认开启,查看一下,以防万一。
如果没有开启,手工开启分区的ACL权限。
# 重新挂载根分区,并挂载加入acl权限。(临时生效)
[root@localhost ~]# mount -o remount,acl /
也可以通过修改/etc/fstab文件,永久开启ACL权限。(永久生效)
注意:
/etc/fstab文件要慎重修改,改错了,系统可能启动不了。
# 加入acl
[root@localhost ~]# vi /etc/fstab
UUID-c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl(在/目录的该位置添加上acl) 1 1
# 重新挂载文件系统或重启动系统,使修改生效
[root@localhost ~]# mount -o remount /
3、ACL权限的相关命令
(1)设定ACL权限
[root@localhost ~]# setfacl [选项] 文件名
选项:
-m:设定ACL权限-b:删除ACL权限-x:删除单个用户的ACL权限
例如:设置ACL权限给用户。
# 格式:
[root@localhost ~]# setfacl -m u:用户名:权限(数字和字母都行) 文件名
# 示例
[root@localhost ~]# setfacl -m u:st:5 /www/
查看一下/www/文件夹,如下图所示:

(2)查询文件的ACL权限
执行命令:[root@localhost ~]# getfacl 文件名
结果如下图所示:

第一行有一个报错,错误是说不识别左侧的/(根目录标识),他推荐进入到根目录,用相对路径的方式进行查看。这个报错并不影响我们查看结果,可以忽略。
说明字段含义:
# file:www:文件名。#owner: sc:所有者。# group:tg:所属组。user::rwx:所有者权限。user:st:r-x:这里就是文件的ACL权限。group::rwx:所属组权限。mask::rwx:最大有效权限。other::--:其他人权限。
(3)设置文件ACL权限给用户组
# 命令格式
[root@localhost ~]# setfacl -m g:组名:权限 文件名
# 示例
[root@localhost ~]# setfacl -g u:st:5 /www/
(4)给文件夹和里边的文件同时赋予ACL权限
[root@localhost ~]# setfacl -m u:st:5 -R /www/
选项:-R:递归
注意:赋予递归ACL权限,只能赋予目录。也就是说
# setfacl -m u:st:5 -R /www/最后的/www/位置,一定要是文件夹,不能是文件。
如果文件被赋予了ACL权限,那么我们用ll命令查看到文件的权限,可能是不准确的,如果想要看准确的,需要通过getfacl 文件名命令查看。
如下图所示:

(5)ACL默认权限
上边的目录中如果再创建新的文件,新创建的文件是否有ACL权限?
答案是没有的。可以在命令中加入d选项,设置ACL默认权限,就可以解决。
[root@localhost ~]# setfacl -m d:u:aa:rwx -R /test
注意:默认权限只能赋予目录。
下图为设置ACL默认权限的文件夹,通过getfacl 文件名命令查看权限。

(6)总结
如果给目录赋予ACL权限,两条命令都要输入。
递归与默认的区别:
setfacl -m u:cc:rx -R soft/——》只对已经存在的文件生效。setfacl -m d:u:aa:rwx -R /test——》只对以后新建的文件生效。
拓展:
ACL权限,一旦递归之后,不可避免的出现权限溢出。
- 什么是权限溢出?
ACL权限递归之后,目录和目录中的文件都会有相同的执行权限。目录的执行权限是进入目录,而文件的执行权限就非常危险了,相当于赋予了文件最大权限。这个问题是没法解决的。
以后通过shell脚本,能解决ACL权限递归造成的权限溢出问题,判断文件夹里边的文件类型,文件赋予4,文件夹赋予5,这样就能解决。但这就不是一个单一命令了。所以正常情况下还是使用所有者,所属组,其他人权限来处理。
4、最大有效权限mask
最大有效权限mask值,是用来控制文件的最大有效权限的。
如下图所示:

mask值分别和所有者、所属组、其他人、ACL权限,相与的结果,来最终决定一个身份的权限是什么。
例如:设定一个文件的mask权限为rw-。
使用m:权限格式:
[root@localhost www]# setfacl -m m:6 /www/
结果如下图:

5、删除ACL权限
示例如下:
# 删除指定用户和用户组的ACL权限
[root@localhost ~]# setfacl -x u:st /project/
# 会删除文件的所有的ACL权限
[root@localhost ~]# setfacl -b project/
『学了就忘』Linux权限管理 — 53、ACL权限详解的更多相关文章
- 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明
目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...
- 『学了就忘』Linux用户管理 — 51、用户管理相关命令
目录 1.添加用户(useradd命令) 2.设定密码(passwd命令) 3.用户信息修改(usermod命令) 4.删除用户(userdel命令) 5.切换用户身份(su命令) 1.添加用户(us ...
- 『学了就忘』Linux服务管理 — 75、Linux系统中的服务
目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...
- 『学了就忘』Linux日志管理 — 92、日志轮替
目录 1.日志文件的命名规则 2.logrotate配置文件说明 3.logrotate配置文件的主要参数 1.日志文件的命名规则 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志 ...
- 『学了就忘』Linux日志管理 — 93、日志轮替补充
目录 1.把自己的日志加入日志轮替 (1)操作方式 (2)示例 2.logrotate命令 1.把自己的日志加入日志轮替 使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你 ...
- 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍
目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...
- 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作
目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...
- 『学了就忘』Linux软件包管理 — 43、RPM包的校验和证书
目录 1.RPM包的校验 (1)RPM包校验基本命令 (2)校验某个系统文件是否被修改举例 (3)验证内容中8个信息的具体内容 (4)文件类型有哪些 2.RPM包的证书 (1)数字证书 (2)数字证书 ...
- 『学了就忘』Linux软件包管理 — 44、在RPM包中提取文件
目录 1.RPM包中文件的提取 2.在RPM包中提取文件的操作 (1)cpio命令介绍 (2)提取RPM包中文件 1.RPM包中文件的提取 为什么要做这个事呢? 在操作Linux系统的时候误删除一个文 ...
- 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载
目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...
随机推荐
- CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程
CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生 ...
- 讲讲java中线程池的实现
今天跟一个同学谈到java中的线程池的实现,才发现有些知识点已经记不清了,所以特意把源码打开,对官方文档做了些说明. 其实这些理解了之后,读懂源码应该是没多大问题了,有感兴趣的小伙伴们可以看完说明后自 ...
- 395.至少有 K 个重复字符的最长子串
题目 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于k .返回这一子串的长度. 示例 1: 输入:s = "aaabb" ...
- [no code][scrum meeting] Alpha 11
项目 内容 会议时间 2020-04-17 会议主题 OCR紧急技术风险分析 会议时长 30min 参会人员 PM+OCR组成员 $( "#cnblogs_post_body" ) ...
- 2021.10.18考试总结[NOIP模拟76]
T1 洛希极限 不难发现每个点肯定是被它上一行或上一列的点转移.可以预处理出每个点上一行,上一列最远的能转移到它的点,然后单调队列优化. 预处理稍显ex.可以用并查集维护一个链表,记录当前点之后第一个 ...
- 联赛膜你测试20 T1 Simple 题解 && NOIP2017 小凯的疑惑 题解(赛瓦维斯特定理)
前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能 ...
- C语言中都有哪些常见的数据结构你都知道几个?
上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈.队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见 ...
- 笔记本加装SSD并装系统
1,首先了解笔记本配置信息 一般加装SSD都是120~256左右,并使用原有的机械硬盘:首先确定加装位置:1,是否支持M.2接口:假如支持,可以直接购买,拆机装上:我的笔记本不支持:所以考虑2,光驱的 ...
- Luogu P1538 迎春舞会之数字舞蹈 | 模拟
题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...
- hdu 1171 Big Event in HDU(背包DP)
题意: 杭电搬迁,有N种设备,每种设备有个价值V,数量M,要求将这些设备平分,使得平分后两边的总价值尽可能地相等. 输出两边各自的总价值. 思路: 背包DP后,P=所有的总价值/2,然后从P开始往两边 ...