Aus Linux-Magazin 06/2012

Das Userspace-Dateisystem Cmd-FS filtert Verzeichnisse und Files

© Diddi, photocase.com

Cmd-FS präsentiert eine vom Admin gezielt eingeschränkte Sicht auf ein Zielverzeichnis, beispielsweise nur die Multimedia- oder Office-Dateien auf einem Server. Auf Wunsch kann das einfache Tool aber auch andere Programme einbinden, etwa um on the Fly Daten zu konvertieren.

Die Aufgabe stellt sich bei vielen Gelegenheiten: Die Anwender sollen automatisch nur bestimmte Dateien eines Fileservers sehen, und der Rechner möge diese auch noch während des Zugriffs dynamisch verändern. Vielleicht will der Admin aus dem großen Fundus des Fileservers seinen Büromitarbeitern nur die Officedokumente, den Grafikern nur die Bilddateien präsentieren.

Zu Hause soll die Mediastation nur Multimediadaten lesen, die hochauflösenden Bilder der Digikam möge der Server kleinrendern, damit auch die meist in der Auflösung eingeschränkten Wiedergabegeräte damit zurechtkommen. Und Datenforensiker wollen bei jedem Untersuchungsschritt am liebsten nur die relevanten Dateien inspizieren.

All das verspricht das Fuse-Dateisystem Cmd-FS [1] zu leisten, ohne den Admin mit dem langwierigen und fehlerträchtigen Aufbau komplexer Verzeichnis- und Verknüpfungsstrukturen zu belasten. Zwar stammt die letzte Release von Cmd-FS bereits aus dem Jahr 2010, die Software tut aber brav ihren Dienst, wenn auch mit kleinen Macken.

Installation

Da es Cmd-FS bisher nicht in Debian- oder Ubuntu-Repositories geschafft hat, ist bei der Installation erst einmal Handarbeit am Quelltextarchiv angesagt. Wer das vermeiden und einfach mal mit der Software spielen will, schnappt sich die DELUG-DVD und startet das Ubuntu-12.04-Image, in dem die Autoren Cmd-FS installiert haben. Alle Beispiele aus dem Artikel funktionieren in dieser Installation auch, nur für die eigenen Beispieldateien muss der Anwender selbst sorgen und gegebenenfalls Pfade anpassen.

DELUG-DVD

Auf der DELUG-DVD dieses Magazins findet sich (neben dem Quelltextarchiv von Cmd-FS) eine virtuelle Maschine, die auf der zweiten Beta von Ubuntu 12.04 basiert. Dort haben die Autoren Cmd-FS installiert und ein Verzeichnis »/Data« mit mehreren (leeren) Dateien mit der Namenserweiterung ».jpg« angelegt. Mit den Befehlen aus dem Artikel lassen sich die Filterfunktionen des Fuse-Dateisystems testen. Testdateien mit Bildern bieten Webseiten wie [5].

Dreisatz

Auf dem eigenen System steht ansonsten der übliche Weg an. Für eine erfolgreich verlaufende Übersetzung des Quelltextarchivs bedarf es des Fuse-Entwicklerpakets – leider weist das ».configure« -Skript nicht darauf hin, wenn das Paket fehlt. Aber ein simples »aptitude install libfuse-dev« holt es auf den Rechner, die üblichen Schritte Herunterladen, Entpacken, ».configure« , »make« und »make install« erledigen den Rest.

Wer die installierten Programme lieber unter der Kontrolle des Paketmanagements wissen möchte, verwendet statt »make install« den Aufruf »checkinstall« [2]. Mehr Informationen über das Fuse-System (Filesystem in Userspace) bietet die Webseite des Projekts [3].

Ab sofort kann jeder User – der bei manchen Distributionen auch der Gruppe »fuse« angehören muss – mit einer an den Mount-Befehl angelehnten Syntax andere Ansichten auf Dateien oder Verzeichnisse erzeugen. Cmd-FS stellt dabei eine Verzeichnisstruktur read-only bereit, die der Anwender oder der Admin beim Mounten mit Parametern an seine Bedürfnisse anpasst.

Dateifilter

Im ersten Beispiel soll Cmd-FS nur Dateien eines Typs anzeigen. Leere Verzeichnisse, also solche, in denen keine Datei des gewählten Typs liegt, soll es ausblenden. Für ».jpg« -Dateien also:

