Oft ist in Foren der Tipp zu lesen, bei Problemen die Zugriffsrechte1) zu reparieren. Aber was passiert dabei eigentlich? Werden wirklich alle Zugriffsrechte überprüft und repariert? Kurz und knapp: Nein!2)
Zusammenfassung: Bei der automatischen Reparatur der Zugriffsrechte werden nur Dateien berücksichtigt, welche als PKG installiert wurden und in der Liste der Standard Pakete aufgeführt werden, welche durch das Kommando »/usr/libexec/repair_packages --list-standard-pkgs« aufgerufen werden kann!
Erklärungen: In Wirklichkeit werden die Zugriffsrechte auch gar nicht repariert, sondern vielmehr anhand einer Datenbank auf die Vorgaben bei der Installation zurückgesetzt. Bei der Installation von Software im PKG-Format werden vom System (≥10.6) XML Dateien in plist Form und BOM Dateien (Bill-Of-Materials) im Verzeichnis /var/db/receipts abgelegt, welche bei der Reparatur der Zugriffsrechte herangezogen werden. Des Weiteren wird in /Library/Receipts die Datei InstallHistory.plist gepflegt. Sie wird vom Installer ausgewertet, um die Versionen der installierten Pakete zu ermitteln.
Unter Leopard (10.5) finden sich im Verzeichnis /Library/Receipts die Third Party Installer PKGs. Die PKGs in /Library/Receipts sind jedoch keine vollwertigen Pakete mehr, sie enthalten im Kern der Sache nur noch eine ./Contents/Archive.bom, welche wiederum die Zugriffsrechte der installierten Komponenten enthält und in ./Contents/Resources evtl. noch die Skripts, welche während der Installation ausgeführt wurden. Des Weiteren befinden sich im Verzeichnis /Library/Receipts/boms die BOM Dateien einiger installierten Pakete, hauptsächlich vom Apple Installer.
Zum Reparieren der Zugriffsrechte kann das »Festplatten Dienstprogramm« verwendet werden. Dieses greift aber auf das im Terminal ebenfalls verfügbare Programm repair_packages zurück. Eine im »Festplatten Dienstprogramm« angestoßene Überprüfung der Zugriffsrechte auf das Start-Volume zeigt sich in der Prozessliste wie folgt:
$ ps -eaf | grep repair_packages 0 1229 1198 0 0:00.89 ?? 0:02.15 /usr/libexec/repair_packages --output-format 1 --verify --standard-pkgs --volume /
Eine vollständige Liste der von der Überprüfung eingeschlossener Pakete erhält man durch den Befehl:
$ /usr/libexec/repair_packages --list-standard-pkgs
(≥ 10.6): Damit ein Paket in dieser Liste erscheint, muss die og BOM-Datei entweder in /var/db/receipts oder die ./Contents/Archive.bom im Paket in /Library/Receipts vorhanden sein. Des Weiteren muss in der Plist im Array PackageGroups der Eintrag vorhanden sein. Wenn Sie sich die Liste anzeigen lassen, werden Sie feststellen, wie wenig Pakete da aufgeführt werden. Das ist lange nicht jede installierte Software auf Ihrem System, wobei vor allem Pakete wie zB com.apple.pkg.BaseSystem schon eine ganze Latte an Komponenten berücksichtigt.
Das Kommandozeilen Utiliy »lsbom« ist ein BOM File Parser, mit dem man sich die (Standard-) Berechtigungen der installierten Pakete anzeigen lassen kann. So zeigt Ihnen zB das folgende Kommando die Komponenten des og Pakets com.apple.pkg.BaseSystem an:
$ lsbom -p MUGsf /var/db/receipts/com.apple.pkg.BaseSystem.bom
(Parametersatz (-p) MUGsf: M → symbolische Anzeige (zB: drwxr-xr-x); U → User Name; G → Group Name; s → Dateigröße; f → Datei Name)
Um eine Überprüfung der Standard-Pakete anzustoßen, führen Sie folgenden Befehl aus:
$ sudo /usr/libexec/repair_packages --output-format 0 --verify --standard-pkgs --volume /
Um die Reparatur durchzuführen dann folgenden Befehl:
$ sudo /usr/libexec/repair_packages --output-format 0 --repair --standard-pkgs --volume /
Des Weiteren steht noch das diskutil-Kommando im Terminal zur Verfügung. Mit den Parametern verifyPermissions und repairPermissions tut es genau das Selbe wie das og Kommando. Der Unterschied zwischen den beiden Kommandos besteht lediglich darin, dass diskutil nicht im Single-User Modus verwendet werden kann, da das Framework DiskArbitration im Single-User Modus noch nicht zur Verfügung steht.
$ sudo diskutil verifyPermissions /
[ - 0%..10%..20%................ ]
Für weitere Informationen bzgl. der Verwendung des diskutil-Kommandos lesen Sie bitte: -> diskutil repair/verifyPermissions
Verwandte Artikel:
-> diskutil repair/verifyPermissions
-> Diskussion im Apple Forum
— pronto 2010/05/29 20:02