首页 windows软件 手机软件 驱动下载 电脑教程 专题合集
当前位置: 首页 > 电脑教程 > Linux教程 > Linux系统中文件ACL权限解读

Linux系统中文件ACL权限解读

时间:2018-08-13 18:03:25

小编:动力软件园

阅读:

在Linux学习中,平时只学了AUO权限的管理,只知道这些比较肤浅,其实遇到复杂用户权限管理的时候,就要再深入一些学习,就需要用到ACL权限管理了。什么是ACL权限管理?其实很简单就是给文件加一个ACL访问权限,和网络中的ACL一样原理一样,就是加个访问策略。学习完ACL还建议大家学习一下suid,guid,sticky 这几个权限。融汇贯通后基本就可以拿SSH当FTP服务使用了。


此文为转载过来的文章,应该也是志同道合的同学学习后整理的,在此表示感谢。

             

1、什么是 ACL 权限


  比如有如下场景:


  某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完之后,他在一个公有的Linux系统中创建了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是所有者,拥有读写可执行(rwx)权限,对于QQ群内的所有用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其他人,那么我们不给他访问/project 目录的任何权限,那么 /project 目录的所有者和所属组权限都是(rwx),其他人权限无。


  问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完之后,我们允许他访问/project目录查看参考资料,但是不能进行修改,也就是拥有(r-x)的权限,这时候我们该怎么办呢?我们知道一个文件只能有一个所属组,我们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被允许的;如果将这个旁听的人视为目录/project 的其他人,并且将/project目录的其他人权限改为(r-x),那么不是旁听的人也能访问我们/project目录了,这显然也是不被允许的。怎么解决呢?


1.png

  


  我们想想windows系统里面给某个文件分配权限的办法:


  2.png


  如上图,我们想要让某个用户不具备某个权限,直接不给他分配这个目录的相应权限就行了。那么对应到Linux系统也是这样,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。


  


2、查看分区 ACL 权限是否开启:dump2fs


  我们看某个文件(Linux系统中目录也是文件,一切皆是文件)是否支持 ACL 权限,首先要看文件所在的分区是否支持 ACL 权限。


  ①、查看当前系统有哪些分区:df -h


3.png

  


  ②、查看指定分区详细文件信息:dumpe2fs -h 分区路径


  下面是查看 根分区/ 的详细文件信息

4.png

  


3、开启分区 ACL 权限


  ①、临时开启分区 ACL 权限



mount -o remount,acl /

  重新挂载根分区,并挂载加入 acl 权限。注意这种命令开启方式,如果系统重启了,那么根分区权限会恢复到初始状态。


  ②、永久开启分区 ACL 权限


  一、修改配置文件 /etc/fstab


  5.png


  上面是修改根分区拥有 acl 权限


UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 /                       ext4    defaults,acl        1 1

  二、重新挂载文件系统或重启系统,使得修改生效


mount -o remount /

 


4、设定 ACL 权限:setfacl 选项 文件名


  6.png


  ①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名


  ②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名


  注意:我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。mask 权限下面我们会详细讲解


  范例:所有者root用户在根目录下创建一个文件目录/project,然后创建一个QQ群所属组,所属组里面创建两个用户zhangsan和lisi。所有者和所属组权限和其他人权限是770。


     然后创建一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x。


   7.png


  目录 /project 的所有者和所属组其他人权限设定为 770。接下来我们创建旁听用户 pt,并赋予 acl 权限 rx


  8.png


  为了验证 pt 用户对于 /project 目录没有写权限,我们用 su 命令切换到 pt 用户,然后进入 /project 目录,在此目录下创建文件,看是否能成功:


  9.png


  上面提示权限不够,说明 acl 权限赋予成功,注意如下所示,如果某个目录或文件下有 + 标志,说明其具有 acl 权限。


  


 10.png


5、查看 ACL 权限:getfacl 文件名


  

11.png

 


6、最大有效权限 mask


  前面第4点我们讲过,我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。


  我们通过 getfacl 文件名 也能查看 mask 的权限,那么我们怎么设置呢?



setfacl -m m:权限 文件名

  

11.png

 


7、删除 ACL 权限


  ①、删除指定用户的 ACL 权限



setfacl -x u:用户名 文件名

  ②、删除指定用户组的 ACL 权限



setfacl -x g:组名 文件名

  ③、删除文件的所有 ACL 权限



setfacl -b 文件名

 


8、递归 ACL 权限


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



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

 


9、默认 ACL 权限


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



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

 


10、总结


  本篇博客我们介绍了权限管理的ACL权限,通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,在实际权限管理中还是用的比较多的。


