사용자 "useradm"이 다음과 같이 명령을 실행하는 bash 명령이 있습니다.
sudo su - platfrmapi; sh script.sh
sudo su - platfrmapi; cp script.sh script_2.sh
사용자 전환은 완벽하게 작동하지만 "script.sh"의 일부로 생성된 로그는 "platfrmapi" 대신 "useradm"이 소유합니다.
우리가 뭔가를 놓쳤나요?
답변1
명령은 세미콜론으로 연결되어 실행된다는 의미입니다.독립적으로! 먼저 sudo
명령이 실행되고 platfrmapi 사용자로 전환됩니다. 프로세스는 결국 종료되어야 하며, 이를 통해 두 번째 명령이 실행될 수 있습니다. 즉, sh script.sh
명령 sudo su -
이그만두다.
sh script.sh
platfrmapi 사용자로 실행 하려는 것 같으 므로 다음을 수행하십시오.
sudo -u platfrmapi sh script.sh
...useradm 사용자에게 올바른 sudo 실행 권한이 있다고 가정합니다 sh script.sh
.
chmod +x script.sh
스크립트가 실행 가능한지( 그리고 올바른 sh-bang 라인이 있는지) 확인한 다음 직접 실행하는 것이 더 간단할 것입니다.
sudo -u platfrmapi ./script.sh