使用 sudo su - user 登录新用户后,命令不会传递给 CLI



强制性的"首篇文章"标签。问题:输入密码后,命令不会传递到命令行sudo su - userB

我正在用 bash 编写一个脚本,需要以特定用户身份运行。理想情况下,我们希望此脚本能够在我们的本地工作站上运行,以便于使用。这是我正在运行以测试的命令:

ssh -qt -p22 userA@hostname "whoami; sudo su - userB; whoami"
Expected:
userA
[sudo] password for userA:
userB

使用此命令,我能够获得输入sudo密码的提示,但是一旦输入,我就会看到一个普通的终端,我可以在其中手动运行命令。一旦我按 ctrl-D/退出,它就会以用户 A 的身份运行第二个 whoami 并关闭。我在一个极度监狱的环境中工作,所以sudo su -c和类似的"以root身份运行"命令不起作用,我不能直接ssh到userB。

有没有办法通过使用sudo su - userB登录将命令发送给用户B?

su创建一个子shell,默认情况下从标准输入中读取命令。它在退出后执行whoami。可以使用-c选项向其传递命令。

ssh -qt -p22 userA@hostname "whoami; sudo su - userB -c 'whoami'"

您还可以使用-u选项进行sudo,而不是使用su

ssh -qt -p22 userA@hostname "whoami; sudo -u userB whoami"