在 Bash 脚本中执行 SU

在 Bash 脚本中执行 SU

我正在运行一个远程 bash 脚本(使用 ssh -t 'bash doscript.sh')。在“doscript.sh”中,我有一个 sudo su anotheruser。此时,脚本似乎推送了一个 shell,我留在那个“交互式”脚本中,除非我输入“exit”,否则我的脚本(doscript.sh)的其余部分不会运行。有没有解决这个问题的解决方法?

提前致谢。

以下是我的测试脚本“doscript.sh”的内容:

sudo su diy
cd
pwd
whoami
exit
whoami

答案1

sudo启动一个 shell,除非您另有指示。

看起来您实际上想以其他用户身份运行此脚本。为此,请尝试以下操作:

#!/bin/bash
if [ `id -nu` != diy ]; then
    sudo -u diy $0 # Re-run this script as user diy
else
    # Everything you want to do goes here
fi

请记住/etc/sudoers必须设置以允许原始用户以新用户身份运行此脚本。

答案2

su正如您在脚本中所使用的那样,仅以su其他用户的身份运行该行本身。

使用su - otheruser -c "cmds to execute"

相关内容