Mac-OS X

Die wundersame Welt der Zugriffsrechte

06.04.2009 von Walter Mehl
Das Festplatten-Dienstprogramm kann Zugriffsrechte überprüfen und reparieren. Am Wert dieser Funktion kann man aber zweifeln – vor allem, weil die Fehlermeldungen häufig mehr verwirren als aufklären.

Mac-OS X basiert auf dem Betriebssystem Unix und dort gibt es das Konzept "Zugriffsrechte". Ursprünglich gab es in diesem Konzept nur drei Rechte: Das Recht, eine Datei zu lesen, eine Datei zu verändern und eine Datei auszuführen; sprich: den Inhalt der Datei in den Arbeitsspeicher zu laden und den Prozessor des Rechners anzuweisen, den Inhalt der Datei als Befehle zu lesen und auszuführen.

Unterschiedliche Zugriffsrechte

Damit lässt sich die erste von drei möglichen Fehlermeldungen erklären: Das Festplatten-Dienstprogramm vergleicht die Zugriffsrechte für eine Datei (oder einen Ordner), mit den entsprechenden Einträgen in der Datenbank von Mac-OS X 10.5. Geprüft werden dabei jedoch ausschließlich Dateien und Ordner in den Verzeichnissen "System", "Library" und "Programme". Stimmen die Zugriffsrechte nicht überein, sieht man beispielsweise den Hinweis: "Die Zugriffsrechte unterscheiden sich für

"/private/var/log/asl.db, Soll-Wert: -rw---, Ist-Wert: -rw-r---." In der Regel kann man diese und ähnliche Hinweise ignorieren. Sie sind meistens eine Folge der Nachlässigkeit der Apple-Programmierer, die die Zugriffsrechte für eine Datei neu definiert haben, aber diese Neudefinition nicht in der Datenbank gespeichert haben.

TIPP

Wer bei der Beurteilung einer solchen Fehlermeldung unsicher ist, kopiert den Dateinamen und sucht diesen Namen beispielsweise bei Google oder einer anderen Suchhilfe. Wenn die Änderung an der Datei gefährlich ist, sollten sich schnell entsprechende Hinweise im Internet finden lassen.

SUID-Dateien ändern

Eine Nebenwirkung der Übersetzung aus dem Englischen ist die Fehlermeldung "Die SUID-Datei wurde geändert und wird nicht repariert." Korrekt, aber ebenso unverständlich wäre: "Das Bit ‚Äöset-user-ID`" wurde geändert und nicht korrgiert." Dahinter verbirgt sich ein Spezialmechanismus, den es seit den Anfangszeiten von Unix gibt: Das Merkmal "set-user-ID" nutzt man, um eine Software im Namen eines anderen Benutzers zu starten. Denn beim Start einer Software erhält diese in der Regel die Rechte, die derjenige hat, der sie startet. In Ausnahmefällen aber benötigt eine Software zusätzliche Rechte; zum Beispiel, wenn das Programm DVD-Player den Regionalcode des DVD-Laufwerks ändern muss, was aber nur dem Benutzer "root" erlaubt ist (der unter Mac-OS X vorhanden, aber in der Regel deaktiviert ist). Deshalb ist bei dem Hilfsprogramm setregion dieses Bit aktiviert und als Eigentümer des Hilfsprogramms "root" eingetragen – jeder Benutzer kann das Hilfsprogramm starten, erhält dann aber dafür die Zugriffsrechte des Benutzers "root".

TIPP

Die Fehlermeldung mit dem Hinweis auf das Bit "set-user-ID" kann man in der Regel ebenfalls ignorieren – wer Zweifel hat, ob sich nicht doch ein Eindringling an der Rechtevergabe zu schaffen gemacht hat, sollte wie im vorigen Absatz erwähnt, den Namen der Datei im Internet suchen.

Die Datenbank der Rechte

Mac-OS X 10.5 speichert die Zugriffsrechte für wichtige Dateien in einer Datenbank.

