TeamSpeak2 Server in Runlevel 2 als User starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
SpunkEE
Beiträge: 64
Registriert: 20.01.2005 19:28:02
Wohnort: CH

TeamSpeak2 Server in Runlevel 2 als User starten

Beitrag von SpunkEE » 07.08.2006 18:43:03

Guten Abend,

ich hab jetzt schon manchen Beitrag in diesem Forum, sowie einige Beträge im offiziellen Teamspeak-Forum [1] und den deutschen Einsteiger-Seiten [2] gelesen zum Thema Teamspeak, aber nirgends wurde mein Problem wirklich geklärt.
Auch die ensprechenden Seiten der Linuxfibel [3] haben mir nicht weiterhelfen können.

Ziel ist es, den TeamSpeak-Server beim aufstarten des Systems automatisch zu laden, jedoch als User und nicht als Root.
Manuelles starten als User klappt tadellos. Ich muss mich aber im Verzeichnis befinden in welchem sich das Startscript befindet wenn ich es ausführe, sonst erscheint erscheint eine Fehlermeldung das benötigte Dateien fehlen.

Inzwischen weiss ich, das mein Debian beim aufstarten zum schluss in den Runlevel 2 schaltet. Also würde ich symbolische Links in "/etc/rc2.d" auf mein TeamSpeak2-Server-Skript (in /usr/local/bin/...) erstellen und denen die Namen "S98tss2" und "K98tss2" zuteilen.
Aber so wird der Server dann als Root gestartet, wovon die TeamSpeak-Produzenten abraten. Zudem wird sich das Script vermutlich wieder über fehlende dateien beklagen, da init, wenn es das Skript startet, wohl kaum zuerst in das TeamSpeak-Verzeichnis wechselt. Wie würdet ihr dieses Problem lösen? Anpassen des Skriptes? oder gibt es andere/bessere Lösungen?
Habe das TeamSpeak2 Server-Startskript mal unter [4] zur Ansicht hochgeladen.

Und nebenbei: Ist es als "grosse Sicherheitslücke" zu betrachten wenn ein Unterordner von "/usr/local/bin/..." einem User gehört? Da der Teamspeak-Server als User gestartet werden möchte/sollte hab ich ihm auch den User als Besitzer & Gruppe zugewiesen.

[1] http://forum.goteamspeak.com/
[2] http://teamspeak-einstieg.de/
[3] http://www.linuxfibel.de/booten.htm
[4] http://nopaste.debianforum.de/3856


thx & mfG,
SpunkEE

Benutzeravatar
Teddybear
Beiträge: 3163
Registriert: 07.05.2005 13:52:55
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Altomünster
Kontaktdaten:

Beitrag von Teddybear » 07.08.2006 19:16:19

Moin

Also ich rate dir zu einem Startscript...

So in etwa:

Code: Alles auswählen

#!/bin/sh
#
case "$1" in
 start)
   echo "Starte Teamspeak"
   cd /srv/ts1 && su tsuser -c ./Teamspeak2_server_startscript start
   sleep 2
   echo "Server sind gestartet" 
   ;;
#
 stop)
   echo "Stoppe Teamspeak"
   cd /srv/ts1 && su tsuser -c ./Teamspeak2_server_startscript stop
   sleep 2
   echo "Server wurden gestoppt"
   ;;
#
 restart)
   $0 stop && $0 start || exit 1  
   ;;
# 
 status)
   ps aux | grep -v grep | grep server_linux > /dev/null
   CHECK=$?
   [ $CHECK -eq 0 ] && echo "TS-Server Daemon läuft" || echo "TS-Server Daemon ist down"
   ;;
# 
 *)
   echo "Usage: $0 {start|stop|restart|status}"
   exit 1
   ;;
esac

exit 0

Greetz Sascha
Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen!
Oscar Wilde

Mod-Voice / My Voice

SpunkEE
Beiträge: 64
Registriert: 20.01.2005 19:28:02
Wohnort: CH

Beitrag von SpunkEE » 14.08.2006 19:46:32

Vielen Dank,

habe das Script mal kopiert und angepasst. Scheint zu klappen.
Starte es mit dem User "nobody", der durch proftpd erstellt wurde (vermute ich zumindest).

Allerdings sind während des Einrichtens zwei weitere fragen aufgetaucht:
- ist das Verzeichnis "/srv/" speziell für Serverapplikationen gedacht? Leider wird es im Debiananwenderandbuch nicht erwähnt.
- Werden bei Debian, wenn der Runlevel gewechselt wird, nicht zuerst alle mit K beginnenden Scripte im aktiven Runlevel abgearbeitet? Habe keine mit K beginnenden Scripte im Runlevel 2 bei mir gefunden. Wie genau funktioniert der Bootvorgang, eben vor allem die Sache mit den Runlevel, bei Debian? Habt ihr einen guten Link? Hab nichts gefunden im Debiananwenderhandbuch.

thx & mfG,
SpunkEE

Benutzeravatar
Teddybear
Beiträge: 3163
Registriert: 07.05.2005 13:52:55
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Altomünster
Kontaktdaten:

Beitrag von Teddybear » 14.08.2006 20:52:51

Moin

Init und deren Runlevel etc zu verstehen ist eigentlich ganz easy

Alles was mit K Beginnt wird beendet (K)ill
Alles was mit S Beginnt wird gestartet (S)tart

Soo... Da du TS starten willst, sollte dieses Script dann auch nach dem init des network bzw ppp gestartet werden...

z.B.: Symlink nach rc2.d

Code: Alles auswählen

S20teamspeak
und
Symlink nach rc0.d und rc6.d

Code: Alles auswählen

K20teamspeak
http://www.debian.org/doc/debian-policy ... s-sysvinit

Zum Thema /srv http://de.wikipedia.org/wiki/Filesystem ... ten_werden

PS: das TS verzeichnis, bzw die daten des Webinterface müssen eventuell auf den Startenden User gesetzt werden!!

Greetz Sascha
Zuletzt geändert von Teddybear am 30.08.2006 15:23:02, insgesamt 1-mal geändert.
Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen!
Oscar Wilde

Mod-Voice / My Voice

SpunkEE
Beiträge: 64
Registriert: 20.01.2005 19:28:02
Wohnort: CH

Beitrag von SpunkEE » 14.08.2006 22:38:15

Hallo Teddybear, und Danke,

das mit K (stoppen) und S (starten) in den Runleveln war mir bewusst.
Jedoch wird einem in der Linuxfibel gelernt dass bei einem Runlevel-wechsel zuerst alle K's in /etc/rcx.d des aktuellen Runlevels abgearbeitet werden, dann alle S's im neuen Runlevel.
Damit haben aber irgendwie meine Sym-Links in den entsprechenden Runlevels nicht übereingestimmt.
Dein Web-Link hat mich nun gelernt das bei Debian gleich zu beginn im neuen Runlevel mit dem Scripteausführen begonnen wird. Zuerst die K's, dann die S's. Im aktuellen Runlevel wird nichts "verarbeitet".

Dass der TS2-Server-startende User im Ordner, in dem das Programm liegt, schreibrechte braucht, hab ich auch bereits festgestellt. Die Server-Applikation erstellt eine Datei beim starten des Server. Kann diese nicht erstellt werden, wird eine Fehlermeldung ausgegeben. (danach meldet mir dein Script "Server sind gestartet", aber wir sind ja nicht pingelig)

Und was ich mit /srv anstellen kann, hab ich aus deinem anderen Web-Link nun auch gelernt.
Nochmals vielen Dank,

mfG,
SpunkEE

Benutzeravatar
Teddybear
Beiträge: 3163
Registriert: 07.05.2005 13:52:55
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Altomünster
Kontaktdaten:

Beitrag von Teddybear » 14.08.2006 23:01:13

Moin
Dass der TS2-Server-startende User im Ordner, in dem das Programm liegt, schreibrechte braucht, hab ich auch bereits festgestellt. Die Server-Applikation erstellt eine Datei beim starten des Server. Kann diese nicht erstellt werden, wird eine Fehlermeldung ausgegeben. (danach meldet mir dein Script "Server sind gestartet", aber wir sind ja nicht pingelig)
Also mein Script sollte eigentlich nur einen Denkanstoss geben, wie das ganze von statten geht...
Immerhin möchtest du ja, so wie es mir erscheint, etwas lernen...
Und das geht am besten mit "lerning by doing"... Aber in der regel sollte man davon aus gehen, das der User auch die richtigen Berechtigungen hat.
Natürlich könnte man in das script noch eine "if then else" schleife einbauen.

Ein Beispiel wie man abfragen kann ob der Dienst läuft siehst du ja unter der Status abfrage, diese könnte man auch nach dem Aufruf des Startscripts laufen lassen und dann hat man die "richtige" ausgabe..

Aber dieses Script ruft ja nur ein Startscript auf, und ich bin halt davon aus gegangen das das TS-Script mit deinem User, mit dem der Server laufen soll, funktioniert...

Das wichtigste ist doch das deine Fragen schonmal geklärt sind.
Und das du etwas gelernt und die kleinen Probleme selbst gelöst hast..

Greetz Sascha
Versuchungen sollte man nachgeben. Wer weiß, ob sie wiederkommen!
Oscar Wilde

Mod-Voice / My Voice

SpunkEE
Beiträge: 64
Registriert: 20.01.2005 19:28:02
Wohnort: CH

Beitrag von SpunkEE » 14.08.2006 23:24:17

Teddybear hat geschrieben: Das wichtigste ist doch das deine Fragen schonmal geklärt sind.
Und das du etwas gelernt und die kleinen Probleme selbst gelöst hast..
Meine Meinung ;)
Das mit dem "pingelig" war auch nicht provokativ oder anstossend gemeint.
Leider kann ich noch nicht viel mehr als copy/paste wenn es um Skripte geht, die mehr als nur ein paar Standard-Befehle hintereinander ausführen. So ist mir bei deinem TS2-Startscript die "status"-Abfrage noch zu komplex. Den rest versteh ich enigermasen und wird mit bei meinen zukünftigen Scripten bestimmt von nutzen sein.

Umsteigen von Windows auf Linux ist ein harter Kampf (noch könnte ich nicht sein ohne mein Windows-System), aber ich habe das Gefühl, die Belohnung wird immer grösser.


mfG,
SpunkEE

JorisBv
Beiträge: 2
Registriert: 25.08.2006 16:39:35

Recht einfach

Beitrag von JorisBv » 30.08.2006 13:19:32

Also,

unter debian geht das, wenn man dann ein Skript hat, recht leicht, das auch in den gewünschten Runlevels zu starten. Dazu mußt Du Dir einfach mal

Code: Alles auswählen

update-rc.d
ansehen. Das vereinfacht die Sache enorm und man hat nicht die Probleme, irgendwelche Links zu vergessen.

Antworten