스크립트에서 사용자를 변경하시겠습니까?

스크립트에서 사용자를 변경하시겠습니까?

시작 중에 특정 명령을 실행하도록 사용자를 변경하려고 합니다. 자동으로 실패합니다. 명령이 실행되지 않았음을 알 수 있기 때문에 분명히 사용자 변경이 실행되지 않습니다.

아래 표시된 initscript에서 내가 뭘 잘못하고 있는 걸까요?

respawn
console none

start on startup
stop on shutdown

script
  su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script

답변1

나는 당신이 최신 버전의 우분투를 실행하고 있거나갑자기 나타나다. 오류를 확인할 수 있습니다 /var/log/daemon.log.

표준은 su구문을 채택합니다 su [options] [username]. 확인하다 man 1 su. 다음을 시도해 볼 수도 있습니다.

su -c "myCommand" anotheruser >> "myLogfile.log"

또한 몇 가지 일이 발생합니다(대부분 바람직하지 않음).

  1. myLogfile.log의 소유가 됩니다 root.
  2. myLogfile.log/유사한 절대 경로를 사용하지 않으면 /tmp/myLogfile.log(upstart 런타임 pwd가 로 설정되어 있기 때문에 /) (루트 디렉터리)에 생성됩니다.

파일을 자신이 소유하게 하려면 anotheruser명령을 로 전환하면 됩니다.

su -c "myCommand >> /tmp/myLogfile.log" anotheruser

myLogfile.log이전 실행에서 남은 부분이 있거나 유사한 것으로 root변경하지 않은 경우 문제가 발생할 수 있습니다 (일반적으로 일반 사용자는 루트 디렉토리에 파일을 만들 수 없습니다 ).myLogfile.log/tmp/myLogfile.log/

답변2

su및 구문을 혼동한 것 같습니다 sudo.

su -c 'mycommand' anotheruser
sudo -u anotheruser 'mycommand'

관련 정보