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

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

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

最佳答案

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语言具有相同的功能。)

关于linux - 如何在将sudo用作另一个用户时运行多个命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41045117/

10-14 10:49
查看更多