SUDO:switch user
概述:使用某个用户A或某些用户以其他用户B的身份去执行某些命令,执行该命令的权限依照用户B的权限。实现与配置:1.其配置文件:/etc/sudoers2.配置配置文件:法1:#vim /etc/sudoers法2:#visudoers3.语法格式: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 root4.使用别名: ●用户别名: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 rootUSERMANAGER ALL=(root) USERMANCMND6.日志信息可以通过/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只对其后的命令生效。