Linux权限管理 ACL权限
ACL权限简介
在普通权限中,用户对文件只有三种身份ugo,分别为属主(u)、属组(g)和其他人(o);每种用户身份拥有读(read)、写(write)和执行(execute)三种权限。但是在实际工作中,系统上chmod管理权限,有时不能满足需求,需要给个别用户(非所有者,非所属组)赋予权限,因此使用acl权限。
ACL可以设置特定用户或者用户组对于一个文件/文件夹的操作权限. 需要掌握的命令也只有三个: getfacl, setfacl, chacl。
ACL是Access Control List(访问控制列表)的缩写,不过在Linux系统中,ACL用于设定用户针对文件的权限。
ACL权限开启
谨记在Linux中 ACL权限针对的是分区,所以要给某个文件设置ACL权限时,首先要查看文件所在的分区是否开启了ACL权限。
查看 ACL 权限是否开启
使用mount 和 dumpe2fs 命令就可以查看ACL是否开启
1. 使用mount命令找到系统中已经挂载的分区
[root@localhost ~]# mount
......省略其他不相关的输出...........
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
2.使用dumpe2fs查询指定分区文件系统详细信息
-h 含义为仅显示超级块中的信息,而不显示磁盘块组的详细信息;
[root@localhost ~]# dumpe2fs -h /dev/sda1
.......省略其他不相关的输出...........
Default mount options: user_xattr acl
大家可以看到,我们的 ACL 权限是 /dev/sda1 分区的默认挂载选项,所以不需要手工挂载。
手动添加ACL权限
当 Linux 系统没中挂载分区没有开启ACL权限时就可以手动开启ACL权限
1.临时开启分区 ACL 权限
通过命令可以临时开启分区的ACL权限,如果系统重启了,那么分区权限会恢复到初始状态。
[root@localhost ~]# mount -o remount, acl /
重新挂载根分区,并加入ACL权限
2.永久开启分区 ACL 权限
通过 vi打开 /etc/fstab 文件 加入ACL权限
[root@localhost ~]#vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 /ext4 defaults, acl
重新挂载文件系统或重启系统,使修改生效
[root@localhost ~]# mount -o remount /
ACL权限查看和设置
分别使用 getfacl 和 setfacl命令就可以对文件进行权限的查看和设置
1.查看ACL权限
[root@localhost ~]# getfacle 文件名
2.设置ACL权限
选项:
| 选项 | 选项说明 |
| -m | 设定 ACL 权限。
给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名 给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名 |
|
-x |
删除指定的 ACL 权限 |
| -b | 删除所有的 ACL 权限 |
| -d | 设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限 |
| -k | 删除默认 ACL 权限 |
| -R | 递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效 |
说明:给用户或用户组设定 ACL 权限其实并不是真正设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。
给用户添加ACL权限
例如:在一个班级有教师(root) 学生(zhangdan,lisi) 试听生(wangwu),project为他们共享的一个文件目录。其中我们要求 root 是 /project 目录的属主,权限是 rwx;tgroup 是此目录的属组,tgroup 组中拥有班级学员 zhangsan 和 lisi,权限是 rwx;其他人的权限是 0。这时,试听学员 wangwu 来了,她的权限是 r-x。我们来看具体的分配命令。
1.添加需要试验的用户和用户组,省略设定密码的过程
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# useradd lisi
[root@localhost ~]# useradd wangwu
[root@localhost ~]# groupadd tgroup
2.建立需要分配权限的目录,改变/project目录的属主和属组,指定/project目录的权限
[root@localhost ~]# mkdir /project
[root@localhost ~]# chown root:tgroup /project/
[root@localhost ~]# chmod /project/
[root@localhost ~]# ll -d /project/
drwxrwx--- 2 root tgroup 1787 Nov 5 20:20 /project/
查看权限,已经符合要求了
3.给用户st赋予r-x权限,使用"u:用户名:权限" 格式
如果试听生要访问 /project目录,则需要给他设置一个ACL权限
[root@localhost ~]# setfacl -m u:st:rx /project/
[root@localhost /]# cd /
[root@localhost /]# ll -d project/
drwxrwx---+ root tgroup 1787 Nov 5 20:20 project/
使用ls-l査询时会发现,在权限位后面多了一个"+",表示此目录拥有ACL权限
这样试听生也拥有了/project目录的读写权限
给用户组赋予 ACL 权限
添加测试组
[root@localhost /]# groupadd tgroup2
给组tgroup2纷配ACL权限,使用"g:组名:权限"格式
[root@localhost /]# setfacl -m g:tgroup2:rwx project/
[root@localhost /]# ll -d project/
drwxrwx---+ root tgroup1787 Nov 5 20:20 project/
最大有效权限mask
mask 是用来指定最大有效权限的。mask 的默认权限是 rwx,如给wangwu 用户赋予了 r-x 的 ACL 权限,则需要和 mask 的 rwx 权限"相与"才能得到 wangwu 的真正权限,也就是 r-x "相与"rwx 出的值是 r-x,所以 wangwu 用户拥有 r-x 权限。
如果把 mask 的权限改为 r--,和 wangwu 用户的权限相与,也就是 r--"相与"r-x 得出的值是 r--,wangwu 用户的权限就会变为只读。大家可以这么理解:用户和用户组所设定的权限必须在 mask 权限设定的范围之内才能生效,mask权限就是最大有效权限。
不过我们一般不更改 mask 权限,只要给予 mask 最大权限 rwx,那么任何权限和 mask 权限相与,得出的值都是权限本身。也就是说,我们通过给用户和用户组直接赋予权限,就可以生效,这样做更直观。
修改最大有效权限的命令如下:
[root@localhost /]# setfacl -m m:rx project/
设定mask权限为r-x,使用"m:权限"格式
默认ACL权限和递归ACL权限
给 /project 目录设定了 ACL 权限后,在这个目录中新建一些子文件和子目录,这些文件并没有继承ACL权限
默认 ACL 权限指的是针对父目录中新建立的文件和目录会继承父目录的 ACL 权限,格式是"setfacl-m d:u:用户名:权限 文件名";
递归 ACL 权限指的是针对父目录中已经存在的所有子文件和子目录继承父目录的 ACL 权限,格式是"setfacl-m u:用户名: 权限 -R 文件名"。
设置默认ACL权限
使用"d:u:用户名:权限"格式设定默认ACL权限
[root@localhost /]# setfacl -m d:u:st:rx /project/
设置递归ACL权限
-R递归
[root@localhost project]# setfacl -m u:st:rx -R/project/
删除ACL权限
删除指定的ACL权限:
[root@localhost /]# setfacl -x u:st /project/
删除指定用户和用户组的ACL权限
删除所有ACL权限:
[root@localhost /]# setfacl -b project/
会删除文件的所有ACL权限
Linux权限管理 ACL权限的更多相关文章
- 权限管理——ACL权限
权限管理 ACL权限 用于解决用户对文件身份不足 命令:[root@localhost ~]#dumpe2fs -h /dev/sd3 作用:查询指定分区详细的文件系统给信息 选项 -h:仅显示超级块 ...
- Linux 权限管理-ACL权限
ACL权限是为了在现有的所有者.所属组.其他人不够使用的情况下使用的,使用它必须保证文件所在的分区支持ACL df -h:查看系统所有分区信息 dumpe2fs -h /dev/vda1,可以查看分区 ...
- Linux UGO和ACL权限管理
自主访问控制(Discretionary Access Control, DAC)是指对象(比如程序.文件.进程)的拥有者可以任意修改或者授予此对象相应的权限.Linux的UGO(User, Grou ...
- linux的用户扩充权限管理acl和用户使用系统资源的限制
用户扩充权限管理 acl 1.扩充权限的方式 文件扩充权限 ACL 磁盘配额 2.文件扩充权限 1.安全位 安全位 ---set位 SUID SGID set仅可以加给 u.g, 如: ...
- Linux学习之ACL权限详解(十)
Linux系统ACL权限详解 目录 ACL权限简介与开启 查看与设定ACL权限 最大有效权限与删除ACL权限 默认ACL权限和递归ACL权限 ACL权限简介与开启权限 ACL权限简介 用户权限管理始终 ...
- Linux课程---10、权限管理(权限有哪几种)
Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x--- 2 root root 4096 Jan 20 19:39 mnt ...
- 用户和组的权限管理/特殊权限和ACL(个人笔记)
个人学习笔记总结 内容包括解释Linux的安全模型解释用户帐号和组群帐号的目的用户和组管理命令理解并设置文件权限默认权限特殊权限ACL介绍安全3A资源分派:Authentication:认证Auth ...
- linux权限管理-特殊权限
目录 linux权限管理-特殊权限 一,特殊权限 Linux权限属性chattr概述 linux进程掩码umask linux权限管理-特殊权限 一,特殊权限 1.suid(4000) SetUID( ...
- linux权限管理-基本权限
目录 linux权限管理-基本权限 权限修改命令chmod linux权限管理-基本权限 权限 针对某些文件和进程,对用户进行限制 权限与用户的关系 rwx rwx r-x User Group Ot ...
随机推荐
- Harmonic Number 求Hn; Hn = 1 + 1/2 + 1/3 + ... + 1/n; (n<=1e8) T<=1e4; 精确到1e-8; 打表或者调和级数
/** 题目:Harmonic Number 链接:https://vjudge.net/contest/154246#problem/I 题意:求Hn: Hn = 1 + 1/2 + 1/3 + . ...
- windows中控制台窗口和普通窗口有什么区别?
1. 窗口都是windows标准窗口,有窗口句柄,但是console window没有消息循环,直接从缓冲区读数据,显示数据. windows中普通窗口都有自己的窗口过程, 我可以使用SetWindo ...
- 浅谈.net平台下深拷贝和浅拷贝
在.net类库中,对象克隆广泛存在于各种类型的实现中,凡是实现了ICloneable接口的类型都具备克隆其对象实例的能力.所以本文讲述的深拷贝和浅拷贝也是在实现ICloneable接口的基础上进行的 ...
- C和MATLAB中:同时对多个变量连续赋值
C语言中绝对不可以连续赋值!!!这是C语言的基本要求. 可以int a,b,c; a=5;b=5;c=5; 或者int a =5;int b=5;int c=5; 但是! 绝对不可以:int a=b= ...
- 浅谈usort、uasort、uksort
前言:这三个函数都是php提供给开发者自定义的数组排序函数. 1.usort:按值排序,索引重新定义 a.基础案例 //自定义比较的函数 function mysort($a,$b){ if($a = ...
- 加载Chrome&Firefox配置
一.加载Chrome配置 分析: Chrome加载配置的方法,只需要改下面一个地方,就是将username改成你本机电脑的名字(不要用中文) '--user-data-dir=C:\Users\use ...
- ios - UILabel_长按复制
1.添加长按的手势 UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWith ...
- Python gevent学习笔记
gevent是Python的一个用于网络IO的函数库,其中应用到了 coroutine(协同程序) 的思想.首先来了解下目前网络框架的几种基本的网络I/O模型: 阻塞式单线程:这是最基本的I/O模型, ...
- Yii2 Queue队列
github地址:https://github.com/yiisoft/yii2-queue 问题:https://github.com/yiisoft/yii2-queue/issues Jobs ...
- jquery 插件 起步代码
/** * Created by W.J.Chang on 2014/6/25. */ ;(function($) { var methods= { check: function() { retur ...