Out of the box kommt Samba ohne irgendwelche Papierkorb-Funktion daher, eine gelöschte Datei landet also im Nirvana und kann maximal aus einem Backup zurück geholt werden.
Das kann zu Problemen führen wenn die User gewohnt sind auf gelöschte Dateien über den Papierkorb zugreifen zu können, bei Windows Servern und deren Freigaben ist das der Standard.
Samba fehlt diese Funktion allerdings nicht, sie ist nur per Default nicht aktiviert bzw. kann für jede Freigabe extra aktiviert werden.
Die Funktion für eine Freigabe nachzurüsten ist sehr einfach, hier die Schritte die es dafür benötigt:
- Anlegen eines Papierkorb Verzeichnisses
mkdir /srv/samba/freigabe/.recycle
chmod 1770 /srv/samba/freigabe/.recycle
Die Zugriffsrechte 1777 verwende ich weil auf der Freigabe nur der Besitzer und root die Datei aus dem Papierkorb löschen sollen.
Durch den vorangstellten Punkt wird das Verzeichnis im Windows als verstecktes Verzeichnis behandelt und ist nicht für Jedermann sichtbar.
- In der smb.conf die Einstellungen bei der Freigabe vornehmen
[freigabe]
comment = eine Freigabe zum Testen
path = /srv/samba/freigabe
writable = yes
create mask = 0770
directory mask = 0770
force user = smbusers
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
Die Bedeutung der vfs object Parameter sind wie folgt:
recycle:repository = .recycle
Der relative Pfad zum Papierkorb innerhalb der Freigabe.
recycle:touch = Yes
Setzt die Uhrzeit der gelöschten Datei auf den Löschzeitpunkt – sehr wichtig wenn man alle Dateien älter als x-Trage automatisch per Cron Job löschen möchte!
recycle:keeptree = Yes
Behält die Ordnerstruktur im Papierkorb bei.
recycle:versions = Yes
Dateien mit dem gleichen Namen überschreiben sich nicht im Papierkorb, die zweite Datei bekommt den Namen „Copy #1 of…“
recycle:maxsize = 0
0 bedeutet hier dass alle Dateien im Papierkorb landen, gibt man hier eine Größe an landen alle Dateien ab der Größe im Nirvana und nur kleinere Dateien werden in den Papierkorb verschoben.
Das Ganze lässt sich dann noch mit „vfs object = full_audit recycle“ kombinieren und schon sieht man im Samba Logfile wer welche Dateien gelöscht hat. Erzeugt zwar jede Menge Daten im Syslog – wer aber regelmässig damit zu kämpfen hat dass Dateien „einfach verschwinden“ der findet hier schnell den Übeltäter! 😉
Damit der Papierkorb sich nicht unendlich füllt habe ich noch eine Cron Job eingebaut der täglich um 23:00 Uhr alle Dateie älter als 30 Tage aus dem Papierkorb entfernt.
In der Datei /etc/crontab einfach folgende Zeile einfügen:
0 23 * * * root find /srv/samba/freigabe/.recyclebin -atime +30 -exec rm -rf {} \;
Und schon verliert das Löschen auf Netzwerklaufwerken mit Samba Servern seinen Schrecken! 🙂
Der -print Befehl im Cron Job ergibt irgendwie kein sin^^
Da hast du recht, den brauchts nicht mehr! War noch vom testen übrig geblieben… 🙂
Danke!
da hat sich ein typo eingeschlichen…
recycle:maxsixe = 0
soll bestimmt
recycle:maxsize = 0
heissen
Vielen Dank C.,
ich hab da jetzt echt mehrmals hinschauen müssen bevor ich das X und Z Problem erkannt habe – sind sich aber auch Ähnlich die beiden Buchstaben… 😉
Ist korrigiert.
sg
Manfred