我正在运行一个远程 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"
。