Wenn Mac-OS X die Zugriffsrechte prüft oder repariert (besser: "auf den erwünschten Stand bringt"), greift das Festplatten-Dienstprogramm auf eine Liste zurück, in der die Zugriffsrechte für jede Datei verzeichnet sind. Bis Version 10.5 des Betriebssystems nutzt das Dienstprogramm dazu eine Liste, die aus "Quittungsdateien" im Ordner "/Library/Receipts" zusammengestellt wird. Seit Mac-OS X 10.5 ist der Mechanismus anders: Bei der Installation einer Software notiert das Installationsprogramm die Namen aller Dateien und speichert sie zusammen mit den Zugriffsrechten in einer Datenbank.

Diese Datenbank (im Format "sqlite3") liegt im Ordner "/Library/Receipts/db/"; der Dateiname ist "a.receiptdb". Wenn man das Festplatten-Dienstprogramm unter Mac-OS X 10.5 startet, sieht man deshalb immer zuerst den Hinweis "Zugriffsrechte-Datenbank lesen".

Zugriffssteuerungsliste

Bei einer Stichprobe mit Mac-OS X 10.5.6 (Anfang März 2009) enthält die Datenbank etwas mehr als 200 000 Dateinamen (ausschließlich aus den Ordnern "System", "Library" und "Programme"). Für jede dieser Dateien werden die Zugriffsrechte (Lesen, Schreiben, Ausführen) sowie Eigentümer und Gruppenzugehörigkeit vermerkt. Außerdem enthält die Datenbank Sondereinträge für Dateien, bei denen das Bit "Set-user-ID" gesetzt ist (siehe Text auf der gegenüberliegenden Seite) und bei denen spezielle Zugriffsrechte eingetragen sind – die Zugriffsteuerungsliste (Englisch: "access control list", kurz: ACL). Mit ACL lassen sich die Rechte präziser definieren; beispielsweise kann man einem Benutzer erlauben, eine Datei zu lesen und zu verändern, aber nicht gestatten, sie zu löschen.

Die Zugriffssteuerungslisten

Eine "Zugriffssteuerungsliste" (Englisch: "access control list", kurz: "ACL") gibt es in Mac-OS X erst seit Version 10.4 – vollständig genutzt wird diese Technik sogar erst seit Version 10.5. Apple schützt damit beispielsweise die Benutzerordner, sprich: die Unterordner von "Benutzer". Legt man unter Mac-OS X 10.5 einen Benutzerordner an, erhält dieser Ordner automatisch den Zusatz "group:everyone deny delete". Übersetzt: Wer nicht Eigentümer dieses Ordners ist, darf ihn nicht löschen. Das bedeutet, dass selbst der Benutzer "root" einen Benutzerordner nicht löschen kann, solange dieser Eintrag in der Zugriffssteuerungsliste existiert (Hinweis für Profis: der Benutzer "root" kann diesen ACL-Eintrag selbstverständlich entfernen und dann den Ordner löschen).

Im Finder sind die Zugriffssteuerungslisten nicht sichtbar; wer sich mit der Materie beschäftigen will, muss mit dem Dienstprogramm Terminal arbeiten. Der folgende Befehl macht die Listen sichtbar (entscheidend ist der Buchstabe "e" am Ende)

ls . -lae

drwx---@ . 18 . dau . dau . 612 . 6 . Nov. 17:31 . Pictures

0: . group:everyone . deny . delete

Die zweite Zeile ist der Eintrag für den Ordner "Bilder" (Englisch: "Pictures"); die Zeile darunter ist die erwähnte Zugriffssteuerungsliste, mit der Mac-OS X verhindert, dass dieser Ordner von jemand anderem außer dem Eigentümer gelöscht wird.

TIPP

Wie die zuvor erwähnten Fehlermeldungen sieht man den Hinweis auf Fehler in den Zugriffsteuerungslisten in der Regel nur dann, wenn die Entwickler von Apple nachlässig waren oder man selbst die Zugriffsrechte an dieser Datei oder diesem Ordner verändert hat. Bei Zweifeln empfehlen wir eine Internet-Suche mit dem Dateinamen, der in der Fehlermeldung des Festplatten-Dienstprogramms genannt wird.

Fazit

Apple hat also Recht: Die meisten Fehlermeldungen des Festplatten-Dienstprogramms kann man ignorieren. Warum das so ist, versteht man allerdings erst, wenn man sich intensiv mit dem Thema Zugriffsrechte auseinandergesetzt hat.