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

 [root@localhost ~]# setfacl 选项 文件名

选项:

   选项    选项说明
-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权限的更多相关文章

  1. 权限管理——ACL权限

    权限管理 ACL权限 用于解决用户对文件身份不足 命令:[root@localhost ~]#dumpe2fs -h /dev/sd3 作用:查询指定分区详细的文件系统给信息 选项 -h:仅显示超级块 ...

  2. Linux 权限管理-ACL权限

    ACL权限是为了在现有的所有者.所属组.其他人不够使用的情况下使用的,使用它必须保证文件所在的分区支持ACL df -h:查看系统所有分区信息 dumpe2fs -h /dev/vda1,可以查看分区 ...

  3. Linux UGO和ACL权限管理

    自主访问控制(Discretionary Access Control, DAC)是指对象(比如程序.文件.进程)的拥有者可以任意修改或者授予此对象相应的权限.Linux的UGO(User, Grou ...

  4. linux的用户扩充权限管理acl和用户使用系统资源的限制

    用户扩充权限管理 acl 1.扩充权限的方式 文件扩充权限 ACL 磁盘配额 2.文件扩充权限 1.安全位 安全位   ---set位    SUID  SGID   set仅可以加给 u.g, 如: ...

  5. Linux学习之ACL权限详解(十)

    Linux系统ACL权限详解 目录 ACL权限简介与开启 查看与设定ACL权限 最大有效权限与删除ACL权限 默认ACL权限和递归ACL权限 ACL权限简介与开启权限 ACL权限简介 用户权限管理始终 ...

  6. Linux课程---10、权限管理(权限有哪几种)

    Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x---  2 root root  4096 Jan 20 19:39 mnt ...

  7. 用户和组的权限管理/特殊权限和ACL(个人笔记)

    个人学习笔记总结 内容包括解释Linux的安全模型解释用户帐号和组群帐号的目的用户和组管理命令理解并设置文件权限默认权限特殊权限ACL介绍安全3A资源分派:Authentication:认证Auth ...

  8. linux权限管理-特殊权限

    目录 linux权限管理-特殊权限 一,特殊权限 Linux权限属性chattr概述 linux进程掩码umask linux权限管理-特殊权限 一,特殊权限 1.suid(4000) SetUID( ...

  9. linux权限管理-基本权限

    目录 linux权限管理-基本权限 权限修改命令chmod linux权限管理-基本权限 权限 针对某些文件和进程,对用户进行限制 权限与用户的关系 rwx rwx r-x User Group Ot ...

随机推荐

  1. address-already in use 以及查看端口

    https://stackoverflow.com/questions/19071512/socket-error-errno-48-address-already-in-use

  2. php 防止刷新重复下载文件

    在超链接中增加随机数. <a href="./index.php?module=operation&action=download&url=D:\WW\WlequPho ...

  3. iframe定位获取

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ThinkPHP自动填充实现无限级分类的方法

    这篇文章主要介绍了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP项目开发中非常实用的一个技巧,需要的朋友可以参考下   本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是 ...

  5. [前端开发] 未来趋势“无后端”的web应用开发模式

    最近看到前端趋势2013大会上的一篇文章,题目是<各位快看,不用后端>,觉得有点意思,恰好近期的一次讨论及半年前的一次开发实践也涉及到这种模式,简单谈谈我的想法. 不得不说,文章的题目确实 ...

  6. [浪风分享] -- 系列百度云管家 V2.1.0 单文件版-分享必用的神器

    废话不多说,神器送上 百度云管家 V2.1.0 更新时间:2013年05月22日更新内容:1.支持云端文件管理:删除.重命名.新建文件夹.移动2.支持缩略图浏览模式3.支持三种文件排序方式:按修改时间 ...

  7. echarts Y轴刻度保留几位小数

    yAxis: [ { type: 'value', name: '雨量(mm)', nameLocation: 'start', inverse: true, axisLabel: {         ...

  8. jQuery + Cookie引导客户操作

    网址:http://www.sucaihuo.com/js/707.html 示例:http://www.sucaihuo.com/jquery/7/707/demo/

  9. ASP.NET动态网站制作(30)-- WEBService

    前言:继续讲正则表达式,然后介绍一下webservice. 内容: 1.匹配QQ号的正则表达式:^[1-9]\d{4,10}$:匹配手机号的正则表达式:^(0|86)?(13|14|15|18)[0- ...

  10. Unity与Android交互实现

    主要参考了这篇文章: Unity与Android交互方案优化版 链接:https://www.jianshu.com/p/86b275da600e 自己的实现(unity获取内存和温度): andro ...