cmdfs /Data ~/test -o extension=jpg,hide-empty-dirs

Die Groß- und Kleinschreibung spielt bei der Datei-Erweiterung keine Rolle. Kommen mehrere Datei-Endungen in Betracht, lassen sie sich per Semikolon getrennt und in Gänsefüßchen gesetzt angeben:

cmdfs ~/Data ~/test -o extension="JPG;PNG",hide-empty-dirs

»hide-empty-dirs« sorgt dafür, dass Cmd-FS Verzeichnisse, die die Filterbedingungen nicht erfüllen, ausblendet.

Das Filtern allein nach der Datei-Endung hat allerdings Nachteile: Dateien ohne oder mit fehlerhafter Endung erfasst es nicht, und wer einfach alle Bildformate sehen will, braucht eine sehr lange Filterliste. Die wäre unübersichtlich und mit Sicherheit unvollständig. Da eignen sich Mime-Typen besser (Abbildung 1):

Abbildung 1: Links das Quellverzeichnis, rechts das mit Cmd-FS gemountete Verzeichnis. Es zeigt dem Anwender ausschließlich Verzeichnisse, die Dateien des Mime-Typs »image« enthalten.

Abbildung 1: Links das Quellverzeichnis, rechts das mit Cmd-FS gemountete Verzeichnis. Es zeigt dem Anwender ausschließlich Verzeichnisse, die Dateien des Mime-Typs »image« enthalten.

