Nach Script ausführen automatischer Benutzerwechsel

Blumenmensch

Mitglied
Hi Ho..

Ich habe mir einen TeamSpeak Server heruntergeladen. Läuft soweit auch alles ganz gut. Ich habe ein kleines Shell Script geschrieben um den Server zu starten. Den genauen Code kann ich leider nicht posten, weil ich in der Firma sitze. Aber vom Prinzip her läuft es so ab:

Hintergrund:
Egal wo man sich gerade befindet, der TeamSpeak Server soll mit einem einfachen Alias (ts start) gestartet werden können. Ich konnte nicht einfach ein Alias setzen mit Verweis auf ". /home/user/teamspeak/server start" weil man sich im gleichen Verzeichnis wie das Startscript befinden musste.

Also habe ich ein Shellscript geschrieben, dass erst in das Verzeichnis wechselt und dann das Startscript aufruft. Dieses Shellscript hat nun ein Alias bekommen.

Funktioniert auch alles ganz gut soweit. Ich habe eingebaut, dass nur ein ganz bestimmter User den TS Server starten darf (wenn man den Alias "ts start" aufruft und beispielsweise als root angemeldet ist, bekommt man eine Meldung, dass man sich als dieser user anmelden muss).

Folgendes Problem:
Ich bin als root an der Konsole angemeldet. Jetzt wechsel ich den Benutzer (su tsuser). Jetzt kann ich mit dem Alias "ts start" den Teamspeak Server Starten. Funktioniert auch alles. Aber nachdem der TS Server gestartet wurde, bin ich wieder automatisch als root angemeldet und nicht mehr als tsuser. Ich werde also nach ausführen des Aliases automatisch der User, der ich vor dem Userwechsel war. Wenn ich mich gleich als tsuser anmelde hängt sich danach die Konsole weg.

Jemand eine Idee?
 
Hi.

Ich kann nur raten, aber startest du das Programm zufällig mit einem exec Aufruf?

Gruß
Nein nicht mit exec. Ich bin mir gerade auch absolut nicht sicher wie ich das realisiert habe. Wenn ich jetzt nicht total auf dem Holzweg bin, habe ich eine kleines mini Script in dem nur steht "cd /home/tsuser/teamspeak" und danach der startbefehl. Und das Script führe ich folgendermaßen aus: source script
 
Nein nicht mit exec. Ich bin mir gerade auch absolut nicht sicher wie ich das realisiert habe. Wenn ich jetzt nicht total auf dem Holzweg bin, habe ich eine kleines mini Script in dem nur steht "cd /home/tsuser/teamspeak" und danach der startbefehl. Und das Script führe ich folgendermaßen aus: source script
Warum source'd du das Skript? Starte einfach einen neuen Prozess.

Gruß
 
Es liegt nicht am Script wie ich gerade sehe..

Auch wenn ich mich als root einlogge, dann tsuser werde und dann versuche den TS Server zu starten bin ich danach automatisch wieder root. Ich bleibe nur tsuser, wenn ich den TS Server von dort aus starte, wo er installiert ist. Wenn ich es von einem anderen Pfa aus probiere, bin ich danach wieder root.
 
Blumenmensch hat gesagt.:
". /home/user/teamspeak/server start"
Du source'd hier das Skript vom TeamSpeak Server. Das Skript sollte mit einer Shebang Zeile beginnen und ausführbar sein. Dann einfach aufrufen und nicht sourcen.

Gruß
 
Zuletzt bearbeitet:
Hi,

Code:
cd /usr/local/teamspeak
if cat /usr/local/teamspeak/tsserver2.pid >> /dev/null 2> /dev/null;
then
sudo -u nobody /usr/local/teamspeak/teamspeak2-server_startscript stop;
else
sudo -u nobody /usr/local/teamspeak/teamspeak2-server_startscript start;
fi
cd -

also ist schon ne weile her das ich das eingerichtet habe, aber bei mir funktioniert das so als Startscript.
Ich weiß jetzt aber nicht mehr ob ich da noch sudo für nobody einrichten musste, glaub aber nicht :rolleyes:

Gruß Christian
 
Zurück