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 ...
随机推荐
- CDH配置JAVA_HOME
jdk成功安装 java -version 正确显示版本 echo $JAVA_HOME 正确输出路径 但CDH链接数据库还是报错: Error: JAVA_HOME is not set and ...
- mysql的两个备份语句
适合多引擎混合(例如:myisam与innodb混合)的备份命令如下: mysqldump -A -R --triggers --master-data=2 --single-transaction ...
- 个人博客开发之 全局配置文件settings设置
项目源码下载:http://download.vhosts.cn # -*- coding: utf-8 -*- """ Django settings for cpyb ...
- JVM架构和GC垃圾回收机制详解
JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行 ...
- C指针类型小结
要理解复杂的指针类型其实很简单,一个类型里会出现很多运算符,它们也像普通表达式一样,有优先级. 原则: 从变量名开始,根据运算符优先级结合,一步一步分析. 下面让我们先从简单的类型开始慢慢分析吧: i ...
- Android APK反编译就这么简单 具体解释
在学习Android开发的过程你.你往往会去借鉴别人的应用是怎么开发的,那些美丽的动画和精致的布局可能会让你爱不释手,作为一个开发人员.你可能会非常想知道这些效果界面是怎么去实现的,这时,你便能够对改 ...
- Android-ViewPagerIndicator框架使用——TitlePageIndicator
前言:TitlePageIndicator这个就是效果比较好. 一:定义布局文件simple_titles: <LinearLayout xmlns:android="http://s ...
- OpenCV学习笔记十八:opencv_flann模块
一,简介: Fast Library for Approximate Nearest Neighbors (FLANN)算法库.
- CentOS6.8部署SVN
第1章 安装svn服务 1.1 准备操作系统并查看系统环境 [root@localhost ~]# cat /etc/redhat-release CentOS release 6.8 (Final) ...
- JEECMS 2.4.2 之添加新的可扩展的ftl模版文件、自定义方法
Demo: <@cms.CfgList isPage='1' league='0' recommend='0' lala='0' hot='1' memberId='0' pageNo=page ...