su #切换用户,普通用户切换到root用户,需要知道root密码
优点:简单
缺点:需要知道root密码
su -:加 - 属于登录式shell,不加属于非登录式shell
sudo #提权,普通用户需要使用root权限时进行提权,无需切换到root用户
优点:安全,方便
缺点:复杂
sudo su - #使用root用户登录,不用输入root密码即可切换
sudo -l:查看有执行那些命令的权限
日志审计:
/var/log/secure #记录命令执行的详细信息
给用户授权可执行某个命令:
vim /etc/sudoers == visudo(有语法检测功能,推荐使用visudo)
添加如下命令:
用户名 主机名 角色名 命令名
leon ALL=(ALL) NOPASSWD:/usr/bin/yum #NOPASSWD,使用sudo命令时不需要输入密码
执行:
visudo -c #使修改生效
一、逻辑上的分组,不是group分组,推荐使用这个,新用户直接加到相关组中即可
使用sudo中自带的别名操作,将多个用户定义成一个组,这个组只有sudo认可
1.使用sudo定义别名分组:
User_Alisa OPS=leon,awai
User_Alisa DEV=yanan,lei
2.定义可执行的命令组
Cmnd_Alias NETWORKING=/sbin/route, /sbin/ifconfig
Cmnd_Alias SOFTWARE=/bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias SERVICES=/sbin/service, /sbin/chkconfig
Cmnd_Alias STORAGE=/sbin/fdisk, /sbin/sfdisk
3.给定义的分组授权执行什么命令
OPS ALL=(ALL) NOPASSWD: NETWORKING,SOFTWARE #NOPASSWD,使用sudo命令时不需要输入密码
DEV ALL=(ALL) NOPASSWD: SERVICES,STORAGE
二、使用groupadd创建个真实组,然后给组分配对应的权限,如果有新用户加入,直接将用户加入到组即可
%组名 ALL=(ALL) NOPASSWD: ALL
sudo用户执行过程:
检查/var/db/sudo下是否有时间戳文件,并检查是否过期(有没有输入过密码)
未过期:
过期--》输入用户自己的口令--》检查/etc/sudoers配置文件是否有运行sudo和执行
相应命令的权限