• 一起来学linux:ACL


    传统的 权限设置只有user,group,other三种,并没有办法针对某一个用户或者某一个组来设定权限。ACL就是用于这个目的的

    ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目:

    • 使用者 (user):可以针对使用者来配置权限;

    • 群组 (group):针对群组为对象来配置其权限;

    • 默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;


    查看系统是否安装了ACL可以通过如下的方法查看。如果没有安装或者版本比较老的话会安装或者更新。

    root@zhf-linux:/home/zhf# apt-get install acl

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    acl is already the newest version (2.2.52-3).

    acl set to manually installed.

    0 upgraded, 0 newly installed, 0 to remove and 103 not upgraded.



    启动ACL2个方法:

    1 mount-o remount acl /

    2 vim /etc/fstab

    LABEL=/1 / ext3 default,acl 1 1



    下面开始来使用ACL。主要是2个命令:setfacl, getfacl

    setfacl:

    -m: 设置后续的acl参数给文件使用,不可与-x合用

    -x:删除后续的acl参数,不可与-m合用

    -b:删除所有的ACL设置参数

    -k:删除默认的ACL参数

    -R:递归设置ACL

    -d:设置默认的ACL参数,只对目录有效


    我们来实际测试一下,首先用touch acl_test1新建一个文件:这个时候文件的权限对于root用户来说三rw,对于root组内其他用户是r, 对于其他用户是r

    root@zhf-linux:/home/zhf/zhf# ls -al

    total 277796

    drwxrwxr-x 10 zhf zhf 4096 Sep 18 21:43 .

    drwxr-xr-x 31 zhf zhf 4096 Sep 18 21:35 ..

    -rw-r--r-- 1 root root 0 Sep 18 21:43 acl_test1


    执行设置acl的命令,单独给zhf_test用户增加rw的权限

    root@zhf-linux:/home/zhf/zhf# setfacl -m u:zhf_test:rw acl_test1

    再继续查看acl_test1文件的权限,发现后面多了一个+号。表示权限和之前的不一样了

    root@zhf-linux:/home/zhf/zhf# ls -al

    total 277796

    drwxrwxr-x 10 zhf zhf 4096 Sep 18 21:43 .

    drwxr-xr-x 31 zhf zhf 4096 Sep 18 21:35 ..

    -rw-r-xr--+ 1 root root 0 Sep 18 21:43 acl_test1


    我们可以通过getfacl来查看:可以比较直观的看到用户zhf_test 增加了r-x权限。#后面接的是文件的默认权限。

    root@zhf-linux:/home/zhf/zhf# getfacl acl_test1

    # file: acl_test1

    # owner: root

    # group: root

    user::rw-

    user:zhf_test:r-w

    group::r--

    mask::r-x

    other::r--


    这个时候如果我们用zhf_test去改写acl_test1文件是可以成功的,因为有了读写权限,但是其他除root用户之外的都不能去写。只能读。同样的可以用setfacl -m g:组名:rw acl_test1来设置某个组的权限


    如何删除设定的ACL权限呢。用-x参数,删除指定用户的权限

    root@zhf-linux:/home/zhf/zhf# setfacl -x u:zhf_test acl_test1

    root@zhf-linux:/home/zhf/zhf# getfacl acl_test1

    # file: acl_test1

    # owner: root

    # group: root

    user::rw-

    group::r--

    mask::r--

    other::r--


    getfacl的时候会看到一个mask值,这个是干什么用的呢。这个mask的意思是用户或组所设置的权限必须要存在与mask的权限设置范围内才会生效。也就是有效权限。举个例子来看:

    root@zhf-linux:/home/zhf/zhf# setfacl -m m:r acl_test1

    root@zhf-linux:/home/zhf/zhf# getfacl acl_test1

    # file: acl_test1

    # owner: root

    # group: root

    user::rw-

    user:zhf_test:rw- #effective:r--

    group::r--

    mask::r--

    other::r--


    setfacl -m m:r acl_test1设置acl_test1的有效权限为r,此时通过getfacl可以看到mask的值为r。而且zhf_test后面多了一个注释 #effective:r--。报名实际有效权限为r

  • 相关阅读:
    百度地图学习
    JS中call和apply区别有哪些 记录
    初次学习AngularJS
    C#中Abstract和Virtua笔记,知识
    css学习笔记四
    css学习笔记三
    jquery基础 笔记三
    jquery基础 笔记二
    jquery基础 笔记一
    负边距在布局中的应用
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/7545721.html
Copyright © 2020-2023  润新知