last modified
18.04.2024
Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.
von Michael Luthardt
Linux Desktops benutzen ein virtuelles Filesystem (VFS), um die Funktionalität eines Papierkorbs (Müll, Trash) zur Verfügung zu stellen. Dateien und Verzeichnisse, die im grafischen Dateimanager "gelöscht" werden, verschiebt das VFS in einen anderen, versteckten Pfad. Im Gegensatz dazu ist Löschen auf der Konsole (rm) endgültig.
Papierkörbe kann es technisch sinnvoll nur innerhalb desselben1 lokalen Dateisystems geben. Ein Papierkorb für einen Wechseldatenträger oder Netzwerkordner muss also auf diesem selbst organisiert werden.
Für Samba läßt sich ein Papierkorb auf Freigabeebene schnell einrichten. Hier folgt ein Beispiel für passwortgeschützte persönliche Ordner auf einem Fileserver.
Die smb.conf wird für [homes]2 um das vfs-Objekt recycle erweitert:
[homes]
comment = persönlicher Ordner
valid users = %S, +super
force group = super
read only = No
create mask = 0640
force create mode = 0640
force security mode = 0640
directory mask = 0750
force directory mode = 0750
force directory security mode = 0750
veto files = /.*/
store dos attributes = Yes
browseable = No
root preexec = /usr/local/sbin/mktrash %S
vfs object = recycle
recycle:repository = /home/%S/.Trash
recycle:directory_mode = 0750
recycle:keeptree = Yes
recycle:touch = Yes
recycle:maxsize = 1000000
recycle:versions = Yes
recycle:noversions = *.ini | *.dat
recycle:exclude = *.TMP | *.tmp | ~$*.doc 3
recycle:exclude_dir = tmp | temp | cache
Der versteckte Ordner .Trash wird beim ersten Login über das preexec-Skript
#!/bin/bash
unterhalb des Benutzerordners angelegt. Dort ist er genauso Passwortgeschützt wie wie die [homes] Freigaben selbst.
# Trashordner anlegen, falls nicht existent
if [ ! -d /home/$1/.Trash ]; then
mkdir -m0750 /home/$1/.Trash
chown $1.super /home/$1/.Trash
fi
Mit der Samba Option veto files = /.*/ zeigt der Windows-Explorer selbst mit der Ansichtsoption "Alle Dateien und Ordner anzeigen" .Trash innerhalb des Heimatverzeichnisses nicht an (und Systemdateien wie .bashrc ebensowenig).
Eine Datei in Unterordnern wird zusamen mit ihrem Pfad nach .Trash verschoben (keeptree) und bekommt einen Zeitstempel4 (touch). Ordner werden komplett mit Inhalt verschoben.
Beim Löschen von Dateien gleichen Namens erfolgt im .Trash-Ordner eine Versionierung mit "Copy #n of" (versions).
Es ist sinnvoll, die Größe von Dateien für den Papierkorb zu beschränken (maxsize, in Bytes). Die übrigen Optionen erklären sich von selbst.
Wie bekommt der Windows-Benutzer nun gelöschte Dateien zurück? Ein Papierkorb-Symbol/Systemordner für die Server-Dateien kann es auf der Windows-Seite ja nicht geben.
Mit der folgenden Freigabe ist .Trash in der Netzwerkumgebung als login_Trash und damit direkt unter dem Heimatordner zu sehen. Die Zugriffsrechte sind die selben wie für die [homes]-Freigabe.
[%U_Trash]
# /home muss für other traversierbar sein!
comment = Papierkorb von %U
path = /home/%U/.Trash
browseable = Yes
valid users = %U
read only = No
Das Wiederherstellen gelöschter Dateien erfolgt mit normalem Drag&Drop von login_Trash nach login.
Die folgenden Screenshots zeigen die Funktion dieses Samba Papierkorbs von der Windows-Seite am Beispiel mluthardt:
EinOrdner wird gelöscht und
findet sich samt Inhalt in mluthardt_Trash.
Neuanlegen des Ordners EinOrdner und einer Datei Word-Dokument.doc und nochmaliges Löschen der Datei führt zur Versionierung.
Wieder Anlegen der Datei Word-Dokument.doc und nochmaliges Löschen des Ordners EinOrdner führt nicht zur Versionierung des Ordners, wohl aber zur weiteren Versionierung der Datei.
1 Obgleich es auf grafischen Oberflächen nur ein globales Papierkorbsymbol gibt, existiert für jedes lokale Laufwerk/Dateisystem eine Recycler/Trash-Datei auf diesem selbst.
2 Die hier wiedergegebenen Parameter für [homes] entsprechen dem Kontext meines Unterrichts-Fileservers. Die Zugriffsrechte-Optionen legen diese so wie eingestellt – auch von Windows aus unveränderbar (force security mode, force directory security mode) – definitiv fest. Von Windows aus läßt sich jedoch der DOS-Schreibschutz ein- und ausschalten (store dos attributes).
3 Dieser Ausschluss ist erforderlich, damit temporäre MS-Word Dateien nicht in den Papierkorb gelangen. Bei Bedarf weitere Muster (shell globbing) hinzufügen, Groß-/Kleinschreibung beliebig. Der Trennstrich ist durch Leerzeichen von den Mustern abgesetzt! Änderungen werden nur mit …/samba restart
übernommen.
4 Damit können die Papierkörbe mit einem Cronjob regelmäßig von Altlasten befreit werden:
find /home/*/.Trash/* -type f -mtime +30 -atime +30 -exec rm -f {} \;
Beide Befehle sollten dazu in angemessenem zeitlichen Abstand als tägliche Cronjobs laufen.
find /home/*/.Trash/* -depth -type d -mtime +30 -atime +30 -exec rmdir --ignore-fail-on-non-empty {} \;
08.07.2008/28.10.2013