linux之权限管理_1_ACL

简介:
linux之权限
ACL
  • acl启用

        acl(access control list),用于灵活控制权限
    
            要使用acl功能首先要启用此功能,acl功能在挂载磁盘时启用,CentOS7上挂载时会自动开启此功能.
    
            查看默认挂载选项
            #  tune2fs -l  /dev/sda1 |grep acl
            Default mount options:    user_xattr acl
    
            手动挂载时开启
            # mount -o acl /dev/DEVICE /MOUNT_DIR
    
            ACL生效顺序:
                owner --> acl_owner --> group,acl_group(谁的权限大就使用谁的权限位) --> other
  • acl设置和查看(setfacl,getfacl)

    • setfacl,getfacl命令

          setfacl 
              设置文件ACL
      
              setfacl [options] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
              setfacl --restore=file
      
                  options:
                      -b 清空ACL规则及结构
                      -k 删除默认ACL
                      -R 递归操作
                      --set-file=-|FILE  '-'表示标准输出,根据stdin或文件内容设置acl规则
                              例:getfacl file1 | setfacl --set-file=- file2
      
                  -m|-x : '-m'设置acl规则,'-x'删除指定acl规则(从命令行获取acl_spec)
                  -M|-X : 同'-m'和'-x',从文件或标准输出获取acl_spec
      
                  acl_spec:
                      [d:] [u:]uid|username [:perms]    
                      [d:] g:gid|groupname [:perms]
                      [d:] m[:] [:perms]
                      [d:] o[:] [:perms]
      
                      u:  设置对象为owner
                      g:  设置对象为group
                      o:  设置对象为other
                      d:  设置默认acl
                      m:  设置mask
                      perms  权限位 
      
          getfacl 
              显示文件acl规则
      
              getfacl [options] file ...
      
                      -R 递归查看
    • 权限生效顺序

      - 1 验证owner与acl_owner顺序
      
          分别设置owner与acl_onwer权限为400,000.实验其结果,再将权限设置交换,再次验证其结果.
      
          1.1 owner 400 acl_owner 000
      
              设置相关环境
              # echo 123 > /tmp/a
              # cd /tmp
              # chmod 400  a
              # chown liubei a
              # ll a
              -r--------. 1 liubei root 4 Aug 31 09:44 a
              # setfacl -m u:liubei:--- a
              # getfacl a|grep user
              user::r--
              user:liubei:---
      
              进入liubei用户查看文件:
              # su - liubei
              $ cat /tmp/a
              123
      
          1.2 owner 000 acl_owner 400
               # chmod 000 a
               # setfacl -m u:liubei:r-- a
               # getfacl a|grep user
               user::---
               user:liubei:r--
      
               进入liubei用户查看文件:
               # su - liubei
               # cat /tmp/a
               cat: a: Permission denied
      
          结论:
              owner优先于acl_owner
      
      - 2 验证group与acl_group顺序
      
          实验说明:
              分别设置group,acl_group权限为050,040,查看结果.再将权限设置交换,查看结果.
      
          2.1 group 050 acl_group 040
      
              设置相关环境
              # vim /tmp/a.sh
                  #!/bin/bash
                  echo hello
              # cd /tmp
              # chmod 050 a.sh
              # chgrp liubei a.sh
              # setfacl -m g:liubei:r-- 
              # getfacl a.sh |grep group
                  # group: liubei
                  group::r-x
                  group:liubei:r--
      
              切换liubei验证结果
              # su - liubei
              $ cd /tmp
              $ cat a.sh
                  #!/bin/bash
                  echo hello
              $ ./a.sh
              hello
      
          2.2 group 040 acl_group 050
      
              设置相关环境
              # chmod 040 a.sh
              # setfacl -m g:liubei:r-x a.sh
              # getfacl a.sh |grep group
                  # group: liubei
                  group::r-x
                  group:liubei:r-x
      
              切换liubei验证结果
              # su - liubei
              $ cd /tmp
              $ cat a.sh
                  #!/bin/bash
                  echo hello
              $ ./a.sh
              hello
      
          结论:
              group和acl_group根据权限大小来决定谁生效.
      
      - 3 结果
      
          owner > acl_owner > group,acl_group(权限大小) > other
      
          此处不证明other与acl_other
    • acl中的mask作用

          acl中mask代表了acl的最高权限上限.
          其mask影响acl_user,group,acl_group,acl_other的权限位.
          其权限必须在mask权限范围内才可生效.
      
          mask在设定其它类型的acl规则时,会根据所有权限进行逻辑与后的值进行更新.
              例:
                  设置acl_owner为-w-,再将mask值修改为rwx.
                  现在添加一个acl_group为r--,再次查看mask.
      
                  # touch a
                  # chmod 700 a
                  # setfacl -m u:liubei:-w- a
                  # setfacl -m m:rwx a
                  # getfacl a |grep -E 'user|group|mask'
                      # group: root
                      user::rwx
                      user:liubei:-w-
                      group::---
                      mask::rwx      此时mask值为rwx
                  # setfacl -m g:liubei:r-- a
                  # getfacl a|grep -E 'user|group|mask'
                      # group: root
                      user::rwx
                      user:liubei:-w-
                      group::---
                      group:liubei:r--
                      mask::rw-       此时mask值变为rw-
      
          大于mask的无效acl示例:
      
              # echo 123 > /tmp/a ;cd /tmp
              # chmod 000 a
              # chgrp liubei a
              # ll a
              total 0
              ----------. 1 root root 0 Aug 31 10:54 a
              # setfacl -m g:liubei:r-- a
      
              此时用liubei用户查看a
              # su - liubei
              $ cat /tmp/a
              123
      
              接着修改mask值为---
              # setfacl -m m:--- a
              # getfacl a|grep group
                  # group: liubei
                  group::---
                  group:liubei:r--    #effective:--- 
      
              此时再次使用liubei用户查看a
              # su - liubei
              $ cat /tmp/a
              cat: a: Permission denied
      
          注意:
              #effective:--- 表示的是权限大于mask的权限位会失效,当其他小于的权限位依然会有效.
              如 #effective:-w-   表示只生效了w权限
      
          建议:
              mask最后设置
              临时将所有用户都设为0权限,直接将mask设为---
    • default作用

          默认acl的设置是为了能够在目录下创建的文件继承其acl规则.
      
              默认acl规则只对未来创建的文件生效,不对当前已存在文件生效.
      
              示例:
      
                  # cd /tmp
                  # mkdir a
                  # touch a/b
                  # chgrp -R  liubei a
                  # setfacl -Rm d:g:liubei:rwx a
      
                  # getfacl -R a
                      # file: a/
                      # owner: root
                      # group: liubei
                      user::rwx
                      group::r-x
                      other::r-x
                      default:user::rwx
                      default:group::r-x
                      default:group:liubei:rwx
                      default:mask::rwx
                      default:other::r-x
      
                      # file: a//b
                      # owner: root
                      # group: liubei
                      user::rw-
                      group::r--
                      other::r--     没有默认acl
                  # touch a/c
                      # getfacl a/c 
                      # file: a/c
                      # owner: root
                      # group: root
                      user::rw-
                      group::r-x          #effective:r--
                      group:liubei:rwx        #effective:rw-    默认acl生成
                      mask::rw-
                      other::r--
  • acl备份和恢复

        主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 参数.
        但是tar等常见的备份工具是不会保留目录 和文件的ACL信息
    
            导出规则
            getfacl -R /tmp/dir1 > acl.txt
            清空规则
            setfacl -R -b /tmp/dir1 
            恢复规则
            setfacl -R  --set-file=acl.txt  /tmp/dir1
            setfacl --restore acl.txt 
            查看规则
            getfacl -R /tmp/dir1
    
        总结:
            备份的规则只能在原目录中生效
