Linux权限管理之ACL权限
注:转载自:https://www.cnblogs.com/ysocean/p/7801329.html
目录
通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow;然后介绍了用户组信息文件/etc/group,用户组密码文件/etc/gshadow。用户的家目录,以及用户的模板目录;Linux用户和用户组管理之用户管理命令 讲解了管理用户和用户组的命令,包括新建、修改、查看等等以及用的比较多的切换用户命令 su。那么用户管理结束之后,我们将进入linux的权限管理介绍,本篇博客介绍的是Linux权限管理的ACL权限。
1、什么是 ACL 权限?
比如有如下场景:
某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完之后,他在一个公有的Linux系统中创建了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是所有者,拥有读写可执行(rwx)权限,对于QQ群内的所有用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其他人,那么我们不给他访问/project 目录的任何权限,那么 /project 目录的所有者和所属组权限都是(rwx),其他人权限无。
问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完之后,我们允许他访问/project目录查看参考资料,但是不能进行修改,也就是拥有(r-x)的权限,这时候我们该怎么办呢?我们知道一个文件只能有一个所属组,我们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被允许的;如果将这个旁听的人视为目录/project 的其他人,并且将/project目录的其他人权限改为(r-x),那么不是旁听的人也能访问我们/project目录了,这显然也是不被允许的。怎么解决呢?
我们想想windows系统里面给某个文件分配权限的办法:
如上图,我们想要让某个用户不具备某个权限,直接不给他分配这个目录的相应权限就行了。那么对应到Linux系统也是这样,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。
2、查看分区 ACL 权限是否开启:dump2fs
我们看某个文件(Linux系统中目录也是文件,一切皆是文件)是否支持 ACL 权限,首先要看文件所在的分区是否支持 ACL 权限。
①、查看当前系统有哪些分区:df -h
②、查看指定分区详细文件信息:dumpe2fs -h 分区路径
下面是查看 根分区/ 的详细文件信息
3、开启分区 ACL 权限
①、临时开启分区 ACL 权限
1
|
mount -o remount,acl / |
重新挂载根分区,并挂载加入 acl 权限。注意这种命令开启方式,如果系统重启了,那么根分区权限会恢复到初始状态。
②、永久开启分区 ACL 权限
一、修改配置文件 /etc/fstab
上面是修改根分区拥有 acl 权限
1
|
UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 / ext4 defaults,acl 1 1 |
二、重新挂载文件系统或重启系统,使得修改生效
1
|
mount -o remount / |
4、设定 ACL 权限:setfacl 选项 文件名
①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
注意:我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。mask 权限下面我们会详细讲解
范例:所有者root用户在根目录下创建一个文件目录/project,然后创建一个QQ群所属组,所属组里面创建两个用户zhangsan和lisi。所有者和所属组权限和其他人权限是770。
然后创建一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x。
目录 /project 的所有者和所属组其他人权限设定为 770。接下来我们创建旁听用户 pt,并赋予 acl 权限 rx
为了验证 pt 用户对于 /project 目录没有写权限,我们用 su 命令切换到 pt 用户,然后进入 /project 目录,在此目录下创建文件,看是否能成功:
上面提示权限不够,说明 acl 权限赋予成功,注意如下所示,如果某个目录或文件下有 + 标志,说明其具有 acl 权限。
5、查看 ACL 权限:getfacl 文件名
6、最大有效权限 mask
前面第4点我们讲过,我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。
我们通过 getfacl 文件名 也能查看 mask 的权限,那么我们怎么设置呢?
1
|
setfacl -m m:权限 文件名 |
7、删除 ACL 权限
①、删除指定用户的 ACL 权限
1
|
setfacl -x u:用户名 文件名 |
②、删除指定用户组的 ACL 权限
1
|
setfacl -x g:组名 文件名 |
③、删除文件的所有 ACL 权限
1
|
setfacl -b 文件名 |
8、递归 ACL 权限
通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限。
1
|
setfacl -m u:用户名:权限 -R 文件名 |
9、默认 ACL 权限
如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限。
1
|
setfacl -m d:u:用户名:权限 文件名 |
10、总结
本篇博客我们介绍了权限管理的ACL权限,通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,在实际权限管理中还是用的比较多的。
Linux权限管理之ACL权限的更多相关文章
- Linux系列教程(十六)——Linux权限管理之ACL权限
通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...
- linux 账号管理与ACL权限设定
此文涉及命令:useradd.usermod.userdel.passwd.chage.setfacl.getfacl.su.sudo.fingr.chfn.chsh.id.groupadd.grou ...
- Linux 账号管理与 ACL 权限配置
要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...
- 第十四章、Linux 账号管理与 ACL 权限配置
1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...
- 第14章 Linux账号管理与ACL权限设置
Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和 ...
- Linux 账号管理及ACL权限设置,PAM模块简介
有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...
- Linux中权限管理之ACL权限
1.简介: a.作用: 是为了防止权限不够用的情况,一般的权限有所有者.所属组.其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限 b.故事背景: 一个老师,给一个班的学员上课,他在l ...
- Linux权限管理:ACL 权限
1.ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机 ...
- Linux账号管理与ACL权限设置
1:UID和GID 用户ID:在/etc/passwd中 群组ID:在/etc/group中 2:有效群组与初始群组 初始群组:/etc/passwd文件里面的GID 有效群组: groups #查看 ...
随机推荐
- Java语法基础学习DayFourteen(IO)
一.java.io.FIle类 1.特点 (1)凡是与输入.输出相关的类.接口等都定义在java.io包下. (2)File是一个类,使用构造器创建对象,此对象对应一个文件(.txt .avi .do ...
- 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问
在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...
- 剑指Offer 8. 跳台阶 (递归)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题目地址 https://www.nowcoder.com/pract ...
- 3.oracle与mysql的区别
1.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的 ...
- java基础(4)继承和多态
1 继承 1.1 继承概述 继承要解决的问题:共性抽取 1.2 继承的格式 class 父类 { ... } class 子类 extends 父类 { ... } 1.3 继承中成员变量的特点(变 ...
- Vue.js学习使用心得(四)——组件
一.组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界 ...
- Nginx调试入门
1.查看nginx.conf配置文件是否有错误 ./nginx -t -c ./nginx.conf #可以看到,正常情况下语法没问题,配置文件测试成功了,-t测试-c配置文件 如果我故意加入错误 ...
- day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁
一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...
- IDEA整合Junit测试框架
首先说一下为什么会有这篇文章吧,百度没有找到一个我想要的答案.也可以理解为,作为一个java菜鸟,一个对idea和jar理解不深的人,想跟着博客一步步操作完之后发现,哎不行,之后的牢骚吧.主要是为了记 ...
- buffers和cached的区别
原文:https://www.cnblogs.com/kevingrace/p/5991604.html buffers和cached解释 ============================== ...