![다른 사용자 ID로 로그인하고 명령을 실행하려면 어떻게 해야 합니까?](https://linux55.com/image/189723/%EB%8B%A4%EB%A5%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%20ID%EB%A1%9C%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%98%EA%B3%A0%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
다른 사용자 ID로 다음 쉘 스크립트를 실행하고 있습니다. 하지만 이 스크립트를 실행할 때마다 "sudo su ${USER_ID}"로 원활하게 실행됩니다. 그런 다음 실행이 중지되었습니다. 스크립트를 통해 다른 사용자로 로그인한 후 전체 명령을 실행하는 방법을 제안해주세요.
스크립트는 다음과 같습니다.
#!/bin/bash
PATCH_FILE=" "
USER_ID=" "
Grp_ID=" "
sudo mv ${PATCH_FILE} /tmp
sudo chown ${USER_ID}:${Grp_ID} /tmp/${PATCH_FILE}
sudo su ${USER_ID}
cd /tmp
unzip ${PATCH_FILE}
답변1
스크립트는 실행을 중지하지 않고 지시된 대로 수행합니다. 대화형 쉘을 시작하고 쉘은 입력을 기다립니다. 사용자가 지시하지 않는 한 스크립트에서 입력을 읽지 않습니다.
sudo su ${USER_ID} << EOF
cd /tmp
unzip ${PATCH_FILE}
EOF
이는 sudo su
거의 항상 불필요하다는 점에 유의하십시오.
위의 예는 행을 표준 입력으로 전달하는 일반적인 문제를 해결합니다. 이것이 반드시 귀하의 상황에 가장 적합한 솔루션은 아닐 수도 있습니다.