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 = .recycleRecharger ensuite samba pour que la corbeille soit prise en compte.
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 .recycleModifier 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 .recyclesetfacl -R -m d:g:"utilisa. du domaine:wx .recycleAinsi, 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::- .recyclesetfacl -R -m d:g::- .recycleAvec 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.
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_corbeillefind /opt/donnees/.recycle -ignore_readdir_race -type f -atime +30 -exec rm -f {} \;find /opt/donnees/.recycle -ignore_readdir_race -type d -empty -deleteCe script va :
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_corbeillecrontab -e00 18 * * * /root/vidage_corbeilleSi 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|/trashLes 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 -deleteUn petit tour sur le site de Samba n’est pas forcément inutile. Pour toutes les options concernant la corbeille :
http://samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2644353