24/06/2008
[ jail symon /var/empty ]
Ou comment ne pas casser son ssh.
J'ai décidé d'utiliser symon pour monitorer mon kimsufi. Le principe: sur l'hôte faire tourner la partie cliente (symon) qui envoie les données vers le collecteur (symux) dans une jail.
Je commence donc par installer symon dans la jail:
jail$ sudo pkg_add -r symon
Les rrdtools font partie du voyage et c'est tant mieux. Le package a créé un utilisateur _symon aux droits limités. Afin de garder un hôte le plus minimaliste possible, je copie uniquement la partie symon :
kimsufi# cp /zfs/jail/www/usr/local/bin/symon /usr/local/bin
kimsufi# cp /zfs/jail/www/usr/local/etc/rc.d/symon /usr/local/etc/rc.d/
kimsufi# cp /zfs/jail/www/usr/local/share/examples/symon/symon.conf /usr/local/etc/
Il ne me reste plus qu'à ajouter mon utilisateur _symon :
kimsufi# grep _symon /zfs/jail/www/etc/passwd
_symon:*:115:1:Symon Account:/var/empty:/usr/sbin/nologin
kimsufi# adduser
Et là c'est le drame. La grosse feign que je suis va ajouter un utilisateur dont le $HOME correspond à /var/empty. Pour bien comprendre le problème, je décide tout à coup de bien pourrir mon terminal avec un zcat /var/log/pflo.0.bz2. Une déconnexion plus tard et quelques reset, je me reconnecte au kimsufi:
maison# ssh kimsufi
ssh_exchange_identification: Connection closed by remote host
maison#
Sueurs froides, panique. Plus d'accès au kimsufi. Ké passa ? Un coup de netboot (FreeBSD 6.2: heureusement que mon / n'est pas en ZFS :), montage de la racine et direction les logs:
netboot# tail /mnt/var/log/auth.log
sshd[96744]: fatal: /var/empty must be owned by root and not group or world-writable
Et ben voila ! chmod 555 /var/empty, reboot sur hd et c'est reparti ! Conclusion: à trop vouloir faire le malin, on oublie les commandes essentielles:
jail$ pkg_info -i symon-2.75
Information for symon-2.75:
Install script:
#!/bin/sh
PATH=/bin:/usr/sbin
USER=_symon
GROUP=daemon
UID=115
case $2 in
PRE-INSTALL)
if pw user show "${USER}" 2>/dev/null; then
echo "You already have a user \"${USER}\", so I will use it."
else
if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
-s /usr/sbin/nologin -L daemon -d /var/empty -c "Symon Account"
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
;;
esac
A venir: je ne veux pas installer syweb (pas de php dans cette jail) pour afficher mes jolis graphes. rrcgi n'est pas encore mon ami mais je ne désespère pas :)
Pages :
Rss