Disk Utility’s Repair Disk Permissions feature

Repair Disk Permissions Learn about Disk Utility’s Repair Disk Permissions feature. This document applies to Mac OS X 10.2, 10.3, and 10.4 or later.

Disk Utility lets you verify and repair disk and permissions issues. This document explains one of Disk Utility’s features for Mac OS X disks, Repair Disk Permissions.

How does Disk Utility check file permissions?

Many things you install in Mac OS X are installed from package files (whose filename extension is “.pkg”). Each time something is installed from a package file, a “Bill of Materials” file (whose filename extension is “.bom”) is stored in the package’s receipt file, which is kept in /Library/Receipts/. If you look in the Receipts folder, for example, you should see all kinds of files that end with .pkg, including some that were created when Mac OS X was installed (for example, BaseSystem.pkg). Don’t worry, these files don’t take up much disk space and you shouldn’t put them in the Trash.

Each of those “.bom” files contains a list of the files installed by that package, and the proper permissions for each file.

When you use Disk Utility to verify or repair disk permissions, it reviews each of the .bom files in /Library/Receipts/ and compares its list to the actual permissions on each file listed. If the permissions differ, Disk Utility reports the difference (and corrects them if you use the Repair feature).

Does Disk Utility check permissions on all files?

Files that aren’t installed as part of an Apple-originated installer package are not listed in a receipt and therefore are not checked. For example, if you install an application using a non-Apple installer application, or by copying it from a disk image, network volume, or other disk instead of installing it via Installer, a receipt file isn’t created. This is normal. Some applications are just designed to be installed like that.

Also, certain files whose permissions can be changed during normal usage without affecting their function are intentionally not checked.