Centos7_高级权限与提权

众所都周知:linux一切皆文件

高级权限

  一、ACL

用命令setfacl设置的ACL权限是UGO权限的扩展
setfacl可以更精确的控制权限的分配,比如让某一个用户对某一个文件具有某种权限

也可以对组设置,设置的用户和组都必须存在,
也可以给目录设置,都一样
# 查看权限:
    getfacl 文件

#设置权限:
    setfacl -m u:用户:权限 文件      #用户可为空,为修改属主权限
    setfacl -m g:组:权限 文件        #组可为空,为修改属组权限
    setfacl -m o:用户:权限 文件        #用户可为空,为修改其他人的权限

# 清除权限:
    setfacl -x g:组 文件      #删除组的权限
    setfacl -b 文件        #删除文件所有acl权限

  二、文件属性

# 查看文件属性
    a      仅允许追加内容
    i      禁止修改内容
    A      不更改文件访问时间

# 设置属性
    chattr +属性 文件

# 删除属性
    chattr -属性 文件

切换用户与提权

su:
    特点:使用普通用户登录,然后使用su命令切换到root账户下
    优点:简单粗暴
    缺点:
        1、需要知道root密码
        2、权限控制不精细;每次都是获取所有root权限
sudo:
    特点:
        1、使用普通用户登录,然后sudo命令提取root用户的部分管理权限,注意只是某部分,而不是全部
        2、不需要切换到root用户下
    优点:
        1、不需要知道root密码,输入的是自己的密码
        2、权限控制更为精细,可以控制普通用户只获取部分root权限
    缺点:相对复杂

  1、SU切换用户

1、linux中shell可以分为两类
    登录shell:需要输入用户名密码才能进入shell,我们日常接触的最多
    非登录shell:不需要输入用户名密码就能进入shell,比如运行bash会开启一个新的会话窗口

2、shell的使用方式有两种
    交互式:等待用户输入执行命令(终端操作,需要不断提示)
    非交互式:执行shell脚本,脚本执行结束后shell自动退出
bash shell配置文件介绍

文件主要保存用户的工作环境

全局配置文件:
    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc
个人配置文件
~/.bash_profile
~/.bashrc

PS:
profile类文件,设置环境变量,登陆前运行的脚本和命令
bashrc类文件,设定本地变量,定义命令别名
如果全局配置与个人配置产生冲突,以个人配置为准

配置文件的应用顺序:
    如果执行的是登陆式shell,那么配置文件的执行顺序是:
    /etc/profile > /etc/profile.d/*.sh > ~/.bash_profile > ~/.bashrc > /etc/bashrc

    如果执行的是非登录式shell,那么配置文件的执行顺序是:
    ~/.bashrc > /etc/bashrc > /etc/profile.d/*.sh
执行登录与非登录式shell
    # 执行登录式shell,身份与环境都切换
    su - 用户

    # 执行非登录shell,只切换用户身份
    su 用户

PS:
    1、从root用户切换到普通用户无需输入密码,反之则需要
    2、切换身份执行命令  su - 用户 -c "命令"
 ```

##   2、sudo提权
```bash
配置的两种方式
    1、visudo
        会提示语法错误,推荐使用
        -c  检查配置是否正确

    2、vim /etc/sudoers
        语法:syntax:  user  MACHINE=COMMANDS
        例如:root  ALL=(ALL)  ALL  
            (all)表示允许用户以哪个用户的权限做事
            root表示用户可以在所偶遇主机上以任意用户身份执行所有命令

    sudo常用参数
    -l    登录用户下,执行sudo -l ,显示当前用户有哪些权限
    -k    删除/var/db/sudo/下面对应的时间戳信息,下次执行sudo需要输入当前用户的密码;系统默认5分钟失效;配置免密是另一种情况