如何在 Linux 上以另一个用户身份运行命令?

如何在 Linux 上以另一个用户身份运行命令?

我可以访问一个 Linux 服务器,在那里我可以像这样使用 sudo 来访问‘foo’而不需要密码:

sudo su - foo

一旦我成为“foo”用户,我就可以运行如下脚本:

/dir/foo_user_script.sh

'foo_user_script' 只能由 foo 用户执行,而不能由我的用户执行。因此,我可以通过先切换到 'foo' 用户,然后运行该脚本来运行该脚本。

不过,我正在尝试使用 Java SSH 客户端来自动化一些流程甘尼美德。Ganymed 的常见问题解答建议,要运行多个命令,我应该使用如下结构:

Session.execCommand("echo Hello && echo again")

我尝试了类似的操作,但第二条命令(foo_user_script)没有执行:

Session.execCommand("sudo su - foo && /dir/foo_user_script.sh")

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

有什么方法可以让我通过单个命令运行 /dir/foo_user_script.sh 脚本吗?

笔记:
“sudo -l”向我显示了以下内容:

(root) NOPASSWD: /bin/su - foo

谢谢您的帮助!

答案1

sudo -u foo /dir/foo_user_script.sh

相关内容