• 011 文件管理高级(ACL、SU、SUDO)


    ACL

    ACL是为了解决某种特殊环境下的,用户权限需求。

    • setfacl : 设置acl权限
    • getfacl :查看ACL权限

    acl权限归属

    • u : 指定用户
    • g : 指定组
    • o : 修改其他用户权限
    • m : 指定mask权限

    注:默认情况下,ACL权限跟普通权限保持一致。

    基本用法

     修改属主的权限
     setfacl -m u::权限 a.txt
     
     修改属组的权限
     setfacl -m g::权限 a.txt
     
     修改其他⼈的权限
     setfacl -m o::权限 a.txt
     
     修改具体某⼀个⽤户的权限
     setfacl -m u:⽤户名:权限 a.txt
     
     修改具体某⼀个组的权限
     setfacl -m g:组名:权限 a.txt # 组必须存在
     
     # 也可以给⽬录设置,都⼀样
    

    查看与删除

    # 查看
    getfacl /opt/a.txt
    # 删除
    setfacl -x g:group1 /opt/a.txt # 删除组hr的权限
    setfacl -b /opt/a.txt #删除所有acl权限
    

    创建案例

    • 1、创建文件

      chmod o+x /root
      chmod o+x /root/xiaochen
      cd xiaochen
      
      [root@localhost xiaochen]# touch abc.txt
      [root@localhost xiaochen]# chmod 000 abc.txt 
      [root@localhost xiaochen]# ll
      total 0
      ---------- 1 root root 0 Mar 16 11:39 abc.txt
      
    • 编写文件

      [root@localhost xiaochen]# echo 111 > abc.txt 
      [root@localhost xiaochen]# cat abc.txt 
      111
      
    • 设置ACL权限

      [root@localhost xiaochen]# useradd xiaozhang
      [root@localhost xiaochen]# setfacl -m u:xiaozhang:r abc.txt 
      [root@localhost xiaochen]# getfacl abc.txt 
      # file: abc.txt
      # owner: root
      # group: root
      user::---
      user:xiaozhang:r--
      group::---
      mask::r--
      other::---
      
      # 注:
      setfacl -m u:用户名称:权限(rwx) 文件名称
      
    • 查看文件

      [root@localhost ~]# su - xiaozhang
      [xiaozhang@localhost ~]$ cat /root/xiaochen/abc.txt
      111
      

    mask

    [root@jichu ~]# getfacl a.txt
    # file: a.txt
    # owner: root
    # group: root
    user::---
    user:test:rw-			#effective:r--
    group::---
    mask::r--
    other::---
    

    这里查看a.txt的时候,旁边多了一个#effective:r--,这里代表着,即使用户权限再高,最高的权限只有r,因为由mask控制着。

    除了所有者和other不受影响,其他都会受到mask的影响,mask决定了他们的最⾼权限)

    ps:我们⼀般不更改 mask 权限,只要赋予 mask 最⼤权限(也就是 rwx),则给⽤户或群组设定的 ACL 权限本身就是有效的。
    

    default:继承(默认)

    默认情况下,ACL是不会继承上层目录的权限的,只有目录设置可以继承子集文件才可以继承ACL权限

    [root@localhost linux12]# setfacl -m d:u:xiaochen:w ../linux12
    [root@localhost linux12]# touch bcd.txt
    [root@localhost linux12]# ls -l
    total 0
    -rw-r--r--  1 root root 0 Mar 16 15:40 abc.txt
    -rw-rw-r--+ 1 root root 0 Mar 16 15:43 bcd.txt
    [root@localhost linux12]# getfacl bcd.txt 
    # file: bcd.txt
    # owner: root
    # group: root
    user::rw-
    user:xiaochen:-w-
    group::r-x			#effective:r--
    mask::rw-
    other::r--
    

    文件属性(权限)

    [root@localhost ~]# touch /opt/{1..3}.txt
    [root@localhost ~]# chmod 000 /opt/*
    [root@localhost ~]# lsattr /opt/
    ---------------- /opt/1.txt
    ---------------- /opt/2.txt
    ---------------- /opt/3.txt
    [root@localhost ~]# [root@localhost ~]# chattr +a /opt/1.txt # 允许追加内容
    [root@localhost ~]# chattr +i /opt/2.txt # 禁⽌任何修改,有些病毒程序会对⽂件加
    上该权限
    [root@localhost ~]# chattr +A /opt/3.txt # 不更改⽂件访问时间
    [root@localhost ~]# [root@localhost ~]# lsattr /opt/
    -----a---------- /opt/1.txt
    ----i----------- /opt/2.txt
    -------A-------- /opt/3.txt
    
    # 验证
    [root@localhost ~]# echo 111 >> /opt/1.txt
    [root@localhost ~]# cat /opt/1.txt
    111
    [root@localhost ~]# rm -rf /opt/1.txt
    rm: ⽆法删除"/opt/1.txt": 不允许的操作
     
    # 去掉
    [root@localhost ~]# chattr -a /opt/1.txt
    [root@localhost ~]# chattr -i /opt/2.txt 
    [root@localhost ~]# chattr -A /opt/3.txt
    

    SUDO

    用于普通用提升权限的。

    • 相关的文件:/etc/sudoers

    • 检查/etc/sudoers是否修改正确:visudo -c

    • sudoers文件格式

      tom       ALL=           (ALL)          ALL
      用户名称   所有机器可登陆    所有IP或主机名   所有的指令
      
    • 指令编写格式

      # 必须写全路径:which查看命令全路径
      
      # 只支持vim命令提权
      xianchen ALL=(ALL)  /usr/bin/vim
      
      # 支持所有的命令提权
      tom ALL=(ALL)  ALL
      
      # 不支持某个命令提权
      tom ALL=(ALL) ALL, !/usr/bin/vim
      
      # 不支持某个命令的部分功能
      xiaochen ALL=(ALL)   ALL, !/usr/bin/vim /root/123.txt
      

    su

    • su - xxx 和 su xxx之间区别

      1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户
      
      2、su - xxx : 切换用户执行的系统文件要多于 su xxx
      
      3、su - xxx 是登录
         su  xxx  切换用户
      
    • Linux中的shell可以分为两类

    登陆shell,需要输⼊⽤户名和密码才能进⼊Shell,⽇常接触的最多的⼀种
    ⾮登陆shell,不需要输⼊⽤户和密码就能进⼊Shell,⽐如运⾏bash会开启⼀个新的会话窗⼝
    

    bash shell配置文件介绍

    全局配置⽂件:
     /etc/profile
     /etc/profile.d/*.sh
     /etc/bashrc
    个⼈配置⽂件:
     ~/.bash_profile
     ~/.bashrc
    profile类⽂件, 设定环境变量, 登陆前运⾏的脚本和命令。
    bashrc类⽂件, 设定本地变量, 定义命令别名
    PS: 如果全局配置和个⼈配置产⽣冲突,以个⼈配置为准。
    

    配置文件的执行顺序

    如果执⾏的是登录式shell,那么配置⽂件执⾏顺序是: 
    /etc/profile -> /etc/profile.d/*.sh -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc
    如果执⾏的是⾮登录式shell,那么配置⽂件执⾏顺序是:
    ~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh
    PS: 验证使⽤echo在每⾏添加⼀个输出即可,注意,要把输出放在⽂件的第⼀⾏。如果说要写登录执行脚本,可以配置在/.bashrc当中。
    
  • 相关阅读:
    ThinkPHP 3.2.2 视图模板中使用字符串截取函数
    Java实现洛谷 P2802 回家
    Java实现洛谷 P2802 回家
    Java实现 蓝桥杯VIP 算法提高 change
    Java实现 蓝桥杯VIP 算法提高 change
    Java实现 蓝桥杯VIP 算法提高 change
    Java实现蓝桥杯G将军
    Java实现蓝桥杯G将军
    Java实现蓝桥杯G将军
    Java实现 蓝桥杯 算法提高 字符串压缩
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14545227.html
Copyright © 2020-2023  润新知