GNU/Linux >> Linux Esercitazione >  >> Linux

Upstart:eseguire il servizio come utente senza privilegi e preavviare lo script come root

upstart non ha strutture equivalenti a systemd è PermissionsStartOnly ambientazione. Tutti i processi nel lavoro vengono eseguiti come impostato dall'utente tramite setuid strofa, come dice il libro di cucina.

Quindi fai le cose alla maniera dei daemontools.

Usa setuidgid , setuidgid , s6-setuidgid , chpst , runuid o setuidgid nel exec strofa:

exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1

A proposito, è un terribile meccanismo di registrazione. Il modo daemontools avrebbe un registro corretto, ciclicato automaticamente, ruotabile su richiesta, con limite di dimensione, utilizzando multilog , multilog , s6-log , svlogd , tinylog o cyclog . upstart è difficile da integrare con quelli, tuttavia, dato il suo expect meccanismo.

expect fork
exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production 2>&1 | \
/usr/local/bin/chdir /var/log/ \
setuidgid log \
cyclog posty/unicorn/

(Il chdir ecco quello di caricamento a catena dal nosh pacchetto, e non è strettamente necessario. Ma rende le cose un po' più ordinate.)


Linux
  1. Esegui lo script php come processo daemon

  2. Come eseguire lo script Python come servizio?

  3. Qual è la differenza tra root e sudo?

  4. Eseguire uno script di shell come utente diverso

  5. Configurazione del servizio Systemd per l'esecuzione con accesso root

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire retroattivamente uno script come root?

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Esegui il comando shell in jenkins come utente root?

Esegui parte di uno script bash come utente diverso

shell diversa per utente root e non root