当前位置: 首页 > 工具软件 > SUDO > 使用案例 >

sudo的使用

毛镜
2023-12-01

简介

在生产环境中,通常不会以root用户身份直接登录服务器进行配置管理。但是对于某些内容配置时,非管理员的身份限制了我们的某些操作,于是可以通过一个策略,让某个或某些用户能够以其他用户的身份去运行某些程序、管理某些文件。



sudo的使用及配置

这个策略被定义在:/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'	#命令别名定义


例子

  • 现有三个用户user1,user2,user3;
  • 要求user1可以使用passwd命令(可以修改所有人密码,包括管理员)且切换时不需要输入密码,仅限本地登录有效;
  • 要求user2,user3可以使用paswd命令,但不能修改管理员与user1的密码,登录主机不受限制

配置内容:

# 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则无效
*/
 类似资料: