强制性的"首篇文章"标签。问题:输入密码后,命令不会传递到命令行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"