Server/Dienste automatisch starten

Thursday, 14. June 2007

In diesem Beispiel gehen wir davon aus, dass der Server (CSS Server, Teamspeak Server, … ) bereits eingerichtet ist. Es geht lediglich darum diesen über einen Restart des Servers hinweg am laufen zu halten.
Des weiteren sollte man derartige Server !! niemals !! als >>root<< ausführen. Dies würde ein hohes Sicherheitsrisiko bedeuten.
(Die Idee: sollte jemand eine Sicherheitslücke im angebotenen Dienst ausnutzen können und Zugriff auf den Server erhalten, so bleiben ihm nur \”User-Rechte\” also praktisch gar keine)

Bsp.: (anhand von Teamspeak)
Wir haben also bereits einen user namens teamspeak erstellt und ihm ein passwort gegeben und ggf. ein \”home\” Verzeichnis erstellt in welchem wird den Server installiert haben.

useradd teamspeak
passwd teamspeak
mkdir /home/teamspeak
...

Zunächst wird das Skript \”/etc/init.d/teamspeak\” erstellt und ausführbar gemacht:


cd /etc/init.d
touch teamspeak
chmod +x teamspeak

In diese Datei schreiben wir folgenden Inhalt:
(öffnen mit einem Editor eurer Wahl)

#!/bin/bash
# User which will run the teamspeak server
USER=teamspeak
# The installation directory of the teamspeak server
DIR=/home/teamspeak/tsserver
# Run the start script
su -c "cd $DIR && $DIR/teamspeak2-server_startscript $1" - $USER

Nun kann der Server gestartet werden:


/etc/init.d/teamspeak start

Wenn das Skript als root ausgeführt wird, wird der Teamspeak-Server automatisch als Benutzer \”teamspeak\” gestartet. Andere Systembenutzer werden dazu aufgefordert, das anfangs vergebene Kennwort für den Teamspeak-Benutzer einzugeben, um den Server zu starten.

Damit der TS-Server auch beim Neustart des Systems (Runlevel 3) gestartet wird, muss ein Link auf das Startscript im Verzeichnis /etc/rc3.d und im Verzeichnis /etc/rc0.d/ eingerichtet werden:  (unter Ubuntu ist das Runlevel 2 zu benutzen!)

cd /etc/rc3.d/
ln -s ../init.d/teamspeak S99teamspeak
cd /etc/rc0.d/
ln -s ../init.d/teamspeak K99teamspeak

Die Ziffer 99 ist absichtlich hoch gewählt damit der Dienst in der Bootreihenfolge ganz hinten steht und zuletzt gestartet wird.

5 Responses to “Server/Dienste automatisch starten”



  1. Mao-B Says:

    DAS ist eine gute und vorallem VERSTÄNDLICHE anleitung! MERCI! 😀



  2. Mao-B Says:

    es funktioniert aber leider nicht 🙁

    user ist eingerichtet, verzeichnis auch, fehler lautet (angaben anonymisiert):


    /etc/init.d/$MEIN_TS_SCRIPT: line 8: $MEIN_TS_USER: command not found

    in line 8 steht ja nur “$USER”

    umgebung: suse10.1_64



  3. Mao-B Says:

    …die backslashes in zeile 07 haben dort unter umständen nicht zu suchen. zumindest war es bei mir die fehlerquelle!



  4. xapient Says:

    vielen dank für den hinweis!
    die \ sind irgendwo beim copy/paste reingerutscht und gehören da natürlich nicht hin.. auch gehört alles ab “su” bis “$USER” in eine zeile.. wordpress lässt sich das mit diesem layout jedoch nicht ausreden..



  5. alex Says:

    A well written story. I’m always looking for stuff like this.