Mac-OS X

Die wundersame Welt der Zugriffsrechte

06.04.2009
Von Walter Mehl

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.

Zur Startseite