Upstart에서 권한이없는 사용자로 작업을 시작하려면 어떻게합니까?


14

우분투 10.4 LTS에 최신 시작 버전을 사용하고 있습니다. upstart는 --debug kernel 플래그와 함께 시작됩니다.

nzbget 데몬에 대한 사용자 정의 작업 구성을 만들고 있습니다. 기본적으로이 작업에는 파일 시스템을 마운트하는 시작 전 스크립트, 파일 시스템을 마운트 해제하는 시작 후 스크립트 및 exec nzbget -D행이 있습니다.

문제는 nzbget 데몬이 권한이없는 사용자로 실행되어야한다는 것입니다. 이 기능은 이미 nzbget에 포함되어 있습니다. 실제로 콘솔 sudo nzbget -D에서 실행할 때 프로세스는 권한이없는 사용자로 실행됩니다. 그러나 exec nzbget -D라인으로 upstart 작업을 시작하면 nzbget -D 프로세스가 루트로 실행됩니다. upstart 요리 책에서 말했듯이 su -c "nzbget -D"사용자와 start-stop-daemon을 사용하여 조언 된 스탠자를 기대하지 않았습니다. 그러나 두 명령 모두 upstart가 잘못된 PID를 추적하면 시작 프로세스가 끝날 때 주 프로세스가 종료 된 것으로 간주되므로 원하지 않는 사후 프로세스 스크립트가 시작됩니다.

=> 어떻게하면됩니까? exec nzbget -Dupstart 명령은 프로세스를 루트로 실행하는 반면 sudo nzbget -D명령은 권한이없는 사용자로 실행되는 방법은 무엇입니까?

답변:


12

버전 1.4 릴리스에서는 약간의 진행이있었습니다. :

지정된 이름 / 그룹에 해당하는 지정된 uid / gid에서 시스템 작업을 실행할 수있는 새로운 "setuid"및 "setgid"스탠자

LaunchPad 페이지 에서 가져올 수는 있지만 (이상하게도) PPA를 볼 수 없으므로 직접 컴파일해야 할 수도 있습니다.

그렇지 않으면 다음과 같이 su또는 sudoexec 명령을 사용 하십시오.

su -c "<commands>" <username>
sudo -u <username> <commands>

둘 다 거의 똑같은 일을하므로 가장 행복한 것을 선택하십시오. 따라서 예제 명령을 사용하십시오.

exec sudo -u me "nzbget -D"

도메인 이름 upstart.at은 (는) 언데드
Falken 교수 교수

감사합니다! 내가 세션 초기화를 사용하는 경우는 / 등 채용 벼락 출세의 문서 나에게 분명하지 않다
누가 복음 Hoersten

4

다음 구문으로 sudo를 사용하는 것이 좋습니다.

sudo -u foouser foocommand

이것은 foocommand 명령을 사용자 foouser로 실행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.