cmdfs ~/Data ~/test -o mime-re=image/*,hide-empty-dirs

Bei der Suche nach dem passenden Mime-Typ zu einer bestimmten Datei ist der Befehl »file« mit dem Parameter »–mime-type« hilfreich:

file --mime-type EinLibreOfficeText.odt
EinLibreOfficeText.odt: application/vnd.oasis.opendocument.text

Das bloße Filtern von Daten ist jedoch nicht alles, was Cmd-FS zu bieten hat. Über externe Programme kann der Admin seinen Usern auch eine ganz andere Sicht auf die Dateien geben.

Files on the Fly bearbeiten

Imagemagick [4] ist eine umfangreiche Sammlung, die nicht nur digitale Bildspezialisten zu schätzen wissen. Bilder an der Kommandozeile auf maximal 800 Pixel Breite verkleinern oder in Sepia einfärben – für derartige Vorhaben sind Konvertierungstools wie das in der Programmsammlung enthaltene »convert« geeignet.

Weil die Tools die Daten von der Standardeingabe entgegennehmen und in die Standardausgabe schreiben können, lassen sie sich auch nahtlos mit Cmd-FS integrieren, um beispielsweise alle JPGs automatisch zu PNG-Dateien zu konvertieren. Dass damit Stolpersteine entstehen, versteht sich, würden doch so umgewandelte PNG-Dateien auch weiterhin die Erweiterung ».jpg« behalten, womit viele Anwenderprogramme nicht zurechtkommen.

Weil Convert aber auch einfache Größenänderungen und vieles mehr beherrscht, bietet es sich für einige Beispiele an. Der folgende Aufruf gibt im Einhängepunkt alle Bilddateien mit einer maximalen Höhe und Breite von 800 Pixeln aus. Kleinere Bilder behalten ihre Originalgröße, dafür sorgt das »convert« -Flag »>« , das in der Eingabe für Cmd-FS maskiert sein muss:

cmdfs ~/Data ~/test "-omime-re=image/*,hide-empty-dirs,command=convert - -resize 800x800\'^>' -"

Hat alles geklappt, ist auch eine On-the-Fly-Umwandlung in Sepiafarben kein Problem:

cmdfs ~/Data ~/test "-omime-re=image/*,hide-empty-dirs,command=convert - -sepia-tone 90% -"

Beim Umgang mit Programmen ist jedoch Vorsicht geboten: Cmd-FS nutzt fürs flüssigere Arbeiten einen Cache.

Cache und Optionen

Auf Debian-Systemen liegt dieser Cache unter »/usr/local/var/cache/cmdfs/Benutzername« , er lässt sich jedoch über den Parameter »-o cache-dir« beeinflussen. In Testphasen bietet es sich an, das Cacheverzeichnis regelmäßig manuell zu leeren. Das ist notwendig, da Cmd-FS bereits im Cache befindliche Dateien nur dann neu erzeugt, wenn sich deren Modifikations-Zeitstempel ändert.

Zwar darf der Anwender beim Mount mit »-o cache-expiry« einen Verfallszeitraum anzugeben, dies führt jedoch zu Lastspitzen auf dem System. Denn beim Zugriff auf den Mountpoint erzeugt Cmd-FS alle Dateien im Cache neu, falls der angegebene Zeitraum vorüber ist. Der Parameter »-o« bietet über das Management des Cache hinaus einige interessante Optionen. Die wichtigen davon listet Tabelle 1 beispielhaft auf.

Mit Dynamik

Alle bisher genannten Beispiele waren statischer Natur, wobei Cmd-FS neue Dateien und Verzeichnisse an der Quelle nicht berücksichtigt. Wer jedoch die Option »-o« um den Parameter »monitor« ergänzt, beauftragt Cmd-FS damit, die Quellen zu überwachen. Dafür bedient sich Cmd-FS des Inotify-Mechanismus aus dem Linux-Kernel [5].

Stellt der Änderungen fest, lassen sich automatische Aktionen auslösen. Beispielsweise kann der Admin den Anwender informieren lassen, wenn sich Dateien im Quellverzeichnis ändern. Oder er startet automatisch eine Texterkennung bei neu eingescannten Dokumenten. Wer den Mechanismus in eigenen Skripten nutzen will, braucht die Inotify-Tools [6] aus den gängigen Repositories.

Für dauerhaften Gebrauch ist das Einbinden über »/etc/fstab« nötig. Das Sepia-Beispiel oben fügt der Admin mit dem Eintrag aus Listing 1 hinzu, Leerzeichen in der Kommandozeile muss er dabei mit »\040« ersetzen, damit der Eintrag zu einem korrekten Mount führt.

Listing 1

/etc/fstab

01 [...]
02 cmdfs#/Data /home/Benutzername/test fuse user,mime-re=image/*,hide-empty-dirs,command=convert\040-\040-sepia-tone\04090%\040- 0 0

Seltsame Probleme

Im Test ergaben sich nur dann Probleme, wenn zu mountendes Verzeichnis und Mountpoint beide im selben Directory lagen, zum Beispiel »~/Dokumente« und »~/test« . Dann schien Cmd-FS, allerdings nur auf manchen Distributionen (zum Beispiel bei dem Ubuntu auf der DELUG-DVD), beim Zugriff auf den Mountpunkt – etwa mit »ls -l« – in einer Endlosschleife zu verharren.

Die Rücksprache mit den Entwicklern und deren anschließende Fehlersuche lieferten kurz vor Redaktionsschluss keine Erklärung für dieses Verhalten. Als eine mögliche Ursache kommen jedoch die falschen Berechtigungen am Cacheverzeichnis in Betracht. Entsprechende Fehler meldet zumindest das Syslog.

Testdaten holen

Wer nicht seine eigenen Dateien als Testobjekte verwenden mag oder sich nicht auf das Erstellen eigener Datenbestände einlassen will, lädt sich aus dem Web Beispieldateien. Eine sehr umfangreiche Sammlung an Testdaten von Handys bis hin zu 35 GByte mit Bildern gibt es beispielsweise bei Digitalcorpora [7].

Infos

  1. Cmd-FS: http://sourceforge.net/projects/cmdfs/
  2. O. Frommel, K. Kißling, P. Kreußel, C. Schnober, “Alles rausquetschen”: Linux-Magazin 02/06, S. 57
  3. Fuse, Filesystem in Userspace:http://fuse.sourceforge.net
  4. Bernhard Bablok, “Zauberlehrling”: Linux-Magazin 08/08, S. 52
  5. Inotify: http://linux.die.net/man/7/inotify
  6. Inotify-Tools: https://github.com/rvoicilas/inotify-tools/wiki/
  7. Testdaten von Digitalcorpora: http://digitalcorpora.org

Der Autor

Dennis Schreiber ist Computerforensiker in der Finanzverwaltung Thüringens. Bei seiner Tätigkeit verwendet er zur Datensicherung und ihrer Auswertung vorzugsweise Linux. Wenn er nicht gerade am Computer sitzt, verbringt er seine Zeit mit Familie und Freunden und auf dem Motorrad.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben