스크립트를 실행해야 하는 이상한 상황이 발생했습니다.일부명령은 루트가 아닌 사용자(사용자)로 실행 root
되고 다른 명령은 루트가 아닌 사용자(사용자)로 실행됩니다 ubuntu
. 뒤에서 이것은 AWS EC2가 백그라운드에서 나를 위해 실행하는 스크립트이며 자동 시작 시 새 노드/인스턴스/VM을 구성하는 스크립트입니다.
나는 다음과 같은 일을 할 수 있다는 것을 알고 있습니다.
#!/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