Welche Capabilities existieren?
Insgesamt existieren Capabilities. Diese werden im folgenden in
ihrer alphabetischen Reihenfolge aufgeführt. Dabei wird bei jeder
Capability die Nummer des Bits im Capability-Set genannt.
- CAP_CHOWN (0): Diese Capability erlaubt die
Änderung des Eigentümers und der Gruppe von Dateien. Hierbei können
beliebige neue Eigentümer und Gruppen gewählt werden. Normalerweise
darf lediglich der Eigentümer die Gruppe modifizieren und dabei eine
Gruppe wählen, deren Mitglied er ist.
- CAP_DAC_OVERRIDE (1): Diese Capability erlaubt
den Zugriff auf Dateien, ohne die hierzu notwendigen Rechte zu
besitzen. Die einzige Ausnahme ist das Setzen der Immutable
Attribute (siehe CAP_LINUX_IMMUTABLE).
- CAP_DAC_READ_SEARCH (2): Dies erlaubt das Lesen
und Durchsuchen von Verzeichnissen, ohne die erforderlichen Rechte
zu besitzen. Auch hier ist die einzige Ausnahme der Zugriff, der
durch CAP_LINUX_IMMUTABLE definiert wird.
- CAP_FOWNER (3): Mit dieser Capability dürfen Sie
auf beliebigen Dateien die Änderungen durchführen, die normalerweise
nur der Eigentümer durchführen darf. Gemeinsam mit der Capability
CAP_CHOWN dürfen Sie bei beliebigen Dateien beliebige
Besitzer und Gruppen eintragen.
- CAP_FSETID (4): Diese Capability erlaubt Ihnen
die SetUID- und SetGID-Rechte auf Dateien zu setzen, die nicht Ihnen gehören.
- CAP_FSETID (5): Diese Capability entscheidet, ob
die Funktion suser() oder fsuser() bei der Bestimmung
der Identität genutzt wird. Jede dateisystemnahe Operation muss den
fsuser()-Aufruf verwenden.
- CAP_KILL (5): Diese Capability erlaubt das Senden
von Signalen an Prozesse, deren Eigentümer Sie nicht sind.
- CAP_SETGID (6): Diese Capability erlaubt das
Setzen der effektiven Gruppe des aktuellen Prozesses.
- CAP_SETUID (7): Diese Capability erlaubt das
Setzen des effektiven Benutzers des aktuellen Prozesses.
- CAP_SETPCAP (8): Mit dieser Capability können Sie
die Capabilities aus ihrem erlaubten Satz bei jedem Prozess
entfernen oder hinzufügen.
- CAP_LINUX_IMMUTABLE (9): Diese Capability
erlaubt das Setzen und Entfernen der Attribute
immutable und append bei Dateien auf
einem Ext2/Ext3-Dateisystem mit dem Befehl chattr. Dies
funktioniert auch bei XFS-Dateisystemen.
- CAP_NET_BIND_SERVICE (10): Diese Capability
erlaubt die Verwendung von TCP und UDP Sockets
.
- CAP_NET_BROADCAST (11): Mit dieser Capability
darf ein Prozess Broadcast-Pakete verschicken und Multicast-Adressen registrieren.
- CAP_NET_ADMIN (12): Dies ist eine der
mächtigsten Capabilities. Sie umfasst die folgenden Fähigkeiten:
- Konfiguration der Netzwerkkarten
- Administration der Firewallregeln
- Setzen der Debug-Option für Sockets
- Administration der Routing Tabellen
- Ändern der Eigentümer der Sockets
- Verwendung beliebiger IP-Adressen für transparente Proxies
- Setzen der TOS-Bits
- Aktivieren des Promiscuous-Modus einer Netzwerkkarte für das Sniffing
- Löschen der Treiberstatistiken
- Senden von Multicast-Paketen
- Lesen und Schreiben der Register von Netzwerkkarten
- CAP_NET_RAW (13): Diese Capability erlaubt die
Verwendung von RAW und PACKET Sockets. Der Befehl ping benötigt zum Beispiel diese Capability zum Versenden von ICMP-Paketen.
- CAP_IPC_LOCK (14): Diese Capability erlaubt das
Locking von Shared Memory Segmenten. Außerdem dürfen die Aufrufe
mlock und mlockall verwendet werden.
- CAP_IPC_ONWER (15): Dies erlaubt den Zugriff auf
Message Queues, deren Besitzer der Prozess nicht ist.
- CAP_SYS_MODULE (16): Diese Capability erlaubt
die beliebige Modifikation des Kernels einschließlich dem Laden und
Entfernen von Kernel-Modulen und der Modifikation des
Capability-Bounding-Sets (siehe 5.3).
- CAP_SYS_RAWIO (17): Dies erlaubt direkten
Zugriff auf Hardware mit ioperm() und iopl(). Außerdem
erlaubt die Capability das Versenden von USB-Nachrichten via /proc/bus/usb.
- CAP_SYS_CHROOT (18): Dies erlaubt die Verwendung
des System-Calls chroot().
- CAP_SYS_PTRACE (19): Dies erlaubt die Verwendung
des System-Calls ptrace() bei jedem beliebigen Prozess.
.
- CAP_SYS_PACCT (20): Mit dieser Capability darf
das Process-Accounting an- und abgeschaltet werden.
- CAP_SYS_ADMIN (21): Dies ist eine der
weitreichensten Capabilities. Diese erlaubt unter anderem die folgenden
Tätigkeiten:
- Setzen des Secure Attention Keys. Dies ist eine
Tastenkombination, die vor der Anmeldung eingegeben werden kann,
um eine sichere Anmeldekonsole zu erhalten. Dies entspricht dem
berühmten Strg-Alt-Del unter Windows. Unter
Linux ist dies mit SysRq-k möglich. Diese
Tastenkombination tötet alle Prozesse auf der aktuellen Konsole,
so dass der Login-Prozess neu gestartet wird.
- Administration des Zufallszahlengenerators.
- Administration der Quota.
- Konfiguration des Kernel Syslog.
- Setzen des Host- und Domänennamen.
- Administration der Mounts.
- Administration des SWAP-Speichers.
- Administration der Software-RAID-Geräte
- CAP_SYS_BOOT (22): Reboot
- CAP_SYS_NICE (23): Diese Capability erlaubt das
Anheben der Prioritäten von
Prozessen und Setzen der Priorität bei fremden Prozessen. Außerdem
kann bei Mehrprozessorsystemen die CPU-Affinität von Prozessen
definiert werden.
- CAP_SYS_RESOURCE (24): Dies erlaubt die
Überschreitung und das Setzen von Ressource-Grenzen. Darüberhinaus
erlaubt es das Überschreiten von Quoten und reservierten
Speicherbereichen der Dateisysteme und die Konfiguration des
Journaling Modus bei Ext3-Dateisystemen.
- CAP_SYS_TIME (25): Diese Capability erlaubt das
Setzen der System-Uhrzeit und der Real-Time-Clock in der Hardware.
- CAP_SYS_TTY_CONFIG (26): Dies erlaubt die
Konfiguration von TTY-Geräten.
- CAP_MKNOD (27): Hiermit dürfen Sie Geräte mit dem
Kommando mknod erzeugen.
- CAP_LEASE (28): Dies erlaubt die Erzeugung von
Leases mit dem Aufruf fcntl() auf beliebigen
Dateien. Normalerweise ist dies nur erlaubt, wenn der Besitzer des
Prozesses auch Besitzer der Datei ist. Mit einer Lease wird der
Prozess (Lease Holder) benachrichtigt, wenn ein weiterer Prozess
(Lease Breaker) auf
die Datei zugreift. Ursprünglich sind die Leases eingeführt worden,
um Samba besser zu unterstützen.
- CAP_AUDIT_WRITE (29): Diese Capability benötigt
ein Prozess, um eine Nachricht an das Audit-Subsystem im Kernel zu
schicken. Lediglich vertrauenswürdige Applikationen dürfen
Audit-Ereignisse protokollieren.
- CAP_AUDIT_CONTROL (30): Diese Capability erlaubt
die Administration des Audit-Subsystems mit dem Befehl
auditctl (siehe A.2).
Ralf Spenneberg
2007-11-13