Enemy Territory Server - Linux
Dieses Tutorial beschreibt das Aufsetzen eines Sicheren ET-Servers unter Linux.
Chroot Setup
Damit geben wir dem Server nur beschränkten Zugriff auf das Dateisystem. Nämlich nur die Dateien, die er benötigt.
Zunächst müssen einige Ordner erstellt werden:
mkdir -p /usr/local/enemy-territory/home/et
mkdir -p /usr/local/enemy-territory/etc
mkdir -p /usr/local/enemy-territory/lib
mkdir -p /usr/local/enemy-territory/bin
Damit etded gestartet werden kann, müssen zuerst alle "shared object"-Dateien, von denen etded.x86 abhängig ist in dein chroot Verzeichnis kopiert werden.
cd /lib
cp libc.so.6 libm.so.6 ld-linux.so.2 libcrypt.so.1 libdl.so.2 libnsl.so.1 libnss_compat.so.2 libnss_dns.so.2 libnss_files.so.2 libresolv.so.2 libtermcap.so.2 /usr/local/enemy-territory/lib/
Nun müssen auch noch ein paar Systemdateien in den Ordner kopiert werden, damit wir später den Server auch unter einem anderen Benutzer, als "root" starten können.
cp /bin/bash /bin/su /usr/local/enemy-territory/bin/
In die Datei /usr/local/enemy-territory/etc/passwd schreibst du nun folgendes: root:x:0:0::/:/bin/bash et:x:603:603:enemy territory server:/enemy-territory:/enemy-territory/etded.x86
Damit ET auch Hostnamen auflösen kann, müssen noch ein paar .conf-Dateien kopiert werden:
cd /etc/
cp nsswitch.conf resolv.conf /usr/local/enemy-territory/etc/
So, nun sind alle Vorbereitungen für die Installation getroffen.
Als nächstes kannst du den Installer ausführen.
Den Installationspfad änderst du in "/usr/local/enemy-territory/enemy-territory_2.55".
Und wenn der Installer nach dem Ort, an dem er Links installieren soll, frägt, gibst du "/usr/local/enemy-territory/bin" ein.
Nach der Installation müssen einige Links angelegt werden:
cd /usr/local/enemy-territory
ln -s enemy-territory_2.55 enemy-territory
cd /usr/local/enemy-territory/enemy-territory
ln -s ../home/et/.etwolf .etwolf
Der Benutzeraccount
Dieser kann mit einem beliebigen Tool angelegt werden.
Wichtig ist nur, dass der Account keine LogOn-Privilegien besitzt und als Homedirectory folgendes Verzeichnis hat: "/usr/local/enemy-territory".
Wer es manuell machen möchte:
Datei /etc/passwd
et:x:603:603:enemy territory server:/usr/local/enemy-territory:
Datei /etc/group
et::603:
Als nächste muss dem User das Verzeichnis erstellt werden und die Rechte dafür gegeben werden:
mkdir -p /usr/local/enemy-territory/home/et/.etwolf
chown et /usr/local/enemy-territory/home/et/
StartUp Scripte
Dieses Script ist dafür da, dass der Server auch nach einem Rechner-Reboot wieder startet.
Dazu erstellst du eine Datei namens "/usr/local/bin/etded.sh" mit folgendem Inhalt:
#!/bin/sh
# the chroot 'root' directory where your game server is installed
SERVER_ROOT=/usr/local/enemy-territory
# additional options that should be passed to the game server command line
# for example, "+exec server.cfg +set net_ip 127.0.0.1"
SERVER_OPTIONS="+exec server.cfg"
# the location of a file that the PID of the running server should be written
# to by this script
SERVER_PIDFILE=/var/run/etded.pid
# the FULL PATH to the server binary. this is used by /sbin/pidof in
# determining if the server is running.
SERVER_BIN=/usr/local/enemy-territory/enemy-territory/etded.x86
# the username for the account that the server should be run as
SERVER_USER=et
# the location of a file that the PID of this script should be stored in
PIDFILE=/var/run/etded.sh.pid;
echo $$ > $PIDFILE;
while [ 1 ]; do
if [ ! $(pidof $SERVER_BIN) ]; then
screen -d -m chroot $SERVER_ROOT su - \
$SERVER_USER $SERVER_OPTIONS
sleep 1
if [ ! $(pidof $SERVER_BIN) ]; then
echo "\
Could not find a PID for ${SERVER_BIN}!
If etded.x86 is actually running, update ${0}
so that it can properly detect the PID of ${SERVER_BIN}."
rm $PIDFILE
exit;
fi
echo `pidof $SERVER_BIN` > $SERVER_PIDFILE
fi
sleep 30;
done;
Diese Datei musst du je nach Bedarf noch anpassen.
Anschließend muss sie ausführbar gemacht werden:
chmod a+x etded.sh
Nun noch ein 2. Script. Dies sollte dort Platziert werden, wo in deiner Distribution die rc-Dateien liegtn.
z.B.: "/etc/rc.d/init.d/rc.etded"
#!/bin/sh
SERVER_BIN=/usr/local/enemy-territory/enemy-territory/etded.x86
SERVER_PIDFILE=/var/run/etded.pid
SCRIPT_PIDFILE=/var/run/etded.sh.pid
SCRIPT_PATH=/usr/local/bin/etded.sh
etded_start() {
$SCRIPT_PATH &
}
etded_stop() {
if [ -r $SCRIPT_PIDFILE ]; then
kill `cat $SCRIPT_PIDFILE`
rm $SCRIPT_PIDFILE
fi
if [ -r $SERVER_PIDFILE ]; then
kill `cat $SERVER_PIDFILE`
rm $SERVER_PIDFILE
else
killall $SERVER_BIN
fi
}
etded_restart() {
etded_stop
sleep 3
etded_start
}
case "$1" in
'start')
etded_start
;;
'stop')
etded_stop
;;
'restart')
etded_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
Nun musst du nur noch sicherstellen, dass folgendes Kommando ausgeführt wird, wenn dein Rechner startet:
/etc/rc.d/init.d/rc.etded start
Das geht z.B. durch platzieren des Kommandos in /etc/rc.d/rc.local, kann sich jedoch je nach Distribution unterscheiden.
Das wars. Um etded zu starten gib einfach folgendes ein:
/etc/rc.d/init.d/rc.etded start
Zum beenden:
/etc/rc.d/init.d/rc.etded stop
Zum Neustarten
/etc/rc.d/init.d/rc.etded restart
Kommentare Seite:
Die Kommentar-Funktion ist derzeit leider deaktiviert.
Bitte nutze das Forum statt dessen.

