Paramétrer correctement les corbeilles réseau

SAMBA dispose d’un système permettant de gérer des corbeilles réseau : si un utilisateur supprime par mégarde un fichier, ce fichier peut être récupéré dans une corbeille à la racine de l’arborescence.

La configuration doit pourtant être réfléchie : il ne faut pas qu’un utilisateur puisse consulter un fichier auquel il n’aurait pas droit, simplement parce qu’il aurait été supprimé.

Paramétrage de la corbeille dans samba

Editer le fichier smb.conf, et, pour le partage considéré, rajouter les informations suivantes :

[donnees]
recycle:touch = yes
writeable = yes
recycle:excludedir = /tmp /temp /trash
path = /opt/donnees
vfs object = recycle
recycle:exclude = *.tmp *.temp
recycle:keeptree = True
public = yes
recycle:versions = no
recycle:repository = .recycle

Recharger ensuite samba pour que la corbeille soit prise en compte.
Modification des droits sur l’arborescence de la corbeille

Comme on peut le voir dans le fichier smb.conf, le nom de la corbeille est .recycle (recycle:repository).

Créer, à la racine de l’arborescence (ici, dans /opt/donnees, variable path), le dossier .recycle :

mkdir .recycle

Modifier ensuite les droits sur .recycle. On considère que tous les utilisateurs sont membres du groupe « utilisa. du domaine » :

setfacl -R -m g: »utilisa. du domaine »:wx .recycle
setfacl -R -m d:g: »utilisa. du domaine:wx .recycle

Ainsi, les utilisateurs peuvent écrire dans ce dossier, mais ne peuvent lire son contenu.

On va également inhiber la lecture par le groupe par défaut (cf. l’article sur les ACLs :

setfacl -R -m g::- .recycle
setfacl -R -m d:g::- .recycle

Restaurer un fichier effacé malencontreusement

Avec cette configuration, les utilisateurs ne peuvent accéder à la corbeille. Pour récupérer un fichier, il suffit de se connecter en ssh sur le serveur, et de déplacer le fichier malencontreusement supprimé vers son emplacement d’origine. Les droits initiaux du fichier ont été conservés.

Par contre, la corbeille ne règle pas le cas du fichier qui a été vidé, mais qui existe toujours sur le système : des sauvegardes régulières restent nécessaires.
Vider la corbeille

La corbeille doit être vidée régulièrement, pour éviter qu’elle enfle dans des proportions trop importantes… On va donc programmer une tâche qui va se charger de supprimer les fichiers :

cat /root/vidage_corbeille
find /opt/donnees/.recycle -ignore_readdir_race -type f -atime +30 -exec rm -f {} \;
find /opt/donnees/.recycle -ignore_readdir_race -type d -empty -delete

Ce script va :

- supprimer tous les fichiers qui ont été intégrés à la corbeille il y a plus de 30 jours
- vider les dossiers vides

Il reste à programmer le nettoyage tous les jours, en rajoutant le script soit dans /etc/cron.daily, soit dans le crontab :

ln -s /root/vidage_corbeille /etc/cron.daily/vidage_corbeille

ou :

crontab -e
00 18 * * * /root/vidage_corbeille


Cas particulier des dossiers home des utilisateurs

Si on souhaite mettre en place une corbeille pour les dossiers /home des utilisateurs, on va utiliser la configuration suivante dans /etc/samba/smb.conf :

[homes]
path = /home/%u
comment = Home Directories
browseable = yes
writable = yes
vfs object = recycle
recycle:touch = yes
recycle:keeptree = yes
recycle: path = .recycle/%u
recycle:versions = no
recycle: touch = yes
recycle: maxsize = 0
recycle: exclude = *.tmp|*.temp|*.obj|~$*|*.$$$
recycle: excludedir = /tmp|/temp|/trash

Les dossiers des utilisateurs sont montés dans /home/, la corbeille dans leur dossier personnel.

La commande de vidage de la corbeille va alors prendre la forme suivante :
find /home/*/.recycle -ignore_readdir_race -type f -atime +30 -exec rm -f {} \;
find /home/*/.recycle -ignore_readdir_race -type d -empty -delete

Popularity: 17%

Partager cet article:
  • Facebook
  • Live
  • MySpace
  • Google Bookmarks
  • Technorati
  • Print
  • del.icio.us
  • Digg
  • email
  • PDF
  • Twitter