Estoy editando un script init.d. El script init.d ejecuta un script de utilidad que luego ejecuta un proceso. De cualquiera de los scripts de bash, ¿cómo haría que inicie el proceso principal como un usuario y grupo específicos?
process
init
privileges
Stéphane Gimenez
fuente
fuente

Usage: su [options] [LOGIN]ysu: unrecognized option '--debug'su www-data -c ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &sisu www-dataconfiguro todos los vars y lo ejecuto${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &funciona bien. ¿Cómo puedo resolver esto?sutoma un único argumento, que es un comando de shell. Usted tiene que escribirsu www-data -c '$MONOSERVER "/application=$WEBAPPS" "/socket=unix:/path/monoserve.pid"', y asegúrese de queMONOSERVERyWEBAPPSse exportan por el shell padre. (Nota: no haga,su … -c "$MONOSERVER …"ya que esto fallará si alguna de las variables contiene caracteres especiales de shell). Y si tiene un iniciador de demonios dedicado comostart-stop-daemon, úselo.Si
start-stop-daemonestá disponible en su sistema, probablemente debería usarlo y echar un vistazo a sus opciones (especialmente-uy-gen este caso).(De lo contrario, puede usar una combinación de
suysg.)Actualización: Aquí hay un ejemplo tomado de algún
/etc/init.d/mpdscript (que usastart-stop-daemon):Comando de inicio:
Todo lo que sigue
--es un argumento para el/usr/bin/mpdprograma en sí. (El guión start-stop-daemon se encarga del procedimiento de daemonización, por lo quempdse le pide que no se preocupe por ello--nodaemon).Comando de parada:
Si
mpdno estaba eliminando los privilegios por sí mismo, uno necesitaría agregar (por ejemplo)-u mpd,-g mpdopciones alstart-stop-daemoncomando.fuente
start-stop-daemon --start --quiet --background -u www-data -g www-data --exec ${MONOSERVER} --pidfile /path/monoserve.pid --make-pidfile -- /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid