【问题标题】:How to run multiple commands while using sudo as another user如何在以其他用户身份使用 sudo 时运行多个命令
【发布时间】:2016-12-08 17:13:11
【问题描述】:

我需要在 Linux 中以另一个用户身份运行两个或更多命令。例如,使用“root”,我需要对另一个用户执行 sudo 并执行“cd /tmp/; ls -ltr”之类的操作。

如果我这样做:"sudo -i -u john.smith whoami" 不带双引号,它会告诉我我是 john.smith。

现在我想扩展 do whoami、更改目录并执行 ls 命令,同时使用“root”来 sudo 作为 john.smith。

【问题讨论】:

  • 你能说清楚你想要什么吗?
  • 制作一个脚本并运行它?
  • 对不起,我应该澄清一下我想在不编写脚本的情况下尝试这个。最终,我希望能够使用我们的自动化调度程序即时更新命令,而无需登录服务器并更新脚本。这样,如果我不在,其他人也可以这样做。

标签: linux


【解决方案1】:

Bash 支持-c 标志,它允许您指定要作为命令行参数运行的命令——基本上是一个内联 Bash 脚本。这意味着您可以轻松地将多个命令组合成一个对bash 的调用,然后轻松调用sudo-ed:

sudo -i -u john.smith bash -c 'whoami ; cd /tmp/ ; ls -ltr'

sudo -i -u john.smith \
  bash -c ' whoami
            cd /tmp/
            ls -ltr
          '

(其他 shell 语言也有同样的特性。)

【讨论】:

    【解决方案2】:

    您可以制作小的 shell 脚本文件并使用 sudo 启动它。

    我在 Ubuntu 上经常使用的另一件事是制作“sudo su”——这给了我 root shell,然后我从那里开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-09
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多