DS_Store-Dateien finden und lesen

Im macOS-Finder kann man sie nicht sehen, aber im Terminal mögen Euch schon die (versteckten) .DS_Store-Dateien aufgefallen sein. Es handelt sich dabei um Dateien, in denen Metadaten mit Informationen über den Inhalt eines Verzeichnisses gespeichert werden, d.h. es finden sich hier u.a. die Namen aller Dateien und Verzeichnisses des betreffenden Ordners.

Diese Informationen stellen kein Problem dar, solange sie auf dem eigenen System verbleiben. Allerdings gelangen sie häufig (unbeabsichtigt) nach außen. Als Beispiele wären hier der Upload in ein Git-Repository oder der Upload auf einen Webserver zu nennen. Derjenige, der hierdurch in den Besitz der .DS_Store-Datei gelangt, kann so etwas über die Verzeichnisstruktur oder über andere versteckte Dateien in Erfahrung bringen.

Ob sich auf Eurem Webserver ebenfalls .DS_Store-Dateien befinden, könnt Ihr auf einfache Art und Weise in der Shell mit dem find-Befehl in Erfahrung bringen, wobei hier davon ausgegangen wird, dass sich die Webserver-Dateien im Verzeichnis „/var/www“ befinden:

$ cd /var/www
$ find . -type f -iname "*.DS_Store*"

Sollte Eure Suche erfolgreich sein, löscht diese Dateien. Außerdem kann und sollte man in der „httpd.conf“ des Apache-Serves mit folgendem Eintrag den Zugriff auf .DS_Store-Dateien unterbinden:

<Files ~ "\.DS_Store$">
    Order allow,deny
    Deny from all
</Files>

Auf einem Nginx-Server verwendet Ihr folgende Anweisung:

location ~ \.DS_Store$ {
      deny all;
}

Zum Schluss noch der Hinweis, dass es ein — bei Github gehostetes — Python-Programm gibt, mit dem eine .DS_Store-Datei gelesen werden kann. Es wurde von @gehaxelt entwickelt und steht jedem Interessierten kostenlos zur Verfügung (MIT-Lizenz). Der Entwickler hat außerdem einen sehr guten Artikel geschrieben, in dem er ausführlich auf das Dateiformat von .DS_Store-Dateien eingeht.