目前,我正在使用Python脚本运行嵌入式shell脚本,该操作系统包含root和normal_user。
问题是,当我尝试在一行中使用单个命令从normal_user切换到root时。
我只需要修改代码,什么visudo
也不能实现,su
只使用它,而不给normal_user编码以外的任何权限。
我该如何实现?
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('172.16.x.x', username='my_name', password='my_password')
***stdin, stdout, stderr = ssh.exec_command('switch to root user && execute a commands as root')***
stdin.flush()
print stdout.readlines()
ssh.close()
假设OS环境已sudo
安装命令,normal_user
并且允许在没有密码的情况下sudo到root:
stdin, stdout, stderr = ssh.exec_command('sudo -i -H -- echo $USER ; echo $USER')
选项-i模拟程序以root用户登录(准备.profile
等环境变量),选项-H将$HOME
目录设置为与root用户相同。根据您的用例,这些可能是必要的,也可能不是必需的。
echo $USER
示例显示您以root用户身份执行该命令(它应返回$ USER = root)。
为了安全起见,normal_user
仅当用户使用正确的SSH密钥登录时,才能将sudo权限设置为。
http://www.evans.io/posts/ssh-agent-for-sudo-authentication/(复杂)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句