如何在 Linux 上以其他用户身份运行命令?

Geo*_*rge 4 linux ssh bash shell command-line

我可以访问一个 linux 服务器,在那里我可以在没有密码的情况下像这样 sudo 到 'foo':

sudo su - foo
Run Code Online (Sandbox Code Playgroud)

一旦我成为 'foo' 用户,我就可以运行这样的脚本:

/dir/foo_user_script.sh
Run Code Online (Sandbox Code Playgroud)

'foo_user_script' 只能由 foo 用户而不是我的用户执行。因此,我可以通过首先更改为“foo”用户然后运行脚本来运行脚本。

但是,我正在尝试使用 Java SSH 客户端ganymed自动化一些流程。Ganymed 的 faq 建议运行多个命令,我应该使用如下结构:

Session.execCommand("echo Hello && echo again")
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情,但第二个命令(foo_user_script)没有执行:

Session.execCommand("sudo su - foo && /dir/foo_user_script.sh")
Run Code Online (Sandbox Code Playgroud)

我认为这不起作用,因为 su 启动了一个新的 shell。

我有什么办法可以在单个命令中运行 /dir/foo_user_script.sh 脚本吗?

注意:
“sudo -l”向我展示了这个:

(root) NOPASSWD: /bin/su - foo
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

小智 7

sudo -u foo /dir/foo_user_script.sh