3 Stimmen

Wie kann ich mein init.d-Skript Benutzer ändern lassen?

Ich habe dieses Skript, das ich gerne vor dem Starten des Daemons auf den Benutzer "terraria" umschalten würde. Ich kann nicht herausfinden, wie das geht. Meine Recherche führt mich zu Bash-Skripten, die su my_user -c verwenden, aber ich glaube nicht, dass das in diesem Fall funktioniert.

#!/bin/bash
# Terraria-Daemon
# chkconfig: 345 20 80
# Beschreibung: Terraria-Server
# Prozessname: TerrariaServer.exe

DAEMON_PATH="/usr/Terraria"

DAEMON=TerrariaServer.exe
DAEMONOPTS="-world Diese_Welt.wld -port 7777 "

NAME=TerrariaServer
DESC="Terraria-Server"
PIDFILE=/var/run/TerrariaServer.pid
SCRIPTNAME=/etc/init.d/Terraria-Server

case "$1" in
start)
    printf "%-50s" "Starte $NAME..."
    cd $DAEMON_PATH
    PID=`mono $DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!`
    #echo "Speichere PID" $PID " in " $PIDFILE
        if [ -z $PID ]; then
            printf "%s\n" "Fehlgeschlagen"
        else
            echo $PID > $PIDFILE
            printf "%s\n" "Ok"
        fi
;;
status)
        printf "%-50s" "Überprüfe $NAME..."
        if [ -f $PIDFILE ]; then
            PID=`cat $PIDFILE`
            if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
                printf "%s\n" "Prozess beendet, aber pidfile existiert"
            else
                echo "Läuft"
            fi
        else
            printf "%s\n" "Dienst läuft nicht"
        fi
;;
stop)
        printf "%-50s" "Stoppe $NAME"
            PID=`cat $PIDFILE`
            cd $DAEMON_PATH
        if [ -f $PIDFILE ]; then
            kill -HUP $PID
            printf "%s\n" "Ok"
            rm -f $PIDFILE
        else
            printf "%s\n" "pidfile nicht gefunden"
        fi
;;

restart)
    $0 stop
    $0 start
;;

*)
        echo "Verwendung: $0 {status|start|stop|restart}"
        exit 1
esac

5voto

mti2935 Punkte 10558

Schauen Sie sich den folgenden Link für die 'DJB'-Art und Weise an, Prozesse als andere Benutzer zu starten: http://thedjbway.b0llix.net/daemontools/uidgid.html

Sehen Sie auch: Wie führt man ein Command als bestimmter Benutzer in einem Init-Skript aus?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X