Mikrozensus

Selten geht es auf der Festplatte so aufgeräumt zu wie auf dem Schreibtisch. Zwar findet find jede Datei wieder, und locate erlaubt eine schnelle Suche. Allerdings gibt es Werkzeuge, die die Aufgabe noch besser erledigen.

In Pocket speichern vorlesen Druckansicht 15 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Michael Riepe

Wegen seiner Schnelligkeit geben viele Nutzer dem datenbankgestützten locate den Vorzug vor find, wenn es darum geht, verlegte Dateien wiederzufinden. Allerdings hilft das Programm nur weiter, wenn die gesuchte Datei schon etwas älter ist: Viele Systeme aktualisieren die Datenbank nur einmal täglich.

Außerdem betrachten manche Administratoren locate zu Recht als Sicherheitsrisiko: Läuft der Datenbank-Generator updatedb mit den Rechten des Superusers, kann der Anwender alle Dateinamen sehen - selbst wenn sie in Verzeichnissen liegen, zu denen er keinen Zugang hat. Als Gegenmaßnahme hat es sich eingebürgert, updatedb unter der Nutzerkennung nobody zu starten.

Hat ein sicherheitsbewusster Anwender mit chmod go-r $HOME allen anderen Nutzern das Recht entzogen, in sein Home-Verzeichnis zu sehen, kann updatedb ohne Root-Rechte die darin liegenden Dateien nicht mehr indizieren. Da sich locate ausschließlich auf die erstellte Datenbank verlässt, tauchen sie bei keiner Anfrage mehr auf.

Mehr Infos

Fundorte im Web

Ist die Gnu-Version von locate aus dem Paket findutils installiert, kann der Nutzer mit updatedb - -localpaths=$HOME - -output=$HOME/.locatedb einen privaten Index erstellen. Ruft er locate mit der Option -d /var/lib/locatedb:$HOME/.locatedb auf, durchsucht das Programm die systemweite (hier /var/lib/locatedb) und seine private Datenbank. Wer die zusätzliche Tipparbeit scheut, kann mit export LOCATE_PATH=<pfad> den Suchpfad dauerhaft setzen.

Mehr Sicherheit hat sich das Programm slocate auf die Fahnen geschrieben. Zwar verwendet das „Secure Locate“ ebenfalls einen vollständigen, mit Superuser-Rechten erstellten Index. Es zeigt jedoch nur diejenigen Dateien an, die der aufrufende Nutzer sehen kann. Damit niemand mit einem modifizierten Programm die Beschränkung umgehen kann, speichert slocate seine Datenbank in einem gesperrten Verzeichnis, etwa /var/lib/slocate.

Mit slocate -u kann der Administrator die systemweite Datenbank erstellen. Ein symbolischer Link namens updatedb erfüllt den gleichen Zweck. Allerdings verwendet das Programm andere Optionen als die verbreitete Gnu-Version: Temporäre Verzeichnisse etwa hält -e /tmp,/var/tmp aus der Datenbank heraus. Die Option -f nfs,proc weist das Programm an, NFS-Volumes und das virtuelle Dateisystem /proc zu ignorieren.

Nutzer können mit slocate -U <verzeichnis> -o <indexdatei> einen eigenen Index erstellen. Er lässt sich wie bei Gnu-locate mit LOCATE_PATH oder der Option -d in den Suchpfad einfügen. Der Zusatz -l 0 beim Erstellen des Index lässt slocate später schneller suchen: Er schaltet die aufwendige - und bei privaten Datenbanken in der Regel überflüssige - Prüfung der Zugriffsrechte aus.

Einen vollständigen Index zu erstellen dauert einige Zeit - auf großen Systemen etliche Minuten. Der Update-Prozess strapaziert die Festplatten und beansprucht einen Teil des Cache für sich, benötigt jedoch nur wenig Rechenleistung. Auf einem typischen Unix-System genießt er deshalb hohe Priorität - sogar wenn der Administrator ihn mit nice -20 auf der niedrigsten Prioritätsstufe startet. Eine Aktualisierung der Datenbank stört vor allem Nutzer, die mit interaktiven Programmen arbeiten - heutzutage die Mehrheit der Anwender. Ein Lauf pro Tag - besser pro Nacht - gilt als vertretbarer Kompromiss.

Eine höhere Aktualität der Datenbank kann das Programm mlocate bieten: Das Update-Programm des „Merging Locate“, das wie gewohnt auf den Namen updatedb hört, durchsucht nur die Teile des Dateisystems, die sich seit dem letzten Update geändert haben. Aus den Ergebnissen und dem Inhalt der existierenden Datenbank rührt es eine neue zusammen.

Da in der Regel nur in wenigen Verzeichnissen ein Rescan nötig ist, lässt sich der Index erheblich schneller aktualisieren als bei slocate oder locate - und gegebenenfalls öfter. Der Preis, den die Nutzer dafür zu zahlen haben, ist eine etwas größere Datenbank. Wer das Secure Locate gewohnt ist, muss nicht umlernen: mlocate versteht die Syntax von slocate sowie die meisten Gnu-Optionen.

Linux-Anwendern liefert rlocate immer aktuelle Ergebnisse. Das ebenfalls slocate nachempfundene Programm arbeitet mit einem Server-Prozess namens rlocated zusammen. Der klinkt sich per Kernel-Modul in die Sicherheitsarchitektur LSM (Linux Security Modules) ein und protokolliert alle Zugriffe. Allerdings kooperiert das Programm nicht mit allen Security-Modulen: SELinux etwa muss der Administrator deaktivieren, wenn er rlocate nutzen will. (mr)