Hallo,
wie kann ich, z.B. als root, einen beliebigen Prozess (genauer genommen einen Teamspeak-Server) als anderer User laufen lassen?
Geht das irgendwie mittels suid o.ä.?
Dankbar für alle Antworten,
searinox
Hallo,
wie kann ich, z.B. als root, einen beliebigen Prozess (genauer genommen einen Teamspeak-Server) als anderer User laufen lassen?
Geht das irgendwie mittels suid o.ä.?
Dankbar für alle Antworten,
searinox
Bei Servern gibts da noch einiges zu beachten, aber du kannst das sowohl mit suid als auch mit su lösen
EDIT: Löschen bitte, hab zu früh abgeschickt
Geändert von Hun (02.11.04 um 17:29 Uhr)
GPG-KeyID: 0xF9C481FD
Bei Servern gibts da noch einiges zu beachten, aber du kannst das sowohl mit suid als auch mit su lösen
für suid: man chmod
für su: su user -c bla
GPG-KeyID: 0xF9C481FD
Nabend,
geht einfach per su -c Befehl User
Gruß
Terran
Forum Fachinformatiker.de
Deutschlands erste Fachinformatiker-Community (seit 1999)
LPIC 1 zertifiziert :)
Zum Bleistift dass man normalerweise als user keine server starten kann
GPG-KeyID: 0xF9C481FD
Normalerweise kann man als User Server starten, wenn der Port auf dem der Server lauschen soll > 1024 istZitat von Hun
RTFM you have to, young padawan.
Das stimmt
Bei teamspeak weiß ichs net, aber zumindest die daemons die ich üblicherweise laufen hab sind alle im bereich 1-500
Und bei um die 30000 die ganzen browser und so zeugs
GPG-KeyID: 0xF9C481FD
Hm,
ich habe es jetzt mit beiden Vorschlägen versucht, keine hat soweit funktioniert.
Hier meine Vorgehensweise:
- Neuen User tss2 angelegt
- Neue Gruppe tss2 angelegt und user der Gruppe hinzugefügt
zuerst mit suid versucht:
Dann Startversuch:Code:# chown tss2:tss2 teamspeak2-server_startscript # chmod u+s teamspeak2-server_startscript
ps aux ergibt:Code:# ./teamspeak2-server_startscript start
der server läuft also unter dem root-account.Code:root 18046 0.0 0.1 18640 1796 pts/15 S 17:00 0:00 /opt/tss2_rc2/server_linux -PID=tsserver2.pid
2. Versuch mit su
Ergebnis: keinerlei ausgabe, nichts wird gestartet.Code:# su tss2 -c teamspeak2-server_startscript start
Was mache ich immer noch falsch?
Danke für jede Hilfe,
Searinox
schau dir mal das startscript genauer an, vielleicht besteht das auf rootrechten
GPG-KeyID: 0xF9C481FD
Hier das startscript:
Ich bin kein Bash-Guru, aber für mich siehts eher so aus, als würde das Script ziemlich gerne als nicht-root ausgeführt werden.Code:#! /bin/bash # Copyright (c) 2004 TeamSpeak team All rights reserved. # # Author: pwk.linuxfan 2004 # SERVER=/opt/tss2_rc2/server_linux case "$1" in start) if [ -e 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 $SERVER ]; then if [ ! -x $SERVER ]; then echo "server_linux is not executable, trying to set it" chmod u+x $SERVER fi if [ -x $SERVER ]; then $SERVER -PID=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 tsserver2.pid ]; then echo -n "stopping the teamspeak2 server" if ( kill -TERM `cat tsserver2.pid` ); then for c in $(seq 1 300); do if [ -e tsserver2.pid ]; then echo -n "." sleep 1 fi done fi if [ -e tsserver2.pid ]; then echo "server does not shutdown cleanly - killing" kill -KILL `cat tsserver2.pid` rm 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 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 server.log ]; then date=$(cat server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/") spass=$(cat server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/") pass=$(cat server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]\+\).*$/\1/") 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
Vor allem wegen dieser Meldung:
Sonst noch Ideen, wie ich es zum laufen bekommen könnte?Code:WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
Danke,
Searinox
starts halt mal einfach als user und schau ob's sich beschwert
GPG-KeyID: 0xF9C481FD
Habe es jetzt hinbekommen, indem ich den teamspeak-user gelöscht und von Hand (statt mit webmin) neu angelegt habe.
Jetzt funktioniert su ausgezeichnet.
Scheint irgendwas mit der user-config gewesen zu sein
Danke nochmal an alle
Lesezeichen