第04章权限管理

作者: fe8478c7ba2a | 来源:发表于2018-04-16 20:17 被阅读7次

    基本权限UGO

    #概述
        文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件
    #权限对象:
         属主: u
         属组: g
         其他人: o
         所有人:a(u+g+o)
    #权限类型:
         读:r=4
         写:w=2
         执行: x=1
    #设置权限
        更改权限
           使用符号
             使用符号:u用户 g组  o其他  r读   w写  x执行   
    
    语法: chmod 对象(u/g/o/a) 赋值符(+/-/=) 权限类型(r/w/x) 文本对象
       [root@localhost ~]# cd  /tmp
       [root@localhost tmp]# chmod u+x file1 //属主增加执行
       [root@localhost tmp]# chmod a=rwx file1 //所有人等于读写执行
       [root@localhost tmp]# chmod a=- file1 //所有人没有权限
       [root@localhost tmp]# chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
       [root@localhost tmp]# ll file1 //以长模式方式查看文件权限
             -rw-rw-r-- 1 alice it 17 10-25 16:45 file1 //显示的结果
    #使用数字
                    4读   2写   1执行
       [root@localhost ~]# chmod 644 file1
       [root@localhost ~]# ll file1
              -rw-r--r-- 1 alice it 17 10-25 16:45 file1 
    
    更改属主、属组
        =chown: 设置一个文件属于谁,属主
    #语法:           chwon   用户名.组名   文件
            [root@localhost ~]# chown alice.hr file1 //改属主、属组
            [root@localhost  ~]# chown alice file1 //只改属主
            [root@localhost ~]# chown .hr file1 //只改属组
        =chgrp:     设置一个文件属于哪个组,属组
    #语法:            chgrp   组名   文件      -R是递归的意思
            [root@localhost ~]# chgrp it file1 //改文件属组
            [root@localhost ~]# chgrp -R it dir1 //改文件属组
    #案例
       需求
          针对hr部门的访问目录设置权限,要求如下:
       1. root用户和hr组的员工可以读、写、执行
       2. 其他用户没有任何权限
          操作思路:
            1.创建组
            2.创建用户
            3.修改属主和属组
            4.设置权限
    #操作示范
            [root@localhost ~]# groupadd hr
            [root@localhost ~]# useradd hr01 -G hr
            [root@localhost ~]# useradd hr02 -G hr
            [root@localhost ~]# mkdir /home/hr
            [root@localhost ~]# chgrp hr /home/hr
            [root@localhost ~]# chmod 770 /home/hr
            [root@localhost ~]# ll -d /home/hr/
                   drwxrwx---. 2 root hr 4096 3月 13 14:26 /home/hr/
    
                    
    2.用户对文件有全部权限,能否删除该文件
      #示例1: 对文件的影响
         [root@localhost ~]# mkdir /dir10
         [root@localhost ~]# touch /dir10/file1
         [root@localhost ~]# chmod 777 /dir10/file1 
         [root@localhost ~]# ll -d /dir10/
               drwxr-xr-x. 2 root root 4096 3月 11 18:37 /dir10/
         [root@localhost ~]# ll /dir10/file1 
               -rwxrwxrwx. 1 root root 0 3月 11 18:37 /dir10/file1
       切换用户alice
         [alice@localhost ~]$ cat /dir10/file1 
         [alice@localhost ~]$ rm -rf /dir10/file1 
                    rm: 无法删除"/dir10/file1": 权限不够
           注:不可以,文件的去留在乎用户对其父系目录有没有W的权限
    3.用户对文件上一级目录有全部权限,能否删除其中的文件
       #示例2: 对目录有w权限
          [root@tianyun ~]# chmod 777  /dir10/
          [root@tianyun ~]# chmod 000  /dir10/file1 
          [root@tianyun ~]# ll -d /dir10/
                  drwxrwxrwx. 2 root root 4096 3月 11 18:37  /dir10/
          [root@tianyun ~]# ll /dir10/file1 
                   ----------. 1 root root 0 3月 11 18:37  /dir10/file1
          [alice@tianyun ~]$ cat  /dir10/file1 
                   cat: /dir10/file1: 权限不够
          [alice@tianyun ~]$ rm -rf  /dir10/file1 
          [alice@tianyun ~]$ touch  /dir10/file2
             注:可以,文件的生杀大全在于,用户对其父目录是否有w的权限。
    4.alice能删除/下的任何文件吗?
        #问题2: alice能删除/下的任何文件吗?
          [root@tianyun ~]# chmod 777  /
          [root@tianyun ~]# ll -d  /
                   drwxrwxrwx. 27 root root 4096 6月 4 11:32  /
          [alice@tianyun ~]$ rm -rf  /etc
             注:可以。所以请注意rm -rf 的危险性。
    

    基本权限 ACL

       文件权限管理之: ACL设置基本权限(r、w、x)
    #用法
       设置:
          [root@tianyun ~]# touch /home/test.txt
          [root@tianyun ~]# ll /home/test.txt 
                -rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt
          [root@tianyun ~]# getfacl /home/test.txt//查看文件有哪些ACL权限。
          [root@tianyun ~]# setfacl -m u:alice:rw /home/test.txt //增加用户alice权限
          [root@tianyun ~]# setfacl -m u:jack:- /home/test.txt //增加用户jack权限
          [root@tianyun ~]# setfacl -m o::rw /home/test.txt
    #查看/删除:
        如何删除一条acl,如何删除所有acl呢?
          [root@tianyun ~]# ll /home/test.txt 
                -rw-rw-r--+ 1 root root 0 10-26 13:59 /home/test.txt
          [root@tianyun ~]# getfacl /home/test.txt
          [root@tianyun ~]# setfacl -m g:hr:r /home/test.txt
          [root@tianyun ~]# setfacl -x g:hr /home/test.txt //删除组hr的acl权限
          [root@tianyun ~]# setfacl -b /home/test.txt //删除所有acl权限
    #帮助
        =查看帮助=
          [root@tianyun ~]# man setfacl
                     /EXAMPLES      //查找示例
        =多多观察,你会发现很多有趣的事情=
          [root@tianyun ~]# getfacl file1 |setfacl --set-file=- file2 //复制file1的ACL权限给file2
    
    高级用法 mask
    #mask:
        原理
            acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx      
    #示例
       1.创建一个测试文件:/tmp/filemask
          [root@localhost ~]# touch /tmp/filemask
       2.移除其他用户权限
          [root@localhost ~]# chmod o-r /tmp/filemask 
       3.设置用户alice,读写执行权限
          [root@localhost ~]# setfacl -m u:alice:rwx /tmp/filemask 
       4.查看权限
          [root@localhost ~]# getfacl /tmp/filemask 
             getfacl: Removing leading '/' from absolute path names
             # file: tmp/filemask
             # owner: root
             # group: root
             user::rw-
             user:alice:rwx
             group::r--
             mask::rwx
             other::r--
        5.切换用户alice,验证权限(读写执行)
          [root@localhost ~]# su - alice
                上一次登录:四 3月 29 15:47:05 CST 2018pts/1 上
          [alice@localhost ~]$ echo date >  /tmp/filemask 
          [alice@localhost ~]$ cat /tmp/filemask 
               date
          [alice@localhost ~]$ /tmp/filemask
               2018年 03月 29日 星期四 15:48:52 CST
          [alice@localhost ~]$ exit
                  登出
         6.设置掩码mask权限,为无权限。
          [root@localhost ~]# setfacl -m m::--- /tmp/filemask 
         7.观察有效权限effective,alice用户没有权限。
          [root@localhost ~]# getfacl /tmp/filemask 
             getfacl: Removing leading '/' from absolute path names
             # file: tmp/filemask
             # owner: root
             # group: root
             user::rw-
             user:alice:rwx         #effective:---
             group::r--         #effective:---
             mask::---
             other::r--
          8.切换用户验证mask。
           [root@localhost ~]# su - alice
                上一次登录:四 3月 29 15:48:23 CST 2018pts/1 上
    
           [alice@localhost ~]$ echo date >> /tmp/filemask 
               -bash: /tmp/filemask: 权限不够
    
           [alice@localhost ~]$ cat /tmp/filemask 
               cat: /tmp/filemask: 权限不够
          9.得出结论,mask掩码与有效权限取之交集。
    
    生产案例
                    生产环境中,常用于临时降低用户或组(除属主和其他人)的权限
    
    #请注意文件基本权限。
      1 创建用户(便于测试)
      2 创建两个文件(设置其中一个文件的权限掩码)
        [root@tianyun ~]# setfacl   -m   m::---    /tmp/file1.txt
      3 删除基本权限
        chmod o= /tmp/file1
      4 使用账户进行测试
           file1.txt没有权限。file2.txt有只读权限。
    
    default: 继承(默认)
        要求: 希望alice能够对/home以及以后在/home下新建的文件有读、写、执行权限
    
    思路:
      步骤一: 赋予alice对/home读、写、执行权限
           [root@tianyun ~]# setfacl -m u:alice:rwx /home
    
      步骤二: 赋予alice对以后在/home下新建的文件有读、写、执行权限 (使alice的权限继承)
        # d     default     继承  #
           [root@tianyun ~]# setfacl -m d:u:alice:rwx /home
    

    相关文章

      网友评论

        本文标题:第04章权限管理

        本文链接:https://www.haomeiwen.com/subject/cvzekftx.html