Que ce soit pour les répertoires utilisateurs ou "projet", la méthode reste la même. Nous partons du fichier contenant les descriptions des répertoires sur le serveur (fichiers "AUTO_USERS" et "AUTO_PROJECTS"), nous en extrayons les informations, c'est-à-dire le répertoire à créer éventuellement, et nous y appliquons les opérations suivantes :
Par convention, le nom d'un répertoire utilisateur ou "projet" est justement celui affecté à cet utilisateur ou ce projet. Par conséquent, il suffit d'utiliser la commande "basename16.4" avec comme argument, le nom du répertoire. L'"UID" correspond au troisième champ du fichier "PASSWD_REF", sachant que le premier champ doit ête identique à l'utilisateur traité (le nom est connu grâce à la commande "basename". Cette opération est donc effectuée de la façon suivante :
owner=`basename $directory` uid=`awk -F: -v owner=$owner ' $1 == owner { print $3 } ' $PASSWD_NEW`où "directory" correspond au répertoire en cours de traitement. Il ne restera plus qu'à copier les fichiers de profil nécessaires et mettre à jour les droits d'accès.
La technique est rigoureusement identique pour les répertoires associés aux projets. Le fichier permettant de connaître les "GIDs" est "GROUP_REF".
Nous obtenons donc, pour cette partie, les instructions suivantes :
cat $AUTO_USERS | cut -d: -f2 |\ while read directory do owner=`basename $directory` uid=`awk -F: -v owner=$owner ' $1 == owner { print $3 } ' $PASSWD_NEW` if [ ! -d $directory ]; then mkdir -p $directory cp $HOME_PROTOTYPE/.[a-z]* $HOME_PROTOTYPE/.[A-Z]* \ $HOME_PROTOTYPE/* $FS_STUDENTS/$newname 2>/dev/null chown -R ${uid}.${STUDENT_GID} $directory fi done cat $AUTO_PROJECTS | cut -d: -f2 |\ while read directory do group=`basename $directory` gid=`awk -F: -v group=$group ' $1 == group { print $3 } ' $GROUP_NEW` if [ ! -d $directory ]; then mkdir -p $directory chown -R root.${gid} $directory fi done