= Création automatique de répertoires de base sur NFS = Quand on utilise '''auf-django-users''' pour créer des comptes utilisateurs sur le serveur NFS, on ne crée pas en même temps le répertoire de base correspondant lors de l'ajout du login dans la base de données. Ce répertoire est créé par une autre méthode : Un script chargé de créer des répertoires est placé sur NFS et écoute sur un port bien défini, le port 10 par exemple. Lorsqu'un compte réussi à s'authentifier depuis un poste client, le client se connecte au serveur NFS et vérifie l'existence ou non du répertoire de l'utilisateur. Et dans le cas où le répertoire n'est pas encore créé, il est tout simplement créé. Dans le cas contraire, il est déjà créé et donc l'utilisateur retrouve son répertoire tel qu'il était. Ce qui signifie qu'il faut agir à deux niveaux : côté serveur, et côté client == Côté serveur NFS == # vi /usr/local/bin/pam_inetd_mkhomedir {{{#!highlight sh #!/bin/sh while read COMMAND LOGIN_EXT RESTE do if [ ${COMMAND} != "mkdir" ] ; then echo "commande inconnue : $COMMAND" exit 1 fi LOGIN=`echo $LOGIN_EXT | tr -dc A-Za-z0-9_.-@` if ! id "${LOGIN}" > /dev/null then echo "$0 erreur : login $LOGIN introuvable" >&2 exit 1 fi HD=`getent passwd ${LOGIN}|cut -d: -f 6` if [ ! -e ${HD} ] then mkdir -pv ${HD} >> /var/log/mkdir.log 2>&1 cd ${HD} chown -R $LOGIN:users ${HD} chmod 700 ${HD} PART=`df -Pl ${HD} | tail -1 | cut -d' ' -f1` /usr/sbin/quotatool -u $LOGIN -b -l 800000 -q 800000 ${PART} echo $(date) mkdir $HD >>/var/log/mkdir.log exit 0 else echo "$HD existe" exit 1 fi done }}} Ce script signifie qu'on a quota activé sur notre partition /home, sinon, juste éliminer la ligne concernant quota. # chmod +x /usr/local/bin/pam_inetd_mkhomedir Puis pour ceux qui utilisent inetd, dans /etc/inetd.conf, ajouter cette ligne : {{{ 10 stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/pam_inetd_mkhomedir }}} Ceux qui utilisent xinetd, entrer dans le répertoire /etc/xinetd.d/ et se baser sur un exemple pour faire écouter sur le port 10 : créer un service '''mkhomedir''' et mettre dedans : {{{ service mkhomedir { disable = no type = UNLISTED # Important car sinon, il va chercher le service dans /etc/services log_type = SYSLOG local4 info instances = 4 socket_type = stream id = mkhomedir protocol = tcp port = 10 server = /usr/local/bin/pam_inetd_mkhomedir user = root wait = no } }}} Pour tester que ça marche : '''''nc nfs 10''''' puis à l'invite de commande, taper '''''mkdir quelquechose''''' et voir la réponse. Si ''quelquechose'' n'existe pas, on aura ''erreur : login introuvable'', ... Pour quitter, faire [CRTL]+c == Côté client NFS == Très facile pour les postes en auf-poste-client-fixe. # pam-auth-update Cette commande donne une fenêtre dans laquelle il faut tout simplement (en plus de ce qui est déjà activé) "AUF mkhomedir via serveur distant lors de la connexion" Très très simple. ''' Si ça ne marche pas''' * Vérifier que le serveur dns résoud bien nfs * la commande nc peut aider à comprendre d'où vient le problème. * Si vous utilisez xinetd, il est intéressant d'activer les log et de regarder dans le syslog ce qui se passe ..? Les messages sont assez parlant '''Pour Nacer''' : Certainement que tu demanderas pourquoi le port 10 * Consulte tous tes fichiers /etc/services pour avoir ma réponse.