init script als user starten

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Chrissi05
Beiträge: 13
Registriert: 10.05.2005 15:01:07

init script als user starten

Beitrag von Chrissi05 » 21.05.2005 14:20:38

Hallo,

ich habe ein problem bezüglich init. Und zwar habe ich ein Script zum Starten eines Teamspeak Servers in die init.d geschrieben und hab das script in die rc2.d verlinkt. So nun mein Problem: Immer wenn der Server beim Systemboot gestartet wird, wird er automatisch über den user root ausgeführt. Gibt es da nicht irgendeinen trick, wie ich das Script bei Systemstart unter einem anderen User ausführen lassen kann?

MFG Chrissi

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 21.05.2005 14:26:50

Naja, du kannst ja ein su im Init-Script selber einfügen.

Also su -u bla -c "service starten" dort wo das Ding dann auch wirklich gestartet wird.

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Chrissi05
Beiträge: 13
Registriert: 10.05.2005 15:01:07

Beitrag von Chrissi05 » 21.05.2005 14:50:42

gibt es da net ne andere möglichkeit?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.05.2005 14:54:30

Warum, was gefaellt dir daran denn nicht?

Chrissi05
Beiträge: 13
Registriert: 10.05.2005 15:01:07

Beitrag von Chrissi05 » 21.05.2005 14:57:52

weiß net *g* . Also wie muss ich das dann z.B. bei nem Teamspeak server machen?

Benutzeravatar
claus
Beiträge: 59
Registriert: 18.06.2004 16:43:19
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von claus » 21.05.2005 15:34:54

bist du sicher, dass du weisst was du da machst?
Hast du schon einen User angelegt unter dem der Teamspeak Server laufen soll?

Poste doch mal das Init Script dann können wir dir auch sagen an welcher Stelle du mit 'su' den Server starten musst.

Chrissi05
Beiträge: 13
Registriert: 10.05.2005 15:01:07

Beitrag von Chrissi05 » 21.05.2005 15:56:49

jop user ist angelegt (Name=chris) Und hier ist das script

Code: Alles auswählen

#! /bin/bash
# Copyright (c) 2004 TeamSpeak team   All rights reserved.
#
# Author: pwk.linuxfan 2004
#
DIR=/home/chris/tss2_rc2

case "$1" in
        start)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo "tsserver2.pid already exists...server already started ?";
                        echo "If you are sure the server is not running, delete tsserver2.pid"
                        exit 1
                else
                        if [ "$UID" = "0" ]; then
                                echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
                                for c in $(seq 1 10); do
                                        echo -n "!"
                                        sleep 1
                                        done
                                echo !
                        fi
                        echo "starting the teamspeak2 server"
                        if [ -e $DIR/server_linux ]; then
                                if [ ! -x $DIR/server_linux ]; then
                                        echo "server_linux is not executable, trying to set it"
                                        $DIR/chmod u+x server_linux
                                fi
                                if [ -x $DIR/server_linux ]; then
                                        $DIR/server_linux -PID=$DIR/tsserver2.pid

                                else
                                        echo "server_linux is not executable, fix this"
                                        exit 4
                                fi
                        else
                                echo "Couldnt find server_linux"
                                exit 5
                        fi
                fi
        ;;
    stop)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo -n "stopping the teamspeak2 server"
                        if ( kill -TERM `cat $DIR/tsserver2.pid` ); then
                                for c in $(seq 1 300); do
                                        if [ -e $DIR/tsserver2.pid ]; then
                                                echo -n "."
                                                sleep 1
                                        fi
                                done
                        fi
                        if [ -e $DIR/tsserver2.pid ]; then
                                echo "server does not shutdown cleanly - killing"
                                kill -KILL `cat $DIR/tsserver                                rm $DIR/tsserver2.pid
                                sleep 5
                        else
                                echo "done"
                        fi
                else
                        echo "tsserver2.pid is missing, no started server ?"
                        exit 7
                fi
        ;;
        restart)
                $0 stop && $0 start || exit 1
        ;;
        status)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo "the server seems to be running"
                        exit 0
                else
                        echo "the server seems to be stopped"
                        exit 3
                fi
        ;;
        passwords)
                if [ -e $DIR/server.log ]; then
                        date=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9$
                        spass=$(cat $DIR/server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin pass$
                        pass=$(cat $DIR/server.log | grep "admin account info: username: admin"
| tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]$
                        echo "Following passwords were generated on $date"
                        echo "superadmin = \"$spass\""
                        echo "admin      = \"$pass\""
                else
                        echo "server.log not found, maybe you did not start the server yet ?"
                        exit 1
                fi
        ;;
        *)
                echo "Usage: $0 {start|stop|restart|status|passwords}"
                exit 2
esac
exit 0
Zuletzt geändert von Chrissi05 am 22.05.2005 18:52:07, insgesamt 1-mal geändert.

Benutzeravatar
claus
Beiträge: 59
Registriert: 18.06.2004 16:43:19
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von claus » 21.05.2005 16:05:26

Schmeiss die root Prüfung raus und setze das Starten des Servers in den 'su' Befehl.
Folgend nur der 'case' Abschnitt 'start':

Code: Alles auswählen

case "$1" in
start)
if [ -e $DIR/tsserver2.pid ]; then
echo "tsserver2.pid already exists...server already started ?";
echo "If you are sure the server is not running, delete tsserver2.pid"
exit 1
else
echo "starting the teamspeak2 server"
if [ -e $DIR/server_linux ]; then
if [ ! -x $DIR/server_linux ]; then
echo "server_linux is not executable, trying to set it"
$DIR/chmod u+x server_linux
fi
if [ -x $DIR/server_linux ]; then
su -c "$DIR/server_linux -PID=$DIR/tsserver2.pid" chris

else
echo "server_linux is not executable, fix this"
exit 4
fi
else
echo "Couldnt find server_linux"
exit 5
fi
fi
;; 

Chrissi05
Beiträge: 13
Registriert: 10.05.2005 15:01:07

Beitrag von Chrissi05 » 21.05.2005 19:11:55

hat geklappt :D THX

Antworten