普通用户提权
往往公司的服务器对外都是禁止root
用户直接登录,所以我们通常使用的都是普通用户,当我们使用普通用户执行/sbin
目录下部分命令时,会发现没有权限,这种情况我们可以使用如下两种方式:su
、sudo
su switch user
身份切换,使用普通用户登录,然后使用su
命令切换到root
- 优点:简单
- 缺点:需要知道
root
密码
sudo
提权,当需要使用root
权限时进行提权,而无需切换至root
用户- 优点:安全、方便、
- 缺点:需要预先定义规则、较为复杂
# su命令身份切换
- 在使用
su
切换身份前,我们需要了解shell
登陆分类、环境变量配置文件加载顺序;
# Shell登陆分类
- 登陆
shell
需要输入用户名和密码才能进入Shell
,日常接触的最多的一种 - 非登陆
shell
不需要输入用户和密码就能进入Shell
,比如运行bash
会开启一个新的会话窗口
# 环境变量配置文件
profile
类文件:设定环境变量,登陆前运行的脚本和命令bashrc
类文件:设定本地变量,定义命令别名- 用户配置文件:
~/.bash_profile
~/.bashrc
- 全局环境变量:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
- 登录式
shell
配置文件加载顺序︰/etc/profile
->/etc/profile.d/*.sh
->~/.bash_profile
->~/.bashrc
->/etc/bashrc
- 非登录式
shell
配置文件加载顺序:~/.bashrc
->/etc/bashrc
->/etc/profile.d/*.sh
# su与环境变量的关系
su - username
属于登陆式Shell
su username
属于非登陆式Shell
- 它们最大的区别就在于加载的环境变量不一样;
普通用户使用su
切换到root
用户,需要输入root
超级管理员密码;
[bi@web ~]$ su - root
密码:
[root@web ~]# pwd
/root
1
2
3
4
2
3
4
以某个用户的身份执行某个服务,使用命令su - username -c 'command'
# 只执行命令,不会切换到用户
[root@web ~]# su - bi -c 'ifconfig'
[root@web ~]# su - bi -c 'ls ~'
1
2
3
2
3
# sudo命令提权
# sudo的由来
su
命令在用户身份切换时,需要拿到root
管理员密码;在多人协作时,如果当中某个用户不小心泄露了root
密码;那系统会变得非常不安全,为了改进这个问题,从而就有了sudo
;
其实sudo
就是给某个普通用户埋下了浩克hulk
的种子,当需要执行一些特权操作时,进行发怒,获取最高权限,但正常情况下还是普通用户,仍然会受到系统的约束以及限制;
# sudo快速起步
快速配置sudo
方式[先睹为快]
将用户加入
wheel
组,默认wheel
组有sudo
权限;[root@web ~]# usermod bi -G wheel
1切换到普通用户身份;
[root@web ~]# su - bi
1普通用户正常情况下无法删除/opt目录;
[bi@web ~]$ rm -rf /opt/ rm: cannot remove `/opt: Permission denied
1
2使用
sudo
提权,然后输入普通用户密码,会发现能正常删除无权限的/opt
目录;[bi@web ~]$ sudo rm -rf /opt
1后期可以通过审计日志查看普通用户提权都执行了什么操作;
[root@web ~]# tail -f /var/log/secure
1
Last Updated: 2021/11/05, 14:31:43