Modifications entre les versions 3 et 4
Version 3 à la date du 2010-02-14 08:38:55
Taille: 3345
Éditeur: RogerYerbanga
Commentaire:
Version 4 à la date du 2010-02-15 08:51:33
Taille: 3358
Éditeur: ThomasNoël
Commentaire: highlight sh
Texte supprimé. Texte ajouté.
Ligne 15: Ligne 15:
{{{ {{{#!highlight sh
Ligne 17: Ligne 17:
 #!/bin/sh #!/bin/sh

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

   1 #!/bin/sh
   2 
   3 while read COMMAND LOGIN_EXT RESTE
   4 do
   5 
   6   if [ ${COMMAND} != "mkdir" ] ; then
   7       echo "commande inconnue : $COMMAND"
   8       exit 1
   9   fi
  10 
  11   LOGIN=`echo $LOGIN_EXT | tr -dc A-Za-z0-9_.-@`
  12 
  13   if ! id "${LOGIN}" > /dev/null
  14       then
  15         echo "$0 erreur : login $LOGIN introuvable" >&2
  16         exit 1
  17   fi
  18 
  19   HD=`getent passwd ${LOGIN}|cut -d: -f 6`
  20 
  21   if [ ! -e ${HD} ]
  22   then
  23       
  24         mkdir -pv  ${HD} >> /var/log/mkdir.log 2>&1
  25         cd ${HD}
  26         chown -R $LOGIN:users ${HD} 
  27         chmod 700 ${HD} 
  28         PART=`df -Pl ${HD} | tail -1 | cut -d' ' -f1`
  29         /usr/sbin/quotatool -u $LOGIN -b -l 800000 -q 800000  ${PART}
  30         echo $(date) mkdir $HD >>/var/log/mkdir.log
  31         exit 0
  32   else
  33       echo "$HD existe" 
  34       exit 1
  35   fi
  36 
  37 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, le port d'écoute sera 10, le serveur /usr/local/bin/pam_inetd_mkhomedir, wait à no, protocol à tcp, socket_type à stream, et le user à root.

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.

Pour Nacer : Certainement que tu demanderas pourquoi le port 10

  • Consulte tous tes fichiers /etc/services pour avoir ma réponse.

ZAO/CréationAutomatiqueHomeNFS (dernière édition le 2013-05-15 15:58:02 par FranckKouyami)