【问题标题】:Linux shell script - How to switch user and run a script?Linux shell 脚本 - 如何切换用户并运行脚本?
【发布时间】:2018-07-19 09:18:45
【问题描述】:

我目前正在编写一个 .sh 脚本来在 4 台不同的机器上部署不同的应用程序。现在我无法以另一个用户身份运行脚本。我需要使用 myUser 使用我的凭据登录,然后 sudo su 到 user2 以运行特定脚本。

通常,我会手动执行以下操作:

ssh myUser@remotehost
[Type in password]
sudo su - user2
cd /path/only/accessible/to/user2
./someScript.sh

当我尝试时

ssh -t myUser@$remotehost "sudo su - user2 && /path/only/accessible/to/user2 && ./someScript.sh"

我被询问了密码,然后以 user2 身份登录,没有来自脚本的任何反馈,这通常会给我一些信息。

我做错了什么?

【问题讨论】:

  • 1.不要在sudo su - 或sudosu 中使用,但不能同时使用。 2.在ssh你忘了做cd,为什么不直接运行脚本(不带cd),即"sudo su - user2 && /path/only/accessible/to/user2/someScript.sh"

标签: linux shell ssh sudo su


【解决方案1】:

试试
ssh -t myUser@$remotehost "sudo -u user2 /path/only/accessible/to/user2/someScript.sh"

如果您之后需要 shell 访问权限,您可以使用
ssh -t myUser@$remotehost "sudo -u user2 /path/only/accessible/to/user2/someScript.sh && /bin/bash -l"

【讨论】:

  • 为什么是sudo su?你不觉得有什么问题吗?这是一种不好的做法。
  • 已编辑(使用 sudo su 来自 Anthony 的问题)。现在回答没有它
  • 本来可以,但我无权在该机器上以 user2 身份执行(这很奇怪,但是嗯),只能切换用户。我仍会将您的答案标记为已接受学习体验。谢谢!我剩下的战斗将与系统管理员进行
【解决方案2】:

如果有人对此有疑问,请更新。

我最后做的是使用 ssh 密钥登录。我的系统管理员必须参与才能进行设置,但至少这是一个可行的选择。

ssh -i /path/to/sshKey user2@$remoteHost "/path/only/accessible/to/user2/someScript.sh"

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多