Linux系统ACL权限详解

目录

ACL权限简介与开启
查看与设定ACL权限
最大有效权限与删除ACL权限
默认ACL权限和递归ACL权限

  

ACL权限简介与开启权限

ACL权限简介

用户权限管理始终是Linux系统管理中最重要的环节。大家对Linux/Unix的UGO权限管理方式一定不陌生,还有最常用的chmod命令。

为了实现一些比较复杂的权限管理,往往不得不创建很多的组,并加以详细的记录和区分。

有一种方法可以实现灵活的权限管理(文件的额外赋权机制)除了文件的所有者,所属组和其他人,可以对更多的用户设置权限,这就是访问控制列表(Access Control List)。

  

开启权限

ACL权限是需要分区支持的,默认情况下分区是支持的,如果不支持就需要开启ACL权限。
这里只做介绍,可以跳过,因为现在linux系统分区默认支持ACL。

  

两种方法:
临时开启ACL权限:
mount -o remount,acl / 永久开启分区ACL权限
1.vi /etc/fstab 2.mount -o remount /

  

第一种方法很简单,下面只介绍第二种方法

打开文件

在第一行有效行的defaults后面加上acl

然后重新挂载一次根分区

mount -o remount /

查看与设定ACL权限

设定ACL权限

setfacl [选项] 文件名

  

查看ACL权限

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权限

查看mask权限
getfacl 文件名 设置mask权限
setfacl -m m:权限 文件名

  

删除ACL权限

删除指定用户的 ACL 权限

setfacl -x u:用户名 文件名

  

删除指定用户组的 ACL 权限

setfacl -x g:组名 文件名

  

删除文件的所有 ACL 权限

setfacl -b 文件名

  

默认ACL权限和递归ACL权限

递归 ACL 权限

通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限。

setfacl -m u:用户名:权限 -R 文件名

  

默认 ACL 权限

如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限。

setfacl -m d:u:用户名:权限 文件名

  

最新文章

  1. 关于微软HttpClient使用,避免踩坑
  2. RTMP流媒体播放过程
  3. 打开office word excel弹出visual studio 2008
  4. Thread.join简单介绍
  5. JavaScript如何检查网站是可以访问
  6. [原创]迈出NIOS的第一步,HelloNIOS
  7. Cwinux源码解析(三)
  8. platform总线globalfifo驱动
  9. ASP.NET MVC- VIEW Overview Part 1
  10. 动态规划 is beginning。。。。。。。。。
  11. asp.net MVC 使用JQuery.Ajax
  12. 【spring教程之二】spring注射剂xml构造方法参数
  13. 3,postman的变量写法和collection
  14. Android为TV端助力 自定义通知栏
  15. eric6中ui文件编译失败,提示找不到puicc5
  16. java stackoverflowerror与outofmemoryerror区别(转)
  17. python+selenium:点击页面元素时报错:WebDriverException: Message: Element is not clickable at point (1372.5, 9.5). Other element would receive the click: <li style="display: list-item;" id="tuanbox"></li>
  18. 异步IO
  19. VMware-克隆机,网卡修改
  20. Android 开发工具类 30_sendXML

热门文章

  1. Go 语言读书笔记
  2. js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结
  3. Spring+Struts+Mybatis+Shiro整合配置
  4. 用conda管理Python包
  5. linux学习笔记1——指令的基本格式及基本文件操作
  6. Makefile经典教程(一个很棒很清晰的讲解)【转】
  7. MHL技术剖析,比HDMI更强【转】
  8. dubbo系列三、架构介绍及各模块关系
  9. 巧用CASE WHEN 验证用户登录信息
  10. 【转】OpenCV—imread读取数据为空