sudo的使用

本文深入解析了sudo命令的使用及配置方法,详细介绍了如何通过编辑/etc/sudoers文件实现用户权限管理,包括命令授权定义格式、别名定义格式等,以及具体的应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

在生产环境中,通常不会以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则无效
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值