si qqun veut tester voila la traduction en français de la pages
http://tjw.org/etded/
Configurer un serveur dédie enemy territory (etded) sous Linux
Vue d?ensemble
Wolfenstein Enemy Territory est un jeu autonome libre par Splash Damage, id Software, et Activision.
Ce document décrit comment installer le serveur ET (etded) sous Linux dans un répertoire sûr et stable, par cela j?entend:
? etded est exécuter par un utilisateur non privilégier (non root)
? etded est exécuté dans un environnement CHROOT
? etded est appeler dans un répertoire qui lui permettra de ce relancer en cas de crash.
Ce document ne couvre pas la configuration du serveur depuis que cette information peut être trouvée dans une variété d?autre site.
Cependant vous pouvez voir le server.cfg que j'utilise à
http://et.tjw.org.
ETAP #1: configuration chroot
La commande /sbin/chroot changes le répertoire racine dans l?environnement d?un processus (et de cette façon tous ses enfants) quoi que vous spécifiez.
Par conséquent, quand vous changer le processus etded, vous restreignez le processus a une portion du system de fichier.
C'est utile au cas où une faille serait trouve par un pirate cela l?empêcherai d?accéder au fichier système car il sera coincer dans le répertoire chroot du serveur.
Créer une structure de répertoire basic:
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
pour être capable de lancer etded, vous aurez besoin de copier tous les fichiers du répertoire partagé dont etded.x86 dépend dans votre répertoire chroot.
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/
Ensuite, vous aurez besoin de copier quelques binaires du système pour utiliser un compte de l'utilisateur autre que root:
cp /bin/bash /bin/su /usr/local/enemy-territory/bin/
NOTE: si vous utilisez RedHat, SuSE, ou une autre distribution utilisant pam, vous devrez construire probablement un nouveau binaire du SU au lieu d'utiliser celui qui est sur votre system (ou essayer de copier tout les fichier du répertoire PAM de votre system vers le répertoire chroot du serveur). Les sources pour root peuvent être trouvé dans les packtages GNU coreutils . voir les instruction pour compiler le nouveau SU en bas de pages.
Vous devrez maintenant installer le répertoire etc dans votre répertoire chroot. Le seul dossier qui importe vraiment est passwd. Par exemple:
/usr/local/enemy-territory/etc/passwd:
root:x:0:0::/:/bin/bash
et:x:603:603:enemy territory server:/enemy-territory:/enemy-territory/etded.x86
OK, cela mérite quelque explication: le shell utilisateur dans le répertoire chroot de l?environnement est actuellement le binaire etded.x86. Le répertoire de l?utilisateur et mis a /enemy-territory au lieu de /home/et parce que etded.x86 a besoin d?être appeler dans le répertoire /enemy-territory. Nous créerons un lien symbolique plus tard.
Il peut également être nécessaire pour etded de pouvoir résoudre des hostnames. Vous aurez déjà les bibliothèques copiées, mais vous aurez besoin des dossiers de configuration pour qu'il fonctionne:
cd /etc/
cp nsswitch.conf resolv.conf /usr/local/enemy-territory/etc/
Cela devrait le faire! Maintenant vous êtes prêt à installer Enemy Territory. Quand vous lancerai l?installation, vous devriez être interroger sur l?emplacement de l?installation (par defaut /usr/local/games/enemy-territory je pense). Changez ceci en "/usr/local/enemy-territory/enemy-territory_2.55" (ou le numéro de version correspondant). Quand l?installation vous demande l?emplacements pour les liens utiliser "/usr/local/enemy-territory/bin".
Après installation, vous devrez installer un couple des liens symboliques:
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
En liant de cette façon, il devient très facile d'installer de nouvelles versions d'enemy-territory puisque vous pouvez juste installer sur l'ennemi-territory_VERSION et remplacer les deux liens. Notez que l'annuaire de../home/et/.etwolf n'existe pas encore, on l'ajoutera dans la prochaine étape (vous pouvez faire le symlink quoiqu'il n'existe pas encore).
ETAP #2: le compte utilisateur
La plupart des distributions de Linux viennent avec une certaine utilité pour ajouter des utilisateurs au système. Vous pouvez utiliser l'outil de whatver que vous aimez pour faire ceci, mais assurez vous que le compte n'a aucun privilège d'ouverture et un répertoire local /usr/local/enemy-territory (ou quel que soit le répertoire du chroot soit l'Etap #1).
Personnellement, j?ai juste ajoute des lignes aux fichiers /etc/passwd et /etc/group avec un éditeur de texte comme ce qui suit:
/etc/passwd:
et:x:603:603:enemy territory server:/usr/local/enemy-territory:
/etc/group:
et::603:
Maintenant, vous devrez donner l'accès d'utilisateur au seul répertoire auquel il a accès en écriture:
mkdir -p /usr/local/enemy-territory/home/et/.etwolf
chown et /usr/local/enemy-territory/home/et/
ETAP #3: Script de démarrage
Chaque distribution de Linux semble manipuler des scripts d'init différemment. Une chose que les la plupart (si pas tous) ont en commun est qu'elles ont le dossier /etc/rc.d/rc.local qui est exécuté lors du démarrage, ainsi j'expliquerai comment employer cela.
En premier, placez le script bash dans votre répertoire (e.g. /usr/local/bin/etded.sh):
#!/bin/sh
# le chroot 'root' directory ou votre serveur de jeu est installer
SERVER_ROOT=/usr/local/enemy-territory
# options additionnel pour lancer le serveur en ligne de commande
# pour exemple, "+exec server.cfg +set net_ip 127.0.0.1"
SERVER_OPTIONS="+exec server.cfg"
# l?emplacement ou le fichier PID est pour lancer le serveur par le script
SERVER_PIDFILE=/var/run/etded.pid
# le chemin complet vers les fichiers binaire. Il est utiliser par /sbin/pidof pour
# déterminer si le serveur est lancer.
SERVER_BIN=/usr/local/enemy-territory/enemy-territory/etded.x86
# le nom d?utilisateur sous le quel sera lancer le serveur
SERVER_USER=et
# l?emplacement du fichier que le PID de ce script voudra ecrire
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 "
je n?arrive pas a trouver le PID pour ${SERVER_BIN}!
si etded.x86 est lancer, mettez a jour ${0}
pour qu?il puisse detecte correctement le PID de ${SERVER_BIN}."
rm $PIDFILE
exit;
fi
echo `pidof $SERVER_BIN` > $SERVER_PIDFILE
fi
sleep 30;
done;
Et éditez-le pour votre configuration au besoin. Vous devrez également rendre ce manuscrit exécutable.
Exemple:
cd /usr/local/bin/
&& wget -O etded.sh
http://tjw.org/etded/etded.sh.txt
&& chmod a+x etded.sh
Après, placez le script bash suivant là où votre fichier rc va (e.g. /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
En conclusion, assurez-vous que la commande /etc/rc.d/init.d/rc.etded est executer quand votre machine est démarrée ou en plaçant dans de commande/etc/rc.d/rc.local, ou par une autre méthode vos utilisations de distribution.
Exemple:
cd /etc/rc.d/init.d
&& wget -O rc.etded
http://tjw.org/etded/rc.etded.txt
&& chmod a+x rc.etded
&& echo "/etc/rc.d/init.d/rc.etded start" >> /etc/rc.d/rc.local
c?est tout. Pour démarrer etded exécuter '/etc/rc.d/init.d/rc.etded start', pour l?arrêter, taper '/etc/rc.d/init.d/rc.etded stop', ou pour le redémarrer, taper '/etc/rc.d/init.d/rc.etded restart'.
Vous pouvez utiliser l'écran pour regarder le fonctionnement de la console etded en executant la commande 'screen -r '. Pour sortir de l'écran faire Ctrl+A+D, qui ne tuera pas le processus etded.
----------------------------------------------------------------------------------------------------------------------------------------------------------
Compiler un nouveau SU
Ainsi votre distribution et fourni avec un su binaire qui dépend de PAM et voulez-vous juste un su simple binaire qui peut être employé dans un environnement de chroot?
Bien alors voici comment en faire un nouveau:
wget
ftp://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.gz
tar zxvf coreutils-5.0.tar.gz
cd coreutils-5.0
./configure
make
cp src/su /la/place/ou/je/veux/mon/nouveau/su/binaire
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FAQ
Note que le dossier d'etded.sh fait referance a server.cfg.
Il ne commencera pas etded à moins que vous créiez un dossier de server.cfg ou éditiez le manuscrit d'etded.sh.
Il y a deux endroits ou etded.x86 recherchera le server.cfg
file:
/usr/local/enemy-territory/enemy-territory/etmain/
et
/usr/local/enemy-territory/home/et/.etwolf/etmain/
Je recommande d'employer la dernier version ainsi il n?y aura pas de perte si vous changez de version.
> [root@maelstrom init.d]# /etc/rc.d/init.d/rc.etded start
> [root@maelstrom init.d]# N'a pas pu trouver le PID pour
> /usr/local/enemy-territory/enemy-territory/etded.x86!
> Si etded.x86 est actuellement exécuter, mettez à jour /usr/local/bin/etded.sh
> de sorte qu'il puisse correctement détecter le PID de
> /usr/local/enemy-territory/enemy-territory/etded.x86.
Cette erreur est produite par mon script etded.sh si il ne peut pas détecter le PID etded.x86 qu'il a essayé de lancer.
Il y a deux possibilités a cette erreur:
1) etded.x86 ne veut pas démarrer ou il s?est fermé tous seul un bref instant après avoir démarrer.
Ceci pourrait être parce que vous avez une erreur dans votre dossier de config,
ou probablement une erreur de permission. Vous pouvez dire si c'est le cas s'il n'y a aucun
Processus etded.x86 sur votre système après avoir exécutez la commande
"start de rc.etded". Pour découvrir pourquoi etded.x86 ne démarre pas, sautez le script d'init
et exécuter le serveur directement avec la command:
'chroot /usr/local/enemy-territory su - et +exec server.cfg'
2) Il y a un problème pour trouver ou écrire le PID, mais le processus etded.x86 est actuellement lancé.
Si c'est le cas assurez vous d?avoir un répertoire /var/run sur votre système et s'assurer également
les exécutables sont dans /sbin/pidof sur le répertoire racine.
linux:/etc/init.d # chroot /usr/local/enemy-territory su - et +exec server.cfg
su: incorrect password
C'est ce qui se produit quand le su binaire que vous avez employé à:
/usr/local/enemy-territory/bin/su
Exige le support pam (Pluggable Authentication Modules).
Il semble que la plupart des distributions construisent maintenant le su et les autres coreutils avec l'appui de PAM.
Vous pouvez essayer de figurer quels fichiers sont nécessaires a PAM et les copier au chroot, ou prenais juste la voie de la faciliter en construisant votre propre su binaire pour l?employer ici.
Voir:
http://tjw.org/etded/su.php
2003-06-19 Tony J. White
tjw@tjw.org
2003-08-14 Tony J. White
tjw@tjw.org
2004-06-25 Tony J. White
tjw@tjw.org