다른 사용자/그룹으로 프로세스 시작(init.d 스크립트에서)

다른 사용자/그룹으로 프로세스 시작(init.d 스크립트에서)

init.d 스크립트를 편집 중입니다. init.d 스크립트는 유틸리티 스크립트를 실행한 다음 프로세스를 실행합니다. bash 스크립트에서 특정 사용자 및 그룹으로 기본 프로세스를 시작하려면 어떻게 해야 합니까?

답변1

가장 쉬운 방법은 사용자의 셸을 통해 명령을 실행할 수 있는 옵션이 있는 su(1) 명령을 사용하는 것입니다. 예를 들면 다음과 같습니다.

su foo -c ls

사용자로 전환됩니다.부자그리고 ls 명령을 실행하세요. 사용하려는 사용자에게 유효한 쉘이 없는 경우(즉, /bin/false 또는 /sbin/nologin과 같은 /etc/shells에 없음) 명령줄에서도 쉘을 지정해야 합니다. 출력 예:

# su nobody -s /bin/bash -c id
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

답변2

start-stop-daemon시스템에서 사용할 수 있는 경우 이를 사용하고 옵션을 살펴봐야 합니다(특히 이 -u경우 -g).

su(그렇지 않으면 및 를 조합하여 사용할 수 있습니다 sg.)

고쳐 쓰다:다음은 스크립트에서 가져온 예 /etc/init.d/mpd(사용된 )입니다.start-stop-daemon

  • 시작 명령:

    echo "Starting Music Player Daemon"
    start-stop-daemon --start --quiet --background --exec /usr/bin/mpd \
        --pidfile /var/run/mpd.pid --make-pidfile \
        -- --no-daemon /etc/mpd.conf 2>/dev/null
    

    다음의 모든 내용은 --프로그램 자체에 대한 주장입니다 /usr/bin/mpd. (데몬 프로세스는 start-stop-daemon 스크립트의 책임이므로 mpd걱정하지 마십시오 --nodaemon.)

  • 중지 명령:

    echo "Stopping Music Player Daemon"
    start-stop-daemon --stop --exec /usr/bin/mpd --pidfile /var/run/mpd.pid
    

권한을 직접 제거하지 않는 경우 명령에 , 옵션을 mpd추가해야 합니다 .-u mpd-g mpdstart-stop-daemon

관련 정보