细说linux学习---ASL权限、其他特殊权限

  1. 场景 
    细说linux学习---ASL权限、其他特殊权限_第1张图片如何用户root创建了一个/project目录,同时给这个目录设置的权限是: 所有者(rwx)、组权限(rwx)、其他人(---)。  
    此时若不改变原本的权限同时,想给st用户设置 r-x权限, 如何设置???? 
  2. 设定ACL权限
    格式: setfacl 选项 文件/目录名
          -m: 设定ACL权限  
          -x:  删除指定的ACL权限 
          -b: 删除所有的ACL权限  
          -d: 设定默认ACL权限。 
          -k: 删除默认ACL权限  
          -R: 递归设定ACL权限
     
    // 表示给用户st设置对project目录的rx权限
    //  -m: 设置asl权限  u:表示设置用户, g表示设置组   st: 用户名  rx: 权限  /project/: 设置的目录
    setfacl -m u:st:rx /project/
    
    // 给tgroup2组设置rwx权限  g: 表示组   tgroup2: 组号   rwx: 权限
    setfacl -m g:tgroup2:rwx project/
    
    // 递归设置, 表示设置该目录下所有的子目录/文件 
    setfacl -m u:用户名:权限 -R 目录名
    // 同上表示递归设置. 但是d: 表示设置完成后,如果再新增子文件会默认继承父级的asl权限。
    setfacl -m d:u:用户名:权限 -R 目录名
    
    
  3. 查看ASL权限
    // 查看/project的权限  此时就会有一个'+'号
    [root@localhost /]#  ll /
    drwxrwx---+   2 root tgroup   16 5月  25 14:31 project
    
    [root@localhost /]# getfacl /project
    getfacl: Removing leading '/' from absolute path names
    # file: project
    # owner: root
    # group: tgroup
    user::rwx
    user:st:r-x        // asl: 用户st的r-x权限
    group::rwx     
    group:tgroup2:rwx  // asl: 组tgroup2的rwx权限
    mask::rwx
    other::---
    
    注意: 这里有个mask: rwx权限,通常我们设置的权限都是要与mask的权限进行'与'关系后得到真实的用户权限。但是不会影响所有者的权限。
    如果mask:r--权限,此时就算给用户st设置rwx权限,但是通过'与'计算后,最终该用户的真实权限为: r--。
  4. 删除ASL权限
    删除用户asl权限:  setfacl -x u:用户名 文件名 
    删除组asl权限:  setfacl -x g:组名 文件名 
    删除所有asl权限:  setfacl -b 文件名
    // 删除用户st的asl权限
    setfacl -x u:st /project
    
    // 删除组tgroup2的asl权限
    setfacl -x g:tgroup2 /project
     
  5. linux中的特殊权限
    // rws表示命令执行者在执行该命令时获得该命令文件属主的身份(-rws),执行结束后又变回原来的身份
    [root@localhost /]# ll /usr/bin/passwd 
    -rwsr-xr-x. 1 root root 27856 8月   9 2019 /usr/bin/passwd
    
    
    //  用户user1对/usr/bin/locate命令拥有执行权限
    //  在执行/usr/bin/locate命令时,该用户的组身份会升级为slocate组, 因为slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
    //  命令结束,user1用户的组身份返回为user1组
    [root@localhost /]# ll /usr/bin/locate 
    -rwx--s--x. 1 root slocate 40520 4月  11 2018 /usr/bin/locate
    
    
    
    //  粘着位    --- 目前只对目录有效
    [root@localhost /]# ll -d /tmp/
    drwxrwxrwt. 9 root root 187 5月  25 04:24 /tmp/
    
    说明: drwxrwxrwt的t表示在tmp目录下,假设用户都有rwx权限,但是user1不能删除user2在/tmp下创建的文件,可以查看编辑
    设置粘着位
      chmod 1755 目录名
      chmod o+t 目录名
    
    取消粘着位
      chmod 777 目录名
      chmod o-t 目录名
  6.  文件系统属性chattr权限
    格式:  chattr [+-=] [选项] 文件或目录名      --对root用户都有效
      +: 增加权限
       -: 删除权限
      =: 等于某权限
      i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;
          如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
     a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;
          如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
    // 对admin.txt文件增加i属性
    chattr +i admin.txt
    
    // 此时在修改、删除admin.txt文件,就会提示权限不足,即使是root用户
    
    // 对admin.txt文件减去i属性
    chattr -i admin.txt
    
     
  7. 查看系统文件属性权限
    格式:  lsattr [选项] 文件名
        -a 显示所有文件和目录
        -d 若目标是目录,仅列出目录本身的属 性,而不是子文件的
    // 查看系统属性权限
    [root@localhost aa]# lsattr -a admin.txt 
    ----i----------- admin.txt
    
  8. sudo权限
    sudo就是把本来只能超级用户执行的命令赋予普通用户执行。 sudo的操作对象是系统命令
    命令:visudo   -- visudo命令, 就是修改/etc/sudoers文件   
     root用户设置sudo命令权限
    // 1. 使用visudo编辑命令
      visudo
    // 2. 在文件对应地方添加如下内容: 
    root    ALL=(ALL)       ALL
    zhangsan ALL= /sbin/shutdown –r now
    lisi 192.168.2.116= /sbin/shutdown –r now
    
    表示允许用户zhangsan操作任何主机,来执行shutdown -r now命令       
    表示允许用户lisi可以控制192.168.2.116主机服务器,来执行shutdown -r now命令    -- 注意这个ip不是登录的来源ip细说linux学习---ASL权限、其他特殊权限_第2张图片
     
    普通用户查看、执行sudo赋予的命令 
    // 1. 切换zhangsan用户
      su – zhangsan
    // 2. 查看张三的sudo权限
      sudo -l
    // 3. zhangsan执行命令
      sudo /sbin/shutdown -r now
    细说linux学习---ASL权限、其他特殊权限_第3张图片
     

你可能感兴趣的:(细说linux学习---ASL权限、其他特殊权限)