SUDO:switch user
概述:使用某个用户A或某些用户以其他用户B的身份去执行某些命令,执行该命令的权限依照用户B的权限。
实现与配置:
1.其配置文件:/etc/sudoers
2.配置配置文件:
法1:#vim /etc/sudoers
法2:#visudoers
3.语法格式:
username|alias host=(username) command_list
用户名|别名 主机=(以谁的身份) 命令列表
例如:jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd
设定jerry可以在所有主机上以root权限去执行/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd这三个命令
由上可以看到,jerry可以执行/usr/bin/passwd,那么他不就可以修改root用户的密码了,为防止该行为我们可以这样设定。
jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root
4.使用别名:
●用户别名:
User_Alias USERMANAGER = jerry, redhat, centos, ubuntu
User_Alias POWERMANAGER = tom, gentoo, USERMANAGER
●命令别名:
Cmnd_Alias USERMANCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root
●主机别名:
Host_Alias MANHOST = ...
注:所有的Alias后面的名称中的字符必须全部使用大写字母,别名中还可以嵌套其他的别名。
5.在第一个字段处,不仅可以使用用户,也可以使用别名定义的组,如果要使用系统上通过"groupadd"添加的组,则需要在在该组前面加上"%".
例如:系统原本有一个组“mygroup”
%mygroup ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root
使用别名定义:
User_Alias USERMANAGER = jerry, redhat, centos, ubuntu
Cmnd_Alias USERMANCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root
USERMANAGER ALL=(root) USERMANCMND
6.日志信息
可以通过/var/log/secure查看使用sudo执行过的命令已经执行命令的用户的详细信息。
7.当某个用户被赋予了sudo可以执行的命令时,每当在两次命令执行的相隔的时间在默认时间之外时,就会被提示必须输入用户的密码,以确保命令执行者的真实身份。但是在这个默认时间内执行则不需要键入用户的密码,为了防止其安全性,这时可以使用:
#sudo -k #####要求下次在使用sudo执行命令时必须输入密码
#sudo -l #####显示当前用户可以使用的sudo的所有命令
当需要为某用户设置在使用sudo命令时,不在输入密码时,可以使用这样的格式:
jerry ALL=(root) NOPASSWD: /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root
jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, NOPASSWD: /usr/bin/passwd, !/usr/bin/passwd root
注:NOPASSWD只对其后的命令生效。