init script als user starten
init script als user starten
Hallo,
ich habe ein problem bezüglich init. Und zwar habe ich ein Script zum Starten eines Teamspeak Servers in die init.d geschrieben und hab das script in die rc2.d verlinkt. So nun mein Problem: Immer wenn der Server beim Systemboot gestartet wird, wird er automatisch über den user root ausgeführt. Gibt es da nicht irgendeinen trick, wie ich das Script bei Systemstart unter einem anderen User ausführen lassen kann?
MFG Chrissi
ich habe ein problem bezüglich init. Und zwar habe ich ein Script zum Starten eines Teamspeak Servers in die init.d geschrieben und hab das script in die rc2.d verlinkt. So nun mein Problem: Immer wenn der Server beim Systemboot gestartet wird, wird er automatisch über den user root ausgeführt. Gibt es da nicht irgendeinen trick, wie ich das Script bei Systemstart unter einem anderen User ausführen lassen kann?
MFG Chrissi
jop user ist angelegt (Name=chris) Und hier ist das script
Code: Alles auswählen
#! /bin/bash
# Copyright (c) 2004 TeamSpeak team All rights reserved.
#
# Author: pwk.linuxfan 2004
#
DIR=/home/chris/tss2_rc2
case "$1" in
start)
if [ -e $DIR/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 $DIR/server_linux ]; then
if [ ! -x $DIR/server_linux ]; then
echo "server_linux is not executable, trying to set it"
$DIR/chmod u+x server_linux
fi
if [ -x $DIR/server_linux ]; then
$DIR/server_linux -PID=$DIR/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 $DIR/tsserver2.pid ]; then
echo -n "stopping the teamspeak2 server"
if ( kill -TERM `cat $DIR/tsserver2.pid` ); then
for c in $(seq 1 300); do
if [ -e $DIR/tsserver2.pid ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e $DIR/tsserver2.pid ]; then
echo "server does not shutdown cleanly - killing"
kill -KILL `cat $DIR/tsserver rm $DIR/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 $DIR/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 $DIR/server.log ]; then
date=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9$
spass=$(cat $DIR/server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed "s/^.*username: superadmin pass$
pass=$(cat $DIR/server.log | grep "admin account info: username: admin"
| tail -n 1 | sed "s/^.*username: admin password: \([a-z0-9]$
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
Zuletzt geändert von Chrissi05 am 22.05.2005 18:52:07, insgesamt 1-mal geändert.
Schmeiss die root Prüfung raus und setze das Starten des Servers in den 'su' Befehl.
Folgend nur der 'case' Abschnitt 'start':
Folgend nur der 'case' Abschnitt 'start':
Code: Alles auswählen
case "$1" in
start)
if [ -e $DIR/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
echo "starting the teamspeak2 server"
if [ -e $DIR/server_linux ]; then
if [ ! -x $DIR/server_linux ]; then
echo "server_linux is not executable, trying to set it"
$DIR/chmod u+x server_linux
fi
if [ -x $DIR/server_linux ]; then
su -c "$DIR/server_linux -PID=$DIR/tsserver2.pid" chris
else
echo "server_linux is not executable, fix this"
exit 4
fi
else
echo "Couldnt find server_linux"
exit 5
fi
fi
;;