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