1.简介:
  a.作用:
    是为了防止权限不够用的情况,一般的权限有所有者、所属组、其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限
  
  b.故事背景:
    一个老师,给一个班的学员上课,他在linux的根目录下面建立了一个文件夹,只允许本班级的学员对该目录进行读写执行操作,其他人都不行,这时该目录的权限一般是770(一般我们设置权限都是所有者的权限大于所属组的权限,所属组的权限大于其他人的权限,依次往下),此时有个同学想试听我们的课程,他们只有读和执行的权限,没有写的权限,那么此时该怎么分配权限呢?此时的话所属组、所有者、其他人都不满足,这是就用到ACL权限

2.使用条件
  a.只需硬盘开启对ACL的支持即可,现在Linux上都是默认开启的
  b.查看是否支持acl权限
    1.查看自己linux上的硬盘信息
      df -h
        Filesystem Size Used Avail Use% Mounted on
        /dev/mapper/VolGroup-lv_root 6.5G 1.6G 4.7G 26% /
        tmpfs 246M 0 246M 0% /dev/shm
        /dev/sda1 477M 28M 425M 7% /boot
    2.根据硬盘信息,查询是否开启了acl
      dumpe2fs -h /dev/sda1 | grep "Default mount options"
        dumpe2fs 1.41.12 (17-May-2010)
        Default mount options: user_xattr acl
    3.如果没有开启
      临时开启:
        重新挂载跟分区,并加入acl权限
        mount -o remount,acl /
      永久开始:
        编辑开机挂载文件/etc/fstab
        将文件中的:
        UUID=546c4e25-7b06-468b-89a1-e66280c4ee98 /boot ext4 defaults 1 2
        修改为:
        UUID=546c4e25-7b06-468b-89a1-e66280c4ee98 /boot ext4 defaults,acl 1 2
        重新挂载根分区:
        mount -o remount /

3.设置ACL权限
  setfacl 选项 文件名
    -m 设定ACL权限
    -x 删除指定的ACL权限
    -b 删除所有的ACL权限
    -d 设定默认ACL权限
    -k 删除默认ACL权限
    -R 递归设定ACL权限

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

  设置组权限:
    setfacl -m g:组名称:权限 文件

  设置最大有效权限:
    setfacl -m m:权限 文件
    说明:
      acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx

4.删除权限
  删除用户权限:
    setfacl -x u:用户名 文件名
  删除组权限:
    setfacl -x g:组名称 文件名
  删除整个权限:
    setfacl -b 文件名

5.设置默认权限和递归权限
  递归权限:
    setfacl -m u:用户名:权限 -R 文件
    说明:
      递归只对该目录下面现有的子文件或目录有用,对于该目录下面新添加的子文件或目录没用
  默认权限:
    setfacl -m d:u:用户名:权限 文件
    说明:
      默认权限只对该目录下面新建的文件或目录有效,对已经存在的子文件无效

试验:
准备环境:
  [root@localhost temp]# useradd student1
  [root@localhost temp]# useradd student2
  [root@localhost temp]# useradd visitor1
  [root@localhost temp]# passwd student1
  [root@localhost temp]# passwd student2
  [root@localhost temp]# passwd visitor1
  [root@localhost temp]# groupadd student_group
  [root@localhost temp]# groupadd other_student
  [root@localhost temp]# mkdir project
  [root@localhost temp]# chown root:student_group project/
  [root@localhost temp]# chmod 770 project/
  [root@localhost temp]# gpasswd -a student1 student_group
  [root@localhost temp]# gpasswd -a student2 student_group

  student1有权限:
  [student1@localhost ~]$ cd /xiaol/temp/project/
  [student1@localhost project]$ touch a.txt

  visitor1没有权限
  [visitor1@localhost ~]$ cd /xiaol/temp/project/
  -bash: cd: /xiaol/temp/project/: 权限不够

给visitor1设置权限:
  [root@localhost temp]# setfacl -m u:visitor1:rx project/

  查看权限:
  [root@localhost temp]# getfacl project/
  # file: project/  
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx
  mask::rwx
  other::---

  visitor1有权限了
  [visitor1@localhost ~]$ cd /xiaol/temp/project/
  [visitor1@localhost project]$

给other_student组设置权限:
  [root@localhost temp]# setfacl -m g:other_student:rx project/

  查看权限:
  [root@localhost temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx
  group:other_student:r-x
  mask::rwx
  other::---

设置最大权限:
  [root@localhost temp]# setfacl -m m:rx project/

  查看权限
  [root@localhost temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx #effective:r-x
  group:other_student:r-x
  mask::r-x
  other::---

删除权限:
  删除visitor1权限
  [root@localhost temp]# setfacl -x u:visitor1 project/

  删除other_student权限
  [root@localhost temp]# setfacl -x g:other_student project/

  查看权限:
  [root@localhost temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  group::rwx
  mask::rwx
  other::---

设置递归权限
  [root@localhost temp]# setfacl -m u:visitor1:rx -R project/

  进入project查看内部文件权限
  [root@localhost project]$ getfacl a.txt
  # file: a.txt
  # owner: student1
  # group: student1
  user::rw-
  user:visitor1:r-x
  group::rw-
  mask::rwx
  other::r--

  新建文件并查看权限
  [root@localhost project]# touch b.txt
  [root@localhost project]# getfacl b.txt
  # file: b.txt
  # owner: root
  # group: root
  user::rw-
  group::r--
  other::r--

设置默认权限
  [root@localhost temp]# setfacl -m d:u:visitor1:rx project/

  新建文件并查看权限
  [root@localhost project]# touch c.txt
  [root@localhost project]# getfacl c.txt
  # file: c.txt
  # owner: root
  # group: root
  user::rw-
  user:visitor1:r-x #effective:r--
  group::rwx #effective:rw-
  mask::rw-
  other::---

清理试验环境
  [root@localhost temp]# userdel -r student1
  [root@localhost temp]# userdel -r student2
  [root@localhost temp]# userdel -r visitor1
  [root@localhost temp]# groupdel student_group
  [root@localhost temp]# groupdel other_student
  [root@localhost temp]# rm -rf project/

Linux中权限管理之ACL权限的更多相关文章

  1. Linux系列教程(十六)——Linux权限管理之ACL权限

    通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...

  2. Linux权限管理之ACL权限

    注:转载自:https://www.cnblogs.com/ysocean/p/7801329.html 目录 1.什么是 ACL 权限? 2.查看分区 ACL 权限是否开启:dump2fs ①.查看 ...

  3. Linux权限管理:ACL 权限

    1.ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机 ...

  4. linux备忘录-账号管理与ACL权限设定

    知识 账号管理中的一些文件结构 /etc/passwd 每一行的内容都为下面结构 账号名称:密码:UID:GID:用户信息说明:家目录:shell ---- UID ---- -- 0 -> 代 ...

  5. Linux 账号管理及ACL权限设置,PAM模块简介

    有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...

  6. 【Linux】 Linux权限管理与特殊权限

    Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...

  7. 鸟哥的linux私房菜——第十三章学习(Linux 帐号管理与 ACLL 权限设置)

    第十三章.Linux 帐号管理与 ACLL 权限设置 1.0).使用者识别码: UID 与 GID UID :User ID GID :group ID [root@study ~]# ll -d / ...

  8. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  9. 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】

    一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...

随机推荐

  1. ajaxform 提交,返回JSON时,IE提示下载的问题解决

    在使用AJAXform提交表单时,返回的数据格式为JSON,头文件是application/json 时,在 火狐.ie9和谷歌下都能正常解析,在ie7下会提示下载. 解决方法:指定返回页的头文件为& ...

  2. SQL 子查询 EXISTS 和 NOT EXISTS

    MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT … FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查 ...

  3. Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)(未完)

    转:http://blog.csdn.net/xuanfeng407/article/details/51465472

  4. centos httpd服务做yum本地源,以及安装Mysql

    step0 首先centos的iso文件是有两张的,dvd1和dvd2,dvd2是额外的软件,常有的一些软件都在dvd1里面,而且repodata配置文件也在dvd1里面,如果直接把dvd2当做镜像文 ...

  5. Unity3d中使用自带动画系统制作下雨效果(一)

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...

  6. BootstrapValidator 解决多属性被同时校验问题《转》

    问题描述:在使用bootstrapValidator插件校验表单属性,当表单属性过多需要每行并列多个属性 ,会出现校验第一个属性,发现整行被校验的效果 ,这不是我们工作想要的效果.如图: 问题分析:因 ...

  7. priority_queue优先队列/C++

    priority_queue优先队列/C++ 概述 priority_queue是一个拥有权值观念的queue,只允许在底端加入元素,并从顶端取出元素. priority_queue带有权值观念,权值 ...

  8. diamond源码阅读-循环探测配置信息是否变化rotateCheckConfigInfo

    rotateCheckConfigInfo 这是一个定时任务,循环调用 /** * 循环探测配置信息是否变化,如果变化,则再次向DiamondServer请求获取对应的配置信息 */ private ...

  9. c/c++基本数据类型大小

    各个类型的变量长度由编译器来决定(实际上与操作系统位数和编译器都有关)使用时可用sizeof()得到,当前主流编译器一般是32位或64位. 类型 32位 64位 char 1 1 short int ...

  10. iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页

      公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...