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只对其后的命令生效。