如何以没有 root 权限的其他用户身份执行远程命令?

如何以没有 root 权限的其他用户身份执行远程命令?

我正在编写一个 bash 脚本来收集多台主机上某些文件的下落。我已经到了可以使用 ssh 登录、执行多条命令的地步,但在某些主机上,但在多台主机上,我需要切换到其他用户。

我遇到的问题是因为我不是 root 用户,也不是我需要切换到的用户。所以我不断收到密码提示或错误提示,因为我不是 root 用户,所以不允许输入密码或错误。

  1. 我如何只输入一次自己的密码?
    我不是 root 用户,其他用户也不是。我想我需要使用“sudo su”,但我是否向提示输入了自己的密码?我尝试使用 expect 和 echo -e "pwd" | sudo -S

  2. su 到不同的用户并让其执行命令?

到目前为止我已经:

#!bin/bash
...
# works fine
output=$(ssh -q $USER@host "whoami;whoami")
...
# prompts for pwd and executes command after exiting the new shell
output=$(ssh -t -q $USER@$host "sudo su - otheruser ; whoami"
...

答案1

要使用 sudo 以另一个用户身份运行命令,请配置为允许您访问其他帐户,请使用

sudo -u otheruser yourcommand

和您的密码。

要使用其他用户的密码获取 shell,请使用

su -c "yourcommand" otheruser

sudo 会缓存密码,而 su 则不会。如果想避免多次输入密码,您可以使用任一命令启动 shell,并在注销前执行所有需要执行的操作。

另一件事: sudo su是一种反模式,sudo su - otheruser甚至更多,因为它su仅用于启动一个 shell。sudo bash(或者你使用的 shell)将是相同的。

如果您想从 sudo 获取 shell,请使用sudo -s(shell) 或sudo -i(login shell)。

相关内容