Wörtlich übersetzt bedeutet der Begriff ``Capability'' Fähigkeit. Es existieren viele verschiedene Definitionen für den Begriff Capability im Zusammenhang mit Computersystemen. Während man allgemein ein Token, der von einem Prozess verwendet wird, um den Zugriff auf ein Objekt zur erhalten, als Capability bezeichnen kann, betrachten wir unter diesem Begriff die Capability, wie sie bei der Definition der POSIX-Capabilities beschrieben wurde.
Bei den POSIX-Capabilities handelt es sich um den Versuch, die Allmacht von root in unterschiedliche Privilegien aufzuteilen. In dem POSIX Draft 1003.1e sollten die Capabilities standardisiert werden. Leider hat sich dieser Draft nie durchgesetzt.
Jeder Prozess besitzt nun drei Bitmaps, in denen die Capabilities gespeichert werden:
Der Satz der erlaubten Capabilities definiert, welche Capabilities der Prozess aktiv nutzen darf. Ein Prozess kann eine Capability vorübergehend in dem Satz der effektiven Capabilities deaktivieren und später wieder aktivieren. Mehr Capabilities, als sich im Satz der erlaubten Capabilities befinden, kann er aber nicht benutzen.
Die vererbbaren Capabilities geben an, welche Capabilities der aktuelle Prozess auf neue Prozesse vererben kann. Dies bezieht sich lediglich auf Prozesse, die mit exec() aufgerufen werden. Prozesse, die mit fork() oder clone() gestartet werden, erhalten eine exakte Kopie der Capability-Sets des Elternprozesses.
Aktuell unterstützt Linux Capabilities nur für Prozesse. Die POSIX Capabilities forderten auch diese Funktion für ausführbare Dateien. Dies ist aktuell unter Linux nur mit einem Patch erreichbar (siehe 5.4).
Ralf Spenneberg 2007-11-13