我有一个奇怪的情况,我需要运行一个脚本一些命令以非root(用户)身份运行root
,其他命令以非root(用户)身份运行ubuntu
。在幕后,这是 AWS EC2 在后台为我运行的一个脚本,它是一个在新节点/实例/虚拟机自动启动时为我配置新节点/实例/虚拟机的脚本。
我知道我可以做这样的事情:
#!/bin/bash
sudo -u ubuntu -i <<'EOF'
cmd1
cmd2
cmd3
EOF
root
然而,由于这个脚本的性质,我实际上需要在和之间来回跳转ubuntu
几次。是否有可能做到这一点?要以用户 1 的身份运行脚本中的一组命令,然后以用户 2 的身份运行后续的一组命令(同一脚本),然后再次以用户 1 的身份运行最后一组命令?如果是这样,怎么办?如果没有,只是好奇,为什么?!
答案1
Tried with this worked fine
I am running this script as root
#!/bin/bash
su praveen <<'EOF' ====> it will switch to praveen user and executes command
whoami
w
exit ===> here it will exits and go back to root user
EOF
whoami ====> here its running whoami command as root user