Good to Know Database

Samba 3: Papierkorb für Samba-Freigaben einrichten


Wenn Sie in einer Windows-Netzwerkfreigabe auf einem Windows Server oder auf einem Linux Server mit Samba eine Datei oder ein ganzes Verzeichnis löschen, wird der Löschvorgang direkt ausgeführt. Anders als von Windows bekannt, wird das gelöschte Objekt nicht in einen Papierkorb verschoben. Samba bietet seit Version 3 durch das VFS-Modul recycle einen Papierkorb für die Netzwerkfreigaben an. Durch das virtuelle Dateisystem (VFS) werden die UNLINK-Befehle abgefangen und die zu löschenden Dateien in das Papierkorb-Verzeichnis verschoben. Durch ein kleines Skript kann der Inhalt des Papierkorbes nach Ablauf einer festgelegten Aufbewahrungszeit automatisch gelöscht werden.

Die folgende Anleitung soll Ihnen zeigen, wie Sie unter CentOS 6 den Samba 3.5 Daemon entsprechend konfigurieren und anschließend einen Cronjob für die automatische Leerung des Papierkorbs erstellen.

Wenn Sie Samba 3.5 wie in der Anleitung CentOS 6: Samba 3.5 einrichten beschrieben installiert und konfiguriert haben, ist das notwendige VFS-Modul bereits installiert. Wenn das VFS-Modul recycle auf einem 32-bit System installiert ist, sollten Sie die Datei /usr/lib/samba/vfs/recycle.so vorfinden. Auf einem 64-bit System wird die Datei /usr/lib64/samba/vfs/recycle.so benötigt.

Um die Papierkorb-Funktion zu aktivieren, sind ein paar zusätzliche Einträge in der Samba-Konfigurationsdatei /etc/samba/smb.conf nötig.

[root@centos6 ~]# vi /etc/samba/smb.conf

Im folgenden Beispiel werden die Direktiven in den globalen Bereich der Konfigurationsdatei eingetragen. Dadurch werden die Einstellungen für alle Freigaben vorgenommen. Sollten Sie die Einstellungen für jede Freigabe einzeln vornehmen wollen, fügen Sie die Direktiven in die Abschnitte der jeweiligen Freigaben ein.

[global]
        [...]
        vfs object = recycle
        recycle:repository = .recycle
        recycle:directory_mode = 0775
        recycle:keeptree = Yes
        recycle:versions = Yes
        recycle:touch = Yes
        recycle:touch_mtime = Yes
        recycle:maxsize = 0

Durch den Eintrag vfs object = recycle wird das VFS-Modul recycle aktiviert. Mit der Direktive recycle:repository wird der Name des Papierkorb-Verzeichnisses festgelegt. Wird hier ein Punkt vor den Verzeichnisnamen gesetzt, wird das Verzeichnis von Samba und Windows standardmäßig als verstecktes Verzeichnis behandelt und nicht angezeigt. recycle:directory_mode legt die Zugriffsrechte für das Papierkorb-Verzeichnis fest, welche beim Anlegen des Verzeichnisses verwendet werden.
Durch recycle:keeptree = Yes wird die vollständige Verzeichnisstruktur der gelöschten Datei gespeichert. Mit recycle:versions = Yes werden Dateien mit gleichem Namen im Papierkorb nicht überschrieben sondern fortlaufend durchnummeriert.
Für die automatische Leerung des Papierkorbs nach Ablauf einer festgelegten Aufbewahrungsfrist ist es notwendig die Zeitstempel der gelöschten Dateien zu modifizieren. Dazu werden die beiden Direktiven recycle:touch und recycled:touch_mtime aktiviert.
Durch den Wert von recycle:maxsize kann man festlegen bis zu welcher maximalen Dateigröße eine Datei beim Löschen in den Papierkorb verschoben werden soll.

Nachdem Sie die Samba-Konfigurationsdatei gespeichert haben, starten Sie den Samba-Daemon durch den folgenden Befehl neu.

[root@centos6 ~]# service smb restart

Wenn Sie jetzt eine Datei oder ein Verzeichnis auf der Netzwerkfreigabe löschen, wird das Verzeichnis .recycle im Hauptverzeichnis angelegt und die zu löschende Datei in dieses Verzeichnis verschoben.

Die Crontab können Sie durch den folgenden Befehl editieren und so einen Cronjob für die automatische Leerung der Papierkörbe eintragen.

[root@centos6 ~]# crontab -e

Sollten Sie die Papierkorb-Funktion nur für einzelne Freigaben aktiviert haben, können Sie wie folgt einen Cronjob für die jeweilige Freigabe erstellen. In diesem Beispiel soll täglich um 12 Uhr der Papierkorb im Verzeichnis /data/public/ nach Dateien durchsucht werden, welche bereits vor mehr als 14 Tagen gelöscht wurden, und diese Dateien dann endgültig vom Server löschen.

0 12 * * * if [ -d /data/public/.recycle ]; then find /data/public/.recycle -mindepth 1 -mtime +14 -exec rm -rf {} \;; fi

Wenn Sie den Papierkorb für alle Freigaben aktiviert haben, können Sie den folgenden Einzeiler verwenden. Dabei wird die Samba-Konfigurationsdatei ausgelesen und automatisch in den freigegebenen Verzeichnissen nach den Papierkörben gesucht.

0 12 * * * for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e 's/ //' -e 's/\%S/*/'); do if [ -d ${path}/.recycle ]; then find ${path}/.recycle -mindepth 1 -mtime +14 -exec rm -rf {} \;; fi; done


Dieser Eintrag wurde am 29.09.2011 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1419.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer