Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
Hallo Beim Wiki Studieren/Überfliegen sind mir beim TeamSpeak 3 Server ein paar Sachen aufgefallen, die ich gerne also Anregung/Anpaasung einbringen möchte.
Da ich selber noch ein n00b bin was das Bearbeiten und so angeht, poste ich es restmal hier. Da ich selber schon seit 10.04 LTS Lucid einen TS3 Server laufen hatte und jetzt denselben auf 12.04 LTS Precise erfolgreich weiter betreibe. Anregung 1: Den getest Tag ergängen um 12.04 LTS Precise Zum automatischen Server starten, habe ich mir ein Init-Script anhand des Skeletons zusammengestellt (nicht ganz so schlicht). Anregung 2: Meine Variante des Init-Scripts 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 | #! /bin/sh
### BEGIN INIT INFO
# Provides: ts3server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: TeamSpeak 3 Server
# Description: Startup Init-Script for TeamSpeak 3 Server
### END INIT INFO
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="TeamSpeak 3 Server"
NAME=ts3server
USER=teamspeak
BINARY=ts3server_linux_x86
BINARY_BIN=/home/teamspeak
DAEMON=ts3server_startscript.sh
DAEMON_ARGS=$1
PIDFILE=$BINARY_BIN/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$BINARY_BIN/$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
#. /lib/init/vars.sh
VERBOSE=yes
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON $DAEMON_ARGS"
}
#
# Function that stops the daemon/service
#
do_stop()
{
su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON $DAEMON_ARGS"
}
#
# Function that shows the status of to the daemon/service
#
do_status()
{
su $USER -s /bin/sh -c "$BINARY_BIN/$DAEMON $DAEMON_ARGS"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" ""
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" ""
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
# do_status
status_of_proc "$BINARY" "$DESC" && exit 0 || exit $?
;;
restart)
log_daemon_msg "Restarting $DESC" ""
DAEMON_ARGS=stop
do_stop
case "$?" in
0|1)
DAEMON_ARGS=start
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart}"
exit 3
;;
esac
:
|
Mein Script liegt im HOME-Verzeichnis vom TS3-Server und hab es dann nach /etc/init.d/ verlinkt.
Bei einer 64bit Installation muss man im Sciprt nur den Wert von BINARY anpassen auf ts3server_linux_amd64.
Mit dem Konsolen Tool sysv-rc-conf hab ich dann S90 für die Run-Level 2-5 und K10 für 0, 1 und 6 eingetragen Anregung 3: Einen Warnhinweis für den Dateibrowserbetrieb vom TS3-Server. Für jeden TS3-Channel gibts im Verzeichnis ~/files/virtualserver_1/ ein Unterordner channel_*
Im Normalfall sollte der Besitzer der Benutzer teamspeak sein. Sind die Rechte gemäss dem TS3-Server dem Benutzer erlaubt, kann dieser alle Dateien ändern/löschen etc.
auch wenn die jemand andern gehören z.Bsp root. Auch ist es scheinbar egal welche Zugriffsrechte gesetzt sind, selbst ein -r--r--r-- kann durch einen TS3-Benutzer geändert/gelöscht werden.
Abhilfe schaffen kann man sich durch symbolische Links oder der Ordner/Unterordner gehört einem anderem Besitzer z.Bsp root, darin kann der TS3-Benutzer nichts ändern/löschen.
mfg Axe
|
kizu
Anmeldungsdatum: 31. Juli 2009
Beiträge: 669
Wohnort: Buchholz
|
Axeaminator schrieb: Anregung 1:>
Den getest Tag ergängen um 12.04 LTS Precise
mach einfach. 😉 - Du hast es ja getestet.
Anregung 2: Meine Variante des Init-Scripts
wofür steht das hier?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
# Exit if the package is not installed
[ -x "$BINARY_BIN/$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
#. /lib/init/vars.sh
VERBOSE=yes
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
|
Anregung 3: Einen Warnhinweis für den Dateibrowserbetrieb vom TS3-Server. Für jeden TS3-Channel gibts im Verzeichnis ~/files/virtualserver_1/ ein Unterordner channel_*
Im Normalfall sollte der Besitzer der Benutzer teamspeak sein. Sind die Rechte gemäss dem TS3-Server dem Benutzer erlaubt, kann dieser alle Dateien ändern/löschen etc.
auch wenn die jemand andern gehören z.Bsp root. Auch ist es scheinbar egal welche Zugriffsrechte gesetzt sind, selbst ein -r--r--r-- kann durch einen TS3-Benutzer geändert/gelöscht werden.
Abhilfe schaffen kann man sich durch symbolische Links oder der Ordner/Unterordner gehört einem anderem Besitzer z.Bsp root, darin kann der TS3-Benutzer nichts ändern/löschen.
kann ich mir nicht vorstellen. Diese Rechte werden ja nicht von Teamspeak verwaltet, sondern vom Linux selber. Und wo der ts user keine Berechtigungen hat kann er nichts ändern. Wenn es so wäre, wie von dir beschreiben, wäre das ja eine gravierende Sicherheistlücke im Linux-rechtesstem. Ich glaube eher, die Rechte sind nicht richtig gesetzt oder der Teamspeak läuft als root oder dergleichen. Aber ich denke mal, um das zu klären, wäre ein neuer Thread angebracht 😉. MfG, Daniel
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29067
Wohnort: WW
|
Hallo, @Axeaminator: ich habe dir den Artikel in die Baustelle verschoben. Da kannst du alle notwendigen Änderungen in Ruhe machen. Das Fertigstellungsdatum kannst du ggf. anpassen. Bei Fragen zur Wiki-Syntax einfach hier posten. Und bitte hier auch posten, wenn du mit der Überarbeitung fertig bist ☺ Gruß, noisefloor
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
kizu schrieb: Anregung 2: Meine Variante des Init-Scripts
wofür steht das hier?
Teilweise noch Überreste von /etc/init.d/skeleton | # Exit if the package is not installed
[ -x "$BINARY_BIN/$DAEMON" ] || exit 0
|
Das Init-Script test ob das Programm/Script ausführbar und vorhanden ist, falls nicht Abbruch ohne weitere Konsolen Ausgabe | # Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
Brauch ich selber für das TS3-Init-Sciprt nicht, wäre gedacht um die obigen VARIABLEN am Anfang des Script zu ergängen/überschreiben/auszulagern.
Testet ob eine lesbare DAtei vorhanden ist, wenn ja liest es die VARIABLEN darin ein. | # Load the VERBOSE setting and other rcS variables
#. /lib/init/vars.sh
VERBOSE=yes
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
|
Unter /lib/lsb/init-functions sind einige globale Script-Subroutinen definiert.
status_of_proc() wird weiter unten im Script daraus aufgerufen.
Bei /lib/init/vars.sh bin ich mir nicht sicher, aber den Aufruf kann man weglassen
VERBOSE=yes setzte ich nur damit das Init-Script auch eine Ausgabe Erzeugt.
Anregung 3:
Wüsste jetzt nicht wo der Fehler an den Rechten am Dateisystem liegen soll.
Komm ich später nochmals darauf zurück, mache mal ein paar Screenshots und c&p von der Konsole mfg Axe
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
Das Problem mit den Dateirechten habe ich nun mal in das Topic hier ausgelagert 😉
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
Sodelle habe soeben den Wikiartikel fertig überarbeitet
Hoffe ich hab alle Schreibfehler gefunden ☺ Beim Verifizieren sind mir noch ein paar Dinge aufgefallen
Die TeamSpeak Client Wiki Artikel sind getrennt eines für Version 3 und eines im Archiv für Version 2
Wäre es nicht auch sinnvoll dies mit dem Server Wiki Artikel zu tun ?
Zudem sind 2-3 der Links davon nicht mehr aktuell resp gibts nicht mehr Nehme auch noch gerne Verschläge/Anregungen fürs bessere Formatieren des Wiki Artikels entgegen.
War ja immerhin mein erster Beitrag fürs Wiki ☺ mfg Axe
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
Hallo & gratuliere für Deine Arbeit! Frage: Da der TeamSpeak nebst Client als ungetestet im Archiv liegt, wäre es nicht möglich, den Artikelteil auf TeamSpeak3 zu beschränken und Teamspeak2 herauszulassen? Würde deutlich mehr Übersicht bringen. sonst m.E. verschiebbar. Gruss
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
Axeaminator schrieb: Beim Verifizieren sind mir noch ein paar Dinge aufgefallen
Die TeamSpeak Client Wiki Artikel sind getrennt eines für Version 3 und eines im Archiv für Version 2
Wäre es nicht auch sinnvoll dies mit dem Server Wiki Artikel zu tun ?
Zudem sind 2-3 der Links davon nicht mehr aktuell resp gibts nicht mehr
Dachte ich mir eben auch, nur weiss ich nicht als Wiki-Newie wie ich den TS2-Server Teil absplite fürs Achriv Nachtrag: Der Übersichtlichkeit wegen wie wärs mit folgendem Aufbau
Ein Hauptwikithema für TeamSpeak 3 (Allgemeines/Diverses) mit Unterwikithemen
Ein Archivwikithema für TeamSpeak 2 (Client/Server) mfg Axe
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
Auslagerung TeamSpeak-2 für Archiv angelegt Baustelle/Teamspeak 2 Server, bitte mal kurz drüberschauen, ob inhaltlich korrekt. Wenn ja, kannn dieser Teil aus Deiner Baustelle m.E. raus.
|
Justin-Time
Anmeldungsdatum: 31. März 2009
Beiträge: 1466
|
Hallo, ich habe die Installation einmal unter Ubuntu 13.10 getestet. Dabei ist mir folgendes aufgefallen: Zuallererst wird gesagt, ich soll einen neuen Benutzer anlegen: sudo adduser teamspeak --system --home /usr/local/bin/teamspeak3-server_linux-x86 --disabled-login
Dabei existiert der Ordner /usr/local/bin/teamspeak3-server_linux-x86 noch gar nicht. Man soll Teamspeak ja erst danach mit dem neu erstellten Benutzer herunterladen und in den Ordner kopieren:
tar -xzf teamspeak3-server_linux-x86-3.x.y.z.tar.gz -C /usr/local/bin
Aber der Nutzer teamspeak hat doch gar keine Rechte etwas in den Order /usr/local/bin zu kopieren. Also müsste der Ordner /usr/local/bin/teamspeak3-server_linux-x86 bevor man den Nutzer angelegt hat, von root erstellt werden. Des Weiteren habe ich mich gefragt, warum ausgerechnet in den Ordner /usr/local/bin ? Ich habe bisher alle Programme, die ich manuell installiert habe, in den Ordner /opt installiert. Die eigentliche Installation klappt dann soweit prima. Was mir noch gefehlt hat, ist die Angabe welche Ports TeamSpeak3 verwendet, damit ich die im Router weiterleiten kann. Gruß Justin Time
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
Justin Time schrieb: Zuallererst wird gesagt, ich soll einen neuen Benutzer anlegen: sudo adduser teamspeak --system --home /usr/local/bin/teamspeak3-server_linux-x86 --disabled-login
Dabei existiert der Ordner /usr/local/bin/teamspeak3-server_linux-x86 noch gar nicht. Man soll Teamspeak ja erst danach mit dem neu erstellten Benutzer herunterladen und in den Ordner kopieren:
vollkommen richtig so der Befehl adduser erstellt das betreffende Home-Verzeichnis gleich mit den richtigen Besitzrechten.
Lege Systembenutzer »teamspeak« (UID xxx) an ...
Lege neuen Benutzer »teamspeak« (UID xxx) mit Gruppe »nogroup« an ...
Erstelle Home-Verzeichnis »/usr/local/bin/teamspeak3-server_linux-x86« ...
Wenn du eine andere Konsolenausgabe erhältst ist was schiefgelaufen. Es ist nicht nötig es selber zu erstellen, aber man kann.
Natürlich kannste du ein anderes Home-Verzeichnis wählen ich habe diese gewählt, weil das Archiv die Daten nach ./teamspeak3-server_linux-x86 exportiert.
Alternativ kann man es auch unter /opt/teamspeak3-server_linux-x86 anlegen. tar -xzf teamspeak3-server_linux-x86-3.x.y.z.tar.gz -C /usr/local/bin
Aber der Nutzer teamspeak hat doch gar keine Rechte etwas in den Order /usr/local/bin zu kopieren. Also müsste der Ordner /usr/local/bin/teamspeak3-server_linux-x86 bevor man den Nutzer angelegt hat, von root erstellt werden. Des Weiteren habe ich mich gefragt, warum ausgerechnet in den Ordner /usr/local/bin ? Ich habe bisher alle Programme, die ich manuell installiert habe, in den Ordner /opt installiert.
Wenn natürlich das obige nicht geklappt hat, ist klar wieso der Benutzr teamspeak keine Rechte hat dazu bei Dir wäre es einfach mit der Option -C /opt wenn du es unter /opt/teamspeak3-server_linux-x86 installieren willst.
Existiert nach dem adduser Befehl das Home-Verzeichnis mit entsprechenden Rechten nicht gehts nicht mit dem entpacken ausser du machst es mit dem sudo Zusatz und die Daten/Programme gehören root .
Dann haste aber später Probleme beim Serverstart weil die PID , /Logs /Files etc nicht erstellt werden kann, ausser man erstellt die Alle selber mit den richtigen Rechten.
gemäss Wiki haste Recht, aber falsch ist es auch nicht, zumindest besser als unter /home
/opt ist für die manuelle Installation von Programmen gedacht, die ihre eigenen Bibliotheken mitbringen und nicht zur Distribution gehören
/usr/local/bin Das Verzeichnis /usr/local enthält noch einmal die gleiche Verzeichnisstruktur wie /usr und ist für Programme gedacht, die man an der Paketverwaltung vorbei installieren möchte, z.B. selbst kompilierte Programme
Die eigentliche Installation klappt dann soweit prima. Was mir noch gefehlt hat, ist die Angabe welche Ports TeamSpeak3 verwendet, damit ich die im Router weiterleiten kann.
Stimmt das könnte man noch ins Wiki aufnehmen wobei, teilweise stehts schon versteckt da ☺
in der betreffenden ts3server.ini nämlich Voiceport fürs Connecten der Clients → UDP 9987 Filetransferport (sowohl fürs Übertragen con Icons/Avatar, als auch den interenen Dateibrowser → TCP 30033 Server-Query Port für die Telnet -Verwaltung → TCP 10011 (hab ich persönlich nur im LAN zugelassen und vom Internet aus ALL DENY und nur einzelne speziefische IP's zugelassen, dieser Port ist die grösste Schwachstelle vom TS3-Server) TS-DNS Port → TCP 41144 (den Port brauchste nicht Forwarden aber würd ich filtern im Logfile der Firewall,was der Dienst sofern aktiv macht würd ne Kurzerklärung sprengen, ist aber für nicht gewerbliche Nutzung eh unnötig)
|
Justin-Time
Anmeldungsdatum: 31. März 2009
Beiträge: 1466
|
Axeaminator schrieb: vollkommen richtig so der Befehl adduser erstellt das betreffende Home-Verzeichnis gleich mit den richtigen Besitzrechten.
Ok, das war ein Denkfehler meinerseits. Hatte nicht auf dem Schirm, dass der Befehl direkt den Order mit erstellt.
Stimmt das könnte man noch ins Wiki aufnehmen wobei, teilweise stehts schon versteckt da ☺
Das hatte ich nach einer Zeit auch entdeckt, aber es könnte ruhig etwas deutlicher sein. 😉
|
slimmer2
Anmeldungsdatum: 28. Juli 2010
Beiträge: Zähle...
|
über den init.d befehl lässt sich der Server bei mir nicht starten/stoppen. Autostart geht auch nicht.
|
Axeaminator
Anmeldungsdatum: 16. April 2009
Beiträge: 63
Wohnort: Basel
|
slimmer2 schrieb: über den init.d befehl lässt sich der Server bei mir nicht starten/stoppen. Autostart geht auch nicht.
Hast du das besagte Init-Script auch als ausführbar angepasst nach dem erstellen? evtl sind die Anpassungen im Init-Script selber nicht gemacht oder nicht richtig? DESC="TeamSpeak 3 Server"
NAME=ts3server
USER=teamspeak
BINARY=ts3server_linux_x86
BINARY_BIN=/usr/local/bin/teamspeak3-server_linux-x86
DAEMON=ts3server_startscript.sh
DAEMON_ARGS=inifile=ts3server.ini
PIDFILE=$BINARY_BIN/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
Bei BINARY muss der CPU Type stimmen x86 oder amd64. Für BINARY_BIN muss der PFad stimmen falls wo anderst installiert wurde, z. Bsp unter /opt oder gar /home, damit das Init-Script die Datei BINARY findet. Denn das Init-Script bricht automatisch ohne Fehlermeldung ab wenn diese Angaben nicht stimmen oder gar nicht mehr vorhanden sind.
# Exit if the package is not installed
[ -x "$BINARY_BIN/$DAEMON" ] || exit 0
|
slimmer2
Anmeldungsdatum: 28. Juli 2010
Beiträge: 13
|
Habs auf amd64 angepasst
| DESC="TeamSpeak 3 Server"
NAME=ts3server
USER=teamspeak
BINARY=ts3server_linux_amd64
BINARY_BIN=/usr/local/bin/teamspeak3-server_linux-amd64
DAEMON=ts3server_startscript.sh
DAEMON_ARGS=inifile=ts3server.ini
PIDFILE=$BINARY_BIN/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
|
Verzeichnispfad stimmt auch.
Hab ein Ubuntu 12.04 Minimalinstallation
|