Dupedi - Gestion de droits partagés pour les documents sauvegardés avec Evolution
Conformément à ses besoins opérationnels, Dupedi utilise une arborescence commune à tout le personnel où l'ensemble des documents nécessaires au bouclage d'une publication sont sauvegardés selon une structure complexe.
Cette arborescence renferme des dizaines de milliers de fichiers, eux-mêmes répartis dans des milliers de sous-répertoires [1].
Les documents qui y sont sauvegardés sont souvent d'origine externe. Il sont acheminé de la manière la plus simple qui soit, à savoir par courrier électronique.
Evolution, le client mail retenu dans la solution mise en oeuvre, gère certes les fichiers attachés et leur sauvegarde, mais il modifie les droits de ces documents en ne laissant subsister que les droits de l'utilisateur (il enlève tous les droits dédiés au groupe ou aux autres). Evolution se comporte ainsi car il considère que le courrier électronique relève de la vie privée de l'utilisateur, ce qui est le cas de figure le plus communément admis.
Chez Dupedi, il est évidemment impératif que ces documents puissent être partagés, et ce sans manipulations complexes et incessantes de la part des utilisateurs.
Il est déraisonnable de penser que les utilisateurs modifient à chaque fois les droits sur les fichiers sauvegardés. Non seulement n'en ont-il pas nécessairement la compétence informatique, mais de plus, un oubli pourrait se révéler opérationnellement catastrophique.
Solution:
Pour contourner ce comportement naturel d'Evolution, nous avons développé un nouvel utilitaire, baptisé monitorDir [2], dont le rôle est de surveiller un répertoire et d'y modifier les droits des fichiers et répertoires y sont créés.
monitorDir est d'un usage simple. Chez Dupedi, son appel ressemble à:
monitorDir -p 0666 -g users /home/redaction/Cet appel positionne les droits :
- des fichiers nouvellement créés à 0666
- et les droits des nouveaux répertoires à 0777.
Explications:
Initialement, Evolution faisait appel à FAM, une bibliothèque permettant aux gestionnaires de fichiers graphiques de mettre à jour automatiquement leur affichage lors de l'apparition ou de la modification d'un fichier. Il s'est rapidement avéré que FAM n'était pas une solution adaptée au grand nombre de répertoires [3].
Aussi, la solution a été d'utiliser l'appel système dnotify apparu dans la version 2.4 du noyau Linux. Comme chez Dupedi, le nombre de répertoires à surveiller dépasse le nombre maximum de fichiers qu'un processus peut ouvrir [4], la solution a simplement consisté à augmenter le nombre de processus.
[1] En octobre 2002, on recensait plus de 5000 répertoires contenant ensemble plus de 50000 fichiers
[2] dont les sources sont disponibles ici: monitorDir source
[3] il était possible de surveiller au plus 200 répertoires
[4] la limite est à 1024 dans les noyaux 2.4, et augmenter cette limite est un vrai défi