相关阅读
  • VIM编辑器介绍和安装配置
    VIM编辑器介绍和安装配置
    vim是一款功能强大、支持各种插件、配置极为灵活的编辑器,且支持多种主流OS(linux、Unix、mac、windows),可用来各种编程预言的coding和文件编辑,用习惯了vim,你会体会到它是如此的高效和便捷。
    时间:2019-04-04
  • linux如何解压缩rar文件
    linux如何解压缩rar文件
    在linux中解压缩rar文件的方法。
    时间:2019-01-14
  • 启动Docker容器并进入操作的几种方法总结
    启动Docker容器并进入操作的几种方法总结
    在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。
    时间:2019-01-05
  • win平台和linux平台下mysql导入导出sql文件
    win平台和linux平台下mysql导入导出sql文件
    在日常的维护中,mysql数据库使用是最多的数据库了。现在都去o了。你懂的。整理了一些常用的知识点。在不同的系统下不同的导入导出方法。windows平台下导出:导出整个数据库
    时间:2019-01-04
  • linux下awk命令用法
    linux下awk命令用法
    [root@hehe ~]# cat 2018-12-06-www.pw88.com-access.log | awk -F' ' '{print $1,$4,$5}'223.166.151.243[06/Dec/2018:00:06:08 +0800]207.46.13.94[06/D
    时间:2018-12-19
  • linux系统cut命令用法
    linux系统cut命令用法
    cut命令知识点 cut -d ':' -f 1 aa.txt cut [选项] 文件名 选项 -d “:” 冒号分隔符-f 2 ,4 第几列-f 和后边的1 可以有空格也可以不要空格。
    时间:2018-12-19
  • linux系统sed命令用法
    linux系统sed命令用法
    sed是轻量级流编辑器(可以从管道符里接受命令结果 可以修改命令也可以修改文本) 和vim一样, vim只能修改文件, 可以执行 增加 删除 选取 替换sed 【选项】‘动作’文件
    时间:2018-12-19
  • linux查看raid信息方法
    linux查看raid信息方法
    查看raid信息[root@localhost ~]# mdadm --detail -v /dev/md127/dev/md127: Version : 1.1 Creation Time : Thu Sep 15 06:55:25 2011 Raid Level : raid1
    时间:2018-12-18
  • linux系统fdisk分区命令详解
    linux系统fdisk分区命令详解
    1、首先查看分区[root@localhost ~]# fdisk -lDisk /dev/vda: 42.9 GB,42949672960 bytes16 heads, 63sectors/track, 83220 cylindersUnits = cylinders of1008 * 512 = 51
    时间:2018-12-18
  • linux系统date参数表
    linux系统date参数表
    时间:2018-12-18
  • find: 遗漏“-exec”的参数解决办法
    find: 遗漏“-exec”的参数解决办法
    -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 {} 花括号代表前面find查找出来的文件名。
    时间:2018-12-05
  • 记一次Linux安全事故与数据恢复案例分析
    记一次Linux安全事故与数据恢复案例分析
    Linux数据丢失可以恢复吗?linux数据恢复工具有哪些?
    时间:2018-10-19
  • linux modprobe命令作用
    linux modprobe命令作用
    modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载
    时间:2018-07-12
  • Linux系统运维常用软件介绍、Linux系统日志管理工具
    Linux系统运维常用软件介绍、Linux系统日志管理工具
    踏入linux运维工程师需要掌握的工具,还有很多工具要掌握的,经常看日志是系统管理的好习惯Linux系统日志/var/log/messages 系统总日志/etc/logrotate.conf 日志切割配置文件
    时间:2018-06-29
  • Linux系统查看磁盘健康状况、磁盘坏道检测方法
    Linux系统查看磁盘健康状况、磁盘坏道检测方法
    今天推荐smartmontools,他是一款开源的磁盘控制,监视工具,可以运行在 Linux,Unix,BSD,Solaris,Mac OS,OS/2,Cygwin和Windows上。利用它可以测试硬盘的健康状况,并在发生故障前进行预警。写个shell你就可以高枕无论了。
    时间:2018-06-28
  • linux通过NTP服务同步国际标准时间和添加NTP任务计划
    linux通过NTP服务同步国际标准时间和添加NTP任务计划
    linux时间不对,对于长期不登录的服务服务器来说,时间长了,时间不正确肯定要影响任务计划的执行。[root@245 ~]# date2018年 06月 28日 星期四 08:45:57 CST ######时间
    时间:2018-06-28
  • 指定解压tar包中的某个文件夹或者文件
    指定解压tar包中的某个文件夹或者文件
    在日常运维中经常进行打包压缩备份文件,一个文件夹往往都是很大很大,每次下载下来解压缩都累死了。没有呀不解压tar包就可以解压其中的某一个文件呢,当然有了。
    时间:2018-06-26
  • Linux软件安装使用教程(安装包类)
    Linux软件安装使用教程(安装包类)
    1.通常Linux应用软件的安装包有三种:1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat L
    时间:2016-08-12
  • Linux版本QQ安装使用教程
    Linux版本QQ安装使用教程
    Linux版本QQ安装使用教程安装①打开控制台,使用管理员身份登录;②在终端中输入命令 ”dpkg -i package_name.deb”,package_name是QQ安装包文件名。如果copy这段代码过去
    时间:2016-08-09
  • Linux Kernel 4.5最终版本发布
    Linux Kernel 4.5最终版本发布
    Linux Kernel自2016年1月25日首个候选版本发布,经历了长达两个多月的不懈更新,在3月6日发布最后一个候选版本之后,Linux Kernel 4.5终于在今天获得了最终版本。Linux Ker
    时间:2016-03-17

火爆手游