Lançar o processo como outro usuário / grupo (no script init.d)

10

Estou editando um script init.d. O script init.d executa um script de utilitário que, em seguida, executa um processo. De qualquer um dos scripts bash, como eu faria isso iniciar o processo principal como um usuário e grupo específicos?

    
por Stéphane Gimenez 05.10.2011 / 22:44

2 respostas

12

A maneira mais simples é usar o comando su (1), ele tem uma opção que permite executar um comando através do shell do usuário, exemplo:

su foo -c ls

Isso mudará para o usuário foo e executará o comando ls. Se o usuário que você deseja usar não tiver um shell válido (ou seja, ele não está em / etc / shells, como / bin / false ou / sbin / nologin), você também terá que especificar um shell na linha de comando. Exemplo com saída:

# 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
    
por 05.10.2011 / 23:15
4

Se start-stop-daemon estiver disponível em seu sistema, provavelmente você deve usá-lo e observar suas opções (especialmente -u e -g neste caso).

(Caso contrário, você pode usar uma combinação de su e sg .)

Atualização: Aqui está um exemplo de algum script /etc/init.d/mpd (que usa start-stop-daemon ):

  • Iniciar comando:

    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
    

    Tudo o que segue -- é um argumento para o programa /usr/bin/mpd em si. (O procedimento de daemonização é atendido pelo script start-stop-daemon, então mpd é solicitado a não se importar com isso com --nodaemon .)

  • Parar o comando:

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

Se mpd não estivesse descartando privilégios sozinho, seria necessário adicionar (por exemplo) -u mpd , -g mpd options ao comando start-stop-daemon .

    
por 05.10.2011 / 23:11