命令总结:

chmod,chown,chgrp,umask,chattr,lsattr,setfacl,getfacl



本文转自 撒旦搞时间 51CTO博客,原文链接:http://blog.51cto.com/12074120/1963882,如需转载请自行联系原作者

相关文章
|
4月前
|
算法 Linux 数据安全/隐私保护
【linux】root大王如何制约普通用户——权限管理
【linux】root大王如何制约普通用户——权限管理
|
6月前
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
506 0
|
6月前
|
Linux
linux 权限和Acl权限
linux 权限和Acl权限
40 0
|
7天前
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
25 1
linux权限管理
|
1月前
|
Linux 数据安全/隐私保护
探索Linux操作系统下的权限管理
【8月更文挑战第66天】在数字世界中,操作系统的权限管理就如同现实世界中的钥匙和锁,保护着我们的数据安全。本文将带你深入理解Linux系统中的权限设置,通过实际代码示例,让你掌握文件和目录权限的分配与管理技巧。准备好了吗?让我们开始这场关于权限管理的探险之旅吧!
82 14
|
5月前
|
网络协议 Linux 数据安全/隐私保护
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
|
5月前
|
安全 Linux Shell
【Linux】权限管理
【Linux】权限管理
49 5
|
6月前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
6月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
6月前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
【5月更文挑战第24天】 在Linux操作系统中,文件系统权限管理是维护系统安全和用户数据隔离的关键机制。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他类别的读、写、执行权限。我们将分析权限位的具体含义,如何通过命令行工具修改权限,以及权限掩码(umask)的作用。此外,我们还将讨论文件系统权限在实际应用中的常见问题及其解决方案,帮助读者构建更为安全且高效的Linux工作环境。
下一篇
无影云桌面