• Linux_ACL文件访问控制列表


    一、ACL文件访问控制列表

    前言

    1️⃣:ACL—文件访问控制列表;

    2️⃣:ACL可以针对单个用户,单个文件或目录来进行r、w、x的权限设定,特别适用于需要特殊权限的使用情况。

    3️⃣:ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限,可以实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

    4️⃣:ACL就是可以设置特定用户或者用户组对于一个文件/文件夹的操作权限

    5️⃣:LINUX上的ACL访问控制列表,主要的目的是在提供传统的u(user)、g(group)、o(other)的r(read)、w(write)、x(execute)权限之外的局部权限设定

    1、ACL管理命令

    getfacl
    setfacl

    2、ACL形式

    每个片段的形式都如:tag:name:perm
    tag可以是下面形式的一种:
        user    表示这是一个用户的ACL条目
        group   表示这是一个用户组的ACL条目
        other   表示这是其它的ACL条目
        mask    表示这是一个掩码的ACL条目,最大的有效权限(权限阈值)
        
        name    可以是用户名或组名
        perm    是指该用户或组所具有的权限,它是由"rwx"组成的一个字符串
    

    3、setfacl

    setfacl
        使用 setfacl 设定文件访问控制列表
        语法  setfacl {-m|-x|-b|-d ...} filename  
    
    选项
        -m, --modify=acl     设置ACL条目,不可与-x一起使用
        -x, --remove=acl     删除所设置的ACL条目,不可与-m一起使用
        -b, --remove-all     删除所有ACL条目(包括默认的ACL条目)
        -k, --remove-default 删除默认ACL条目
        -R, -- recursion     递归设置ACL条目,包括余下的子目录或子文件都将被设置ACL条目
        -d, --default        对目录设置默认的ACL条目,并且在改目录下创建的文件都将继承该目录的默认ACL条目(该选项只能对目录生效)
        
    示例
        setfacl -m u:zyq:rwx test.sh
        user     简写为u,
        group    简写为g   
        other    简写为o
    
    注意:使用 -m 对other设置facl的时候,只需指明对应的权限即可,无需指明特定的用户;其次,对其他用户无法使用-x选项,因为,其他用户不同于所属主和所属组,只需给特定的权限即可

    4、getfacl

    getfacl
        使用getfacl可以获取文件访问控制列表
        语法:getfacl filename
    
    选项
        -a, --access 仅显示文件访问控制列表
        -d, --default 仅显示默认的访问控制列表
        -c, --omit-header 不显示注释表头
        
    示例
        getfacl test.txt
        # file: test.txt         //文件名
        # owner: root            //文件拥有者
        # group: root            //文件拥有组
        user::rw-                //说明该文件的拥有者拥有读和写的权限
        group::rw-               //说明该文件的拥有组有读和写的权限
        mask::rw-                //说明mask的权限是读和写
        other::---               //说明其他人没有权限访问该文件
    

    5、操作示例

    //创建ACL条目
    [root@localhost ~]# ll test 
    -rw-r--r--. 1 root root 0 8月   5 15:33 test
    [root@localhost ~]# setfacl -m u:zhangsan:rw test 
    [root@localhost ~]# getfacl test 
    # file: test
    # owner: root
    # group: root
    user::rw-
    user:zhangsan:rw-     //说明zhangsan用户对该文件拥有读和写的权限
    group::r--
    mask::rw-          //mask权限说明zhangsan用户对改文件的权限最大只能是读和写
    other::r--
    
    //删除ACL条目
    [root@localhost ~]# setfacl -x u:zhangsan test 
    [root@localhost ~]# getfacl test 
    # file: test
    # owner: root
    # group: root
    user::rw-
    group::r--
    mask::r--
    other::r--
    
    //给目录设置默认的ACL条目
    [root@localhost ~]# mkdir dir
    [root@localhost ~]# ll -d dir
    drwxr-xr-x. 2 root root 6 8月   5 15:41 dir
    [root@localhost ~]# setfacl -m d:u:zhangsan:rw dir
    [root@localhost ~]# getfacl dir/
    # file: dir/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    default:user::rwx
    default:user:zhangsan:rw-
    default:group::r-x
    default:mask::rwx
    default:other::r-x
    
    //在dir目录下创建一个文件,看是否继承该目录的ACL条目
    [root@localhost ~]# touch dir/file1
    [root@localhost ~]# getfacl dir/file1 
    # file: dir/file1
    # owner: root
    # group: root
    user::rw-
    user:zhangsan:rw-
    group::r-x			#effective:r--
    mask::rw-
    other::r--
    
    //删除dir目录的默认ACL条目
    [root@localhost ~]# setfacl -k dir
    [root@localhost ~]# getfacl test 
    # file: test
    # owner: root
    # group: root
    user::rw-
    group::r--
    mask::r--
    other::r--
    或者
    [root@localhost ~]# setfacl -b dir/
    [root@localhost ~]# getfacl dir/
    # file: dir/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
  • 相关阅读:
    338. 比特位计数
    300.最长上升子序列
    git 钩子服务代码
    thinkphp5.1 封装文件上传模块
    Theano 基础
    使用anaconda和pycharm搭建多python本版的开发环境
    GIT常用命令
    Thinkphp 获取数据表随机值
    在Windows中利用.bat提交git代码到不同分支
    Windows .bat 常量
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13438971.html
Copyright © 2020-2023  润新知