Contexte
Voici la procédure utilisée à l'université de Lorraine, nous permettant de supprimer les comptes dans Nextcloud ne faisant plus parti de notre Système d'Information.
Ils sont identifiés comme étant des comptes ldap-remnants.
Avant tout, il est important que les données issues d'un partage soient conservées, pour laisser le temps au destinataire final de les récupérer, si nécessaire.
| Suppression du compte | Archive de l'espace | On informe | Commentaires | ||
| Un utilisateur n'est plus présent dans notre ldap | |||||
|---|---|---|---|---|---|
| 1 | s'il n'a effectué aucun partage |
| |||
| 2 | s'il a effectué des partages | à J+30 | On informe les destinataires des partages |
| |
Dans les cas ci-dessous, on notera "User 0" l'utilisateur dont le compte LDAP a été supprimé (compte ldap-remnant dans Nextcloud) et qu'il faut supprimer.
1er cas - User 0 n'a fait aucun partage
Cas simple, on fait une archive de ses données et on supprime son compte (l'archive sera conservée sur le serveur pendant un an).
# Création archive
cd ${DIR_DATA}/${USER}/files && zip -r ${DIR_SAVE}/${DATE}-${USER}.zip * && cd ${DIR}
# Suppression du compte
sudo -u apache /usr/bin/php ${DIR_BUL}/php/console.php user:delete ${USER}
2ème cas - User 0 a partagé des documents
User 0 a partagé son dossier Mon_dossier avec User 1 et User 2
- On écrit les infos récupérés dans un fichier
uid_owner;uid_initiator;share_with;file_target;date_remove User0;User0;User1;/Mon_dossier;<date format timestamp>
- On informe les destinataires du partage pour qu'il sauvegarde les données
- Étape suivante (Jour J)
# Création archive
cd ${DIR_DATA}/${USER}/files && zip -r ${DIR_SAVE}/${DATE}-${USER}.zip * && cd ${DIR}
# Suppression du compte
sudo -u apache /usr/bin/php ${DIR_BUL}/php/console.php user:delete ${USER}
Déroulement
Scénario traitement compte LDAP_Remanent_BUL
--------------------------------------------
- On liste des comptes 'ldap-remnants'
- On vérifie pour chaque utilisateur, qu'il ne soit pas présent dans le fichier de traitement "<nom_du_script>.txt"
SI OUI
- On vérifie si l'utilisateur a des partages
SI OUI
- On alimente le fichier de traitement "<nom_du_script>.txt" avec les informations récupérées de la BDD, date_remove est au format timestamps et valué à la date du jour +31 jours :
uid_owner;uid_initiator;share_with;file_target;date_remove
SINON
- Création de l'archive : `cd ${DIR_DATA}/${USER}/files && zip -r ${DIR_SAVE}/${DATE}-${USER}.zip * && cd ${DIR}`
- Suppression du compte 'ldap-remnants' : `sudo -u apache /usr/bin/php ${DIR_BUL}/php/console.php user:delete ${USER}`
FI
SINON
- On vérifie la date de suppression du compte : $date_remove
Cas 1 (J-30)
- On vérifie dans le fichier "<nom_du_script>.txt", que $share_with n'est pas vide
SI OUI
- On construit le corps du mail en listant les partages et les personnes ayant l'accès
- On envoie le mail
SINON
- On ne fait rien
Cas 1 (J-15)
- On vérifie dans le fichier "<nom_du_script>.txt", que $share_with n'est pas vide
SI OUI
- On construit le corps du mail en listant les partages et les personnes ayant l'accès
- On envoie le mail
SINON
- On ne fait rien
Cas 2 (J-1)
- On vérifie dans le fichier "<nom_du_script>.txt", que $share_with n'est pas vide
SI OUI
- On construit le corps du mail en listant les partages et les personnes ayant l'accès
- On envoie le mail
SINON
- On ne fait rien
Cas 3 (Jour J)
- Création de l'archive : `cd ${DIR_DATA}/${USER}/files && zip -r ${DIR_SAVE}/${DATE}-${USER}.zip * && cd ${DIR}`
- Suppression du compte 'ldap-remnants' : `sudo -u apache /usr/bin/php ${DIR_BUL}/php/console.php user:delete ${USER}`
- Suppression de la ligne dans le fichier "<nom_du_script>.txt" : `sed -i "/^${USER}/d" ${FILE_TRAITEMENT}`
- On vérifie la cohérence des partages entre la BDD et le fichier de traitement, ce qui permettra aux personnes ayant désactiver le partage de ne plus recevoir de mail de rappel.
- On effectue un diff entre la requête SQL pour alimenter le fichier de traitement et le fichier de traitement
SI il y a des (-) on supprime du fichier de traitement
SI il y a des (+) on ajoute au fichier de traitement en fin de fichier
FI
- On vérifie s'il existe des archives depuis plus de 6 mois, si c'est le cas, on supprime
find ${DIR_SAVE}/*.zip -mtime +${JRS_SUPP} -delete
Sources
| Description | Fichier |
|---|---|
Fichier principal de traitement | |
Fichier des fonctions utilisées | |
Fichier de configuration LDAP |
Contact
Pour toutes questions vous pouvez me contactez à mon adresse email : camille.herry@univ-lorraine.fr