• 高级权限--acl, mask,文件属性权限;su切换用户,sudo提权


    高级权限

    ⼀ 、⽂件权限管理:ACL

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

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

    acl权限归属

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

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

    ⽂件⼀旦设置了acl权限后,查看信息会出现⼀个加号,以后包括UGO在内的权限都可以⽤setfacl来设置

    修改属主的权限
     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权限
    

    应用示例:ACL流程

    • 创建文件
    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 xiaocao
    [root@localhost xiaochen]# setfacl -m u:xiaocao: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 - xiaocao
    [xiaocao@localhost ~]$ cat /root/xiaochen/abc.txt
    111
    

    ACL权限的删除

    • 删除某个权限
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    user:xiaozhang:r--
    group::---
    group:xiaochen:r-x		#effective:r--
    mask::rw-
    other::r--
    
    [root@localhost xiaochen]# setfacl -x u:xiaozhang abc.txt
    
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    group::---
    group:xiaochen:r-x
    mask::r-x
    other::r--
    
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    group::---
    group:xiaochen:r-x
    mask::r-x
    other::r--
    
    [root@localhost xiaochen]# setfacl -x g:xiaochen abc.txt 
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    group::---
    mask::---
    other::r--
    
    • 清空acl权限
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    user:xiaochen:rw-
    user:xiaocao:rw-
    group::---
    group:xiaochen:rw-
    group:xiaocao:rw-
    mask::rw-
    other::r--
    
    [root@localhost xiaochen]# setfacl -b abc.txt 
    [root@localhost xiaochen]# getfacl abc.txt 
    # file: abc.txt
    # owner: root
    # group: root
    user::---
    group::---
    other::r--
    

    ACL继承

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

    [root@localhost ~]# mkdir zizi
    [root@localhost ~]# cd zizi/
    [root@localhost zizi]# setfacl -m d:u:dandan:w ../zizi
    [root@localhost zizi]# touch abc.txt
    [root@localhost zizi]# ls -l
    total 0
    -rw-rw-r--+ 1 root root 0 Mar 16 22:12 abc.txt
    [root@localhost zizi]# getfacl abc.txt
    # file: abc.txt
    # owner: root
    # group: root
    user::rw-
    user:dandan:-w-
    group::r-x			#effective:r--
    mask::rw-
    other::r--
    

    ACL高级用法==========> mask

    设置mask命令如下

    setfacl -m m:rw /opt/a.txt
    

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

    mask值就像⼀个筛⼦,⽂件属主和other之外的所有权限都需要被它筛⼀遍,如果mask值为rw-则代表

    该筛⼦只放⾏rw权限。本质原理是权限A需要与mask值B进⾏按位与运算,得到的结果才是effective有 效权限

    建议:为了⽅便管理⽂件权限,其他⼈的权限置为空:chmod o=- /opt/a.txt

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

    二、⽂件权限管理:⽂件属性(权限)

    [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或主机名   所有的指令
    

    sudo提取部分管理员权限

    特点:
     1、使⽤普通⽤户登录,然后sudo命令提取root⽤户的部分管理权限,注意只是某部分,⽽不是全
    部。
     2、不需要切换到root账户下
     
    优点:相对复杂
    缺点:
     1、不需要知道root密码,输⼊的是⽤户⾃⼰的密码
     2、权限控制更为精细:可以控制普通⽤户只获取部分root权限
    
    • 指令编写格式
    # 必须写全路径: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切换⽤户身份

    特点:使⽤普通⽤户登录,然后使⽤su命令切换到root账户下
    优点:简单粗暴
    缺点:
     1、需要知道root密码
     2、权限控制不精细:每次都是获取所有root权限
    

    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在每⾏添加⼀个输出即可,注意,要把输出放在⽂件的第⼀⾏。
    

    执⾏登录与⾮登录shell

    # 执⾏登录shell:身份与环境都切换
    su - ⽤户
    # 执⾏⾮登录shell:只切换⽤户身份
    su ⽤户
    # 补充:
    # 1、从root往普通⽤户下切换⽆需输⼊密码,反之则需要
    # 2、切换身份执⾏命令:su - ⽤户 -c “命令”
    

    su - xxx 和 su xxx之间区别

    1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户
    
    2、su - xxx : 切换用户执行的系统文件要多于 su xxx
    
    3、su - xxx 是登录
       su  xxx  切换用户
    
  • 相关阅读:
    类与继承
    闭包、原型链和继承
    ajax(下)和“承诺”
    ajax(上)
    Ubuntu电源键软关机设置
    金老师语录摘要(七)
    金老师语录摘要(六)
    金老师语录摘要(四)
    金老师语录摘要(三)
    金老师语录摘要(二)
  • 原文地址:https://www.cnblogs.com/caodan01/p/14545080.html
Copyright © 2020-2023  润新知