시작 중에 특정 명령을 실행하도록 사용자를 변경하려고 합니다. 자동으로 실패합니다. 명령이 실행되지 않았음을 알 수 있기 때문에 분명히 사용자 변경이 실행되지 않습니다.
아래 표시된 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"
또한 몇 가지 일이 발생합니다(대부분 바람직하지 않음).
myLogfile.log
의 소유가 됩니다root
.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'