我需要在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/