![如何在 Linux 上以另一个用户身份运行命令?](https://linux22.com/image/1402737/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%8A%E4%BB%A5%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我可以访问一个 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