• Linux ACL对某一些文件有管理权限


     某些系统账号希望对某一些文件有管理权限,有三种方法:

                 1 加入属主所在的同一个组中,这等于扩大了访问其他文件的权限了。

                 2 加入other中,这样权限放开的更大了。

                 3 给文件的sudo权限。

                 4 采用acl策略。

           前三种方法都有自己的缺点,最终考虑使用acl。

           所谓ACL,就是Access Control List,一个文件/目录的访问控制列表,可以针对任意指定的用户/组分配RWX权限。此功能

     需要内核的支持,在linux 2.6以后默认加入内核中。

                 acl由一系列的访问控制权限组成,主要的有如下:

                 ACL_USER_OBJ: 相当于Linux里file_owner的权限

                 ACL_USER: 定义了额外的用户可以对此文件拥有的权限

                 ACL_GROUP_OBJ: 相当于Linux里group的权限

                 ACL_GROUP: 定义了额外的组可以对此文件拥有的权限

                 ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限

                 ACL_OTHER: 相当于Linux里other的权限

          安装acl

                apt-get install acl

         重新挂载分区

               mount -o remount,rw,acl /dev/sda3 

               分区在不支持acl的情况下getfacl可以工作,但是setfacl不能够工作的。

          下图所示默认的acl规则

                

                #注释表明了文件的默认用户和所属组

                user::rw- 定义了ACL_USER_OBJ, 说明root拥有读和写的权限

                group::--- 定义了ACL_GROUP_OBJ,说明任何人都没有权限

                other::--- 定义了ACL_OTHER,说明任何人都没有权限

           在设置acl规则前我们先了解一下设置acl常用的选项:

               -b,--remove-all

               删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。

               -k,--remove-default

               删除缺省的acl规则。如果没有缺省规则,将不提示。

               -n,--no-mask

              不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。

              --mask

              重新计算有效权限,即使ACL mask被明确指定。

              -d,--default

              设定默认的acl规则。

              --restore=file

              从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能       和除--test以外的任何参数一同执行。

              --test

             测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。

             -R,--recursive

             递归的对所有文件及目录进行操作。

             -P,--physical

            跳过所有符号链接,包括符号链接文件。

             -m -x -M -X 

             -m -x 是在设置acl所需要定义的选项,-m 表示设置acl ,-x 表示删除acl规则

             -M -X 则可以在文件中读入acl规则,使相应的规则生效

             用cp来复制文件的时候我们现在可以加上-p选项.这样在拷贝文件的时候也将拷贝文件的ACL属性.对于不能拷贝的ACL属

       性将给出警告

             mv命令将会默认地移动文件的ACL属性. 同样如果操作不允许的情况下会给出警告

             

            开始设置规则:

            用test用户访问perl.pl文件,显示如下:

            

            设置acl规则

            

                这时候我们会看到在权限位后面多了一个+号,这个符号提示我们此文件使用了acl,而且你还会看到在ls -l 的输出中

         perl.pl的组权限变成read了,在acl的mask不存在的情况下,权限位的第二组才表示组的权限,如果acl中存在mask,则第二

         组权限位代表mask值,mask规定了ACL_USER, ACL_GROUP和ACL_GROUP_OBJ的最大值,在设置的权限相冲突的情况下以

        设置的mask为主。

               

               可以看到test用户可以访问perl.pl文件了。

               删除设置的acl

               

               可以看到acl规则已经删除,怎么在权限位的后面还有一个加号呢,要完全删除需要使用-b参数

               

               还可以设置默认的acl规则,如希望在某个目录下的新建文件都使用同一个acl规则,则可以对某个目录设置默认acl规则

    使其新建文件都采用默认acl规则

               

               

               在目录中建好文件后发现出现了#effective,ACL_MASK的定义. 它规定了ACL_USER(其他用户), ACL_GROUP_OBJ(组权限)和ACL_GROUP(其他组的权限)的最大权限,所以test组真正的权限是rw,怎么改变mask值呢?

               

              也可以从文件中恢复文件原有的acl规则,如下:先保存规则到一个文件中

              

              开始删除规则

              

              开始恢复规则

              

          以上只是简单的一些用法,更多用法参考man

    https://my.oschina.net/guol/blog/37808

  • 相关阅读:
    Python TCP服务器
    Python TCP客户端
    链接测试工具xenu link sleuth的使用
    nodejs & nodemailer
    node socket.io web
    簡單的爬蟲 二 ಥ_ಥ 爬一爬 一個博客的每篇文件的標題
    簡單的爬蟲 一 ಥ_ಥ(就是一個頁面)
    兩端對齊
    appframework(jqmobi) 3.0 设置
    sass mapsource --->gulp
  • 原文地址:https://www.cnblogs.com/findumars/p/5111627.html
Copyright © 2020-2023  润新知