su切换用户与sudo提权
介绍
因为root用户的权限太大,破坏力太强,安全风险极高,所以通常情况下公司的服务器对外都是禁止root用户直接登录的,而运维组的小伙伴通常使用的都是普通用户,但是运维组内的小伙伴们在进行日常运维管理的过程中,经常需要获得某些root才有的管理权限才能完成任务,例如需要执行/sbin目录下的命令。
那么如何才能在不适用root用户直接登录操作系统的同时又能保证普通用户完成日常工作呢,有两种方案:
1.su切换用户身份
特点:使用普通用户登录,然后使用su命令切换到root账户下
优点:简单粗暴
缺点:
1.需要知道root密码
2.权限控制不精细,每次都是获取所有root权限
2. sudo
特点:在当前普通用户下进行操作,不需要切换到root账户下,在执行操作命令格式为:sudo 命令,输入的是普通股用户自己的密码。
优点:root密码没有泄露,普通用户获取了部分管理权限
缺点:相对复杂
让普通用户具备管理员权限
1.su切换用户身份,从一个用户切换到另一个用户
1.liunx中shell分为两种级别:
登录级别shell;
1.输入账号密码登录进来
2.su - 用户名(管理员root切换到普通用户下无需输入密码,反之则需要)
切换身份执行命令:su - 用户 -c "命令"
非登录级别shell # 只切换用户身份
su 用户名
登录级别的shell运行配置文件的优先级是:
/etc/profile-->/etc/profile.d/*.sh-->普通用户家目录下的 ~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登录级别shell运行配置文件的优先级是:
~/.bashrc--->/etc/bashrc--->/etc/profile.d/*.sh
sudo提权
在日常的运维当中,我们不应该把root的密码公开给所有人,以内,一方面,真那样做的话,安全风险就太高了,删库跑路发生的概率估计会加大,另外一方面,小伙伴们大多数情况下只需要提取某一些权限来使用即可,一并不是需要全部的管理员权限,所以说sudo比su更为靠谱一些。
通过配置sudo,我们可以实现让普通用户输入自己的密码的情况下而获取我们为其配置的特定权限,这样,既保证了普通用户拥有他想要的特定权限,又不至于泄露管理root的密码。
不需要切换用户,即用户身份不变,但是可以获取root的部分管理权限
在管理员下修改配置文件/etc/sudoers来分配权限
vim /etc/sudoers # 风险高
# 两种修改配置方式:
1.visudo (会提示语法错误,推荐使用) 不需要加文件路径
visudo -c # 检查配置是否正确
/etc/sudoers:解析正确
2. vim /etc/sudoers
# sudo 语法
Syntax user MACHINE-COMMANDS
sudo -k # 清除缓存密码
当使用sudo提前执行某条命令时,提权后第一次使用sudo执行命令,需要输入当前用户密码
图1:
图2:
图3:
图4:
图5:
图6: