auf-mkhomedir 'localisé'
authorWilly MANGA <willy.manga@auf.org>
Thu, 24 Feb 2011 10:47:17 +0000 (11:47 +0100)
committerWilly MANGA <willy.manga@auf.org>
Thu, 24 Feb 2011 10:47:17 +0000 (11:47 +0100)
scripts/inetd_auf-mkhomedir [new file with mode: 0644]

diff --git a/scripts/inetd_auf-mkhomedir b/scripts/inetd_auf-mkhomedir
new file mode 100644 (file)
index 0000000..f9ba360
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# Ce script faire partie du système auf-mkhomedir. Il s'agit de la partie
+# serveur du système, le script qui sera lancé à chaque connexion d'un
+# utilisateur et qui créera le $HOME si besoin.
+#
+# Rappel du principe : 
+# Lorsqu'un utilisateur se connecte sur une machine client, le système
+# d'authentification "pam" lance un script qui va, si besoin, demander au
+# serveur la création du répertoire.  Nous sommes ici dans la partie serveur,
+# dans le script qui va reçoit une commande au format "mkdir <login>" et doit
+# créer le répertoire de l'utilisateur "<login>".
+#
+# Configuration dans /etc/inetd.conf :
+# 10 stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/inetd_auf-mkhomedir
+
+# Script de Jérome Santini <jerome@madagascar> écrit en 1664 (ou en 51, choisissez)
+# Relu et un peu revu par Thomas Noël et Ndimby Andriantsoavina en mai 2009
+# NON TESTE EN VRAI !
+# <!> Il faudra sans doute l'adapter à votre cas spécifique...
+
+while read COMMAND LOGIN_EXT RESTE
+do
+    # la seule commande acceptée : mkdir
+    if [ ${COMMAND} != "mkdir" ]
+    then
+        echo "commande inconnue : $COMMAND"
+        exit 1
+    fi
+
+    # nettoyage du login (on retire les caractères interdits)
+    LOGIN=`echo $LOGIN_EXT | tr -dc A-Za-z0-9_.@-`
+
+    # est-ce un login existant ?
+    if ! id "${LOGIN}" > /dev/null
+    then
+        echo "$0 erreur : login $LOGIN introuvable" >&2
+       exit 1
+    fi
+
+    # recherche du homedir
+    HD=`getent passwd ${LOGIN}|cut -d: -f 6`
+    GROUPE=`getent passwd ${LOGIN}|cut -d: -f 4`
+
+    # si le homedir n'existe pas, on le créé
+    if [ ! -e ${HD} ]
+    then 
+        # création du répertoire
+       mkdir -pv  ${HD} >> /var/log/mkdir.log 2>&1
+       cd ${HD}
+        # on place les droits correctement
+       chown -R $LOGIN:$GROUPE ${HD} 
+       chmod 700 ${HD} 
+        # activation d'un quota de 750Mo
+        if [ -x /usr/sbin/quotatool ]
+        then
+                # recherche de la partition dans laquelle est le répertoire
+                HD=`readlink -f ${HD}`
+               PART=`df -Pl ${HD} | tail -1 | cut -d' ' -f1`
+               /usr/sbin/quotatool -u $LOGIN -b -l 750000 -q 750000  ${PART}
+        fi
+       echo $(date) mkdir $HD >>/var/log/mkdir.log
+       exit 0
+    else
+        echo "$HD existe déjà" 
+        exit 1
+    fi
+done