在生产环境中,通常不会以root用户身份直接登录服务器进行配置管理。但是对于某些内容配置时,非管理员的身份限制了我们的某些操作,于是可以通过一个策略,让某个或某些用户能够以其他用户的身份去运行某些程序、管理某些文件。
这个策略被定义在:/etc/sudoers 文件中
su和sudo命令:
su -l USER #切换到某用户
su -l USER -c 'COMMAND' #以某个用户身份执行该命令,但不切换到该用户
sudo -u USER COMMAND #以某个用户的身份执行命令,不使用-u选项默认为root用户
sudo -k #某段时间内首次使用sudo时会提示输入当前用户密码,使用此命令即可清楚之前输入的密码,即下一次使用sudo命令时会提示输入密码
命令授权定义格式:
user host=(user2) commands #user可以在host主机上以user2的身份运行commands这些命令
user可使用格式:
user_name:直接给出用户名
#uid:使用用户的uid
%group:给出组名(带百分号),此组内用户允许
%#gid:同上,给出形式为gid
host可使用格式:
hostname:直接给出主机名
ip:IP地址
netaddr:网络地址,IP/MASK_LENTH
commands可使用格式:
COMMAND:给出命令绝对路径
COMMAND1, COMMAND2, ...:多个命令
注:其中user,host,commands都可以使用别名形式,其作用是将多个或某一类对象整合起来使用,需要事先定义,定义格式见别名定义格式板块。
别名定义格式: Alias_Type NAME=item1, item2, …
User_Alias ADMINUSER=centos, testuser #用户别名定义格式,其中别名必须为大写
Host_Alias SECIP=172.27.100.0/24, 172.27.200.0/24 #主机别名定义
Cmnd_Alias NETCMD='/usr/sbin/ip', 'usr/sbin/ifocnfig' #命令别名定义
配置内容:
# visudo #编辑/etc/sudoers文件,相当于:vim /etc/sudoers
/*增加内容如下
User_Alias USER23=user2, user3
Cmnd_Alias USER23CMD=/bin/passwd [a-z]*, !/bin/passwd root, !/bin/passwd user1
#上命令别名限制了user2,user3使用passwd命令后必须跟参数,且参数不能为root和user1
user1 localhost=(root) NOPASSWD:/bin/passwd
USER23 ALL=(root) USER23CMD
注:此处user1,2,3必须以终端登陆后使用sudo才会有效,通过其他用户切换至该用户使用sudo则无效
*/