目前,我正在使用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()
答案 0 :(得分:0)
假设操作系统环境安装了sudo
命令,normal_user
允许sudo无需密码即可以root用户:
stdin, stdout, stderr = ssh.exec_command('sudo -i -H -- echo $USER ; echo $USER')
选项-i simulators root login(准备.profile
等环境变量),选项-H设置$HOME
目录与root相同。根据您的使用情况,这些可能需要也可能不需要。
echo $USER
示例显示您正在以root身份执行该命令(它应返回$ USER = root)。
作为安全措施,只有当用户使用正确的SSH密钥登录时,您才可以将normal_user
设置为具有sudo权限。
http://www.evans.io/posts/ssh-agent-for-sudo-authentication/(复杂)