Linux学习之ACL权限详解(十)
Linux系统ACL权限详解
目录
1 2 3 4 | ACL权限简介与开启 查看与设定ACL权限 最大有效权限与删除ACL权限 默认ACL权限和递归ACL权限 |
ACL权限简介与开启权限
ACL权限简介
1 | 用户权限管理始终是Linux系统管理中最重要的环节。大家对Linux / Unix的UGO权限管理方式一定不陌生,还有最常用的chmod命令。<br><br>为了实现一些比较复杂的权限管理,往往不得不创建很多的组,并加以详细的记录和区分。<br><br>有一种方法可以实现灵活的权限管理(文件的额外赋权机制)除了文件的所有者,所属组和其他人,可以对更多的用户设置权限,这就是访问控制列表(Access Control List )。 |
开启权限
1 | ACL权限是需要分区支持的,默认情况下分区是支持的,如果不支持就需要开启ACL权限。<br>这里只做介绍,可以跳过,因为现在linux系统分区默认支持ACL。 |
1 2 3 4 5 6 7 8 9 | 两种方法: 临时开启ACL权限: mount - o remount,acl / 永久开启分区ACL权限 1.vi / etc / fstab 2.mount - o remount / |
第一种方法很简单,下面只介绍第二种方法
打开文件
在第一行有效行的defaults后面加上acl
然后重新挂载一次根分区
mount -o remount /
查看与设定ACL权限
设定ACL权限
1 | setfacl [选项] 文件名 |
查看ACL权限
1 | getfacle 文件名 |
实际演示
比如有如下场景:
某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完之后,他在一个公有的Linux系统中创建了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是所有者,拥有读写可执行(rwx)权限,对于QQ群内的所有用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其他人,那么我们不给他访问/project 目录的任何权限,那么 /project 目录的所有者和所属组权限都是(rwx),其他人权限无。
问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完之后,我们允许他访问/project目录查看参考资料,但是不能进行修改,也就是拥有(r-x)的权限,这时候我们该怎么办呢?我们知道一个文件只能有一个所属组,我们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被允许的;如果将这个旁听的人视为目录/project 的其他人,并且将/project目录的其他人权限改为(r-x),那么不是旁听的人也能访问我们/project目录了,这显然也是不被允许的。怎么解决呢?
下面 我们 来完成这整个过程
第一步:创建一个/project目录
第二步:新建两个用户(在这个场景里属于群内学员)
第三步:新建一个组
第四步:将两个用户添加到组里面
第五步:更改目录的所有者和所属组
第六步:赋予权限770
第七步:查看权限
第八步:新建一个用户 (别的群的学员)
第九步:给这个用户设置ACL权限,权限为r-w
第十步:查看/project的ACL
最大有效权限与删除ACL权限
最大有效权限
可能会有点不好理解,什么意思呢?
如果A为mask权限 ,B为ACL权限,and为用户的有效权限
其实到这里,大家就会明白,mask权限是用来约束用户权限的,如果我们给用户给的ACL权限过大就不好了,所以我们事先把mask权限设置好,这样用户的有效权限就不会超过mask权限了。
查看与设置mask权限
1 | 查看mask权限<br>getfacl 文件名 <br><br>设置mask权限<br>setfacl - m m:权限 文件名 |
删除ACL权限
删除指定用户的 ACL 权限
1 | setfacl - x u:用户名 文件名 |
删除指定用户组的 ACL 权限
1 | setfacl - x g:组名 文件名 |
删除文件的所有 ACL 权限
1 | setfacl - b 文件名 |
默认ACL权限和递归ACL权限
递归 ACL 权限
通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限。
1 | setfacl - m u:用户名:权限 - R 文件名 |
默认 ACL 权限
如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限。
1 | setfacl - m d:u:用户名:权限 文件名 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?