zoukankan      html  css  js  c++  java
  • 第7章 权限管理(1)_ACL权限

    1. ACL权限

    1.1 ACL权限简介与开启

    (1)ACL权限简介

     

      ①ACL是Access Control List的缩写,主要目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。

      ②简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。(即,将文件或目录的操作权限赋于某些特定的用户或组)

    (2)查看分区ACL权限是否开启

    #df –h //先用df查看当前所有分区
    
    #dumpe2fs –h /dev/sda1 | grep acl(查看其中的Default mount options:    user_xattr acl这项,此处表明默认该分区是支持ACL权限的。注意,-h选项表示仅显示超级块信息,而不显示磁盘块组的详细信息)

    (3)临时开启分区ACL权限

      #mount -o remount,acl /dev/sda1   (重新挂载根分区,并挂载加入acl权限)

    (4)永久开启分区ACL权限

    #vi /etc/fstab
    
    UUID=UUID=71c20ba0-4900-43cf-a18b-21f5ef11b893 / ext4 defaults,acl 1 1
    
    #mount -o remount,acl /dev/sda1  (重新挂载文件系统或重启动系统,使修改生效)

    1.2 查看与设定ACL权限

    1.2.1 查看ACL权限的命令

    (1)命令格式:#getfacl 文件名   //查看acl权限

    1.2.2设定ACL权限的命令

    (1)命令格式:setfacl [选项] 文件名

    选项

    含义

    -m

    设定ACL权限

    -x

    删除指定的ACL权限

    -b

    删除所有的ACL权限

    -d

    设定默认ACL权限

    -k

    删除默认ACL权限

    -R

    递归设定ACL权限

    (2)应用举例

    [root@localhost ~]# useradd zhangsan
    [root@localhost ~]# useradd lisi
    [root@localhost ~]# useradd st
    [root@localhost ~]# groupadd tgroup
    [root@localhost ~]# mkdir /tmp/project
    [root@localhost ~]# chown root:tgroup /project/
    [root@localhost ~]# chown root:tgroup /tmp/project
    [root@localhost ~]# chmod 770 /tmp/project //0表示其它用户对该目录无任何权限
    [root@localhost ~]# setfacl -m u:st:rx /tmp/project  //使st用户对/tmp/project具有rx权限,可以通过ll –d /tmp/project查看,目录权限后多了一个“+”号,表示该目录设定了ACL权限。可以通过getfacl查看具体的ACL权限设置(其中-m表示设定ACL权限,u表示对用户设置访问该目录的权限,g表示对用户组设置ACL权限,m表示设定最大有效权限mask)
    
    [root@localhost ~]# getfacl /tmp/project  //查看/tmp/project的ACL权限
    
    getfacl: Removing leading '/' from absolute path names
    # file: tmp/project
    # owner: root
    # group: tgroup
    user::rwx
    user:st:r-x
    group::rwx
    mask::rwx
    other::---

    1.3 最大有效权限与删除ACL权限

    1.3.1 最大有效权限mask

    (1)mask权限:

      ①是用来指定最大有效权限的。如果对用户赋予了ACL权限,并不意味着用户就有了这个权限,而是需要和mask权限“相与”才能得到用户真正的权限

      ②只影响acl权限和所属组权限,但不影响所有者的权限

    (2)修改mask权限:#setfacl –m m:rx /tmp/project/

    1.3.2 删除ACL权限

    (1)删除指定用户的ACL权限:  #setfacl –x u:用户名 文件名

    (2)删除指定用户组的ACL权限:#setfacl –x g:组名 文件名

    (3)删除文件的所有ACL权限:  #setfacl –b 文件名

    1.4 默认ACL权限和递归ACL权限

    1.4.1 递归ACL权限

    (1)递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限

    (2)格式:#setfacl –m u:用户名:权限 –R 目录名 (注意,命令后面只能跟目录名,因为文件下不可能再有文件或目录,也就没有递归的问题。)

    (3)注意事项:

      ①此处的递归设置只对现有的文件或目录设置ACL设置,执行setfacl命令后,再新建的子文件或子目录并不会自动拥有这个ACL权限。

      ②为了让新建的子文件或目录也自动拥有ACL权限,需加“d”设置父目录的默认ACL权限见下面的示例

    1.4.2 默认ACL权限

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

    (2)命令格式:#setfacl –m d:u:用户名:权限 目录名 (其中的d表示default

    (3)注意事项:默认ACL权限只对目录起作用,而不文件不起作用。因为目录下可以创建文件或目录,但文件下不行。

  • 相关阅读:
    使用docker sail镜像创建laravel项目
    Python使用阿里云镜像
    VMware安装OpenEuler虚拟机并配置图形界面
    机器学习模型评估指标汇总 (一)
    机器学习模型评估指标汇总 (二)
    运行docker命令需要sudo权限的问题
    如何不重装修复损坏的 Ubuntu 系统
    卡尔曼滤波
    升级anaconda
    jupyter notebook 代码自动补全
  • 原文地址:https://www.cnblogs.com/5iedu/p/6185608.html
Copyright © 2011-2022 走看看