CAPGET(2)

BEZEICHNUNG
capget, capset - hole/setze Prozessrechte

ÜBERSICHT
#undef _POSIX_SOURCE
#include <sys/capability.h>

int capget(cap_user_header_t header, cap_user_data_t data);

int capset(cap_user_header_t header, const cap_user_data_t data);

BESCHREIBUNG
Beginnend mit Linux Kernel 2.2 sind die Befugnisse des Systemadministrators (root) aufgeteilt in einzelne Rechte. Jeder Prozess besitzt eine Menge aktueller Rechte, die bestimmen, welche Rechte er im Augenblick wahrnehmen darf. Jeder Prozess besitzt darüber hinaus einen Satz vererbbarer Rechte, die via execve(2) weitergereicht werden dürfen, sowie eine Liste erlaubter Rechte, die er einsetzen oder vererben kann.

capget() und capset() bilden die rohe Schnittstelle zum Kernel, um Rechte abzufragen und zu setzen. Diese Systemaufrufe sind nicht nur Linux-spezifisch, sondern auch die Form der Schnittstelle kann sich mit jeder Revision des Kernels ändern. Das gilt für die Anwendung der beiden Funktionen und ganz besonders für das Format des Typs cap_user_*_t.

Die portablen Schnittstellen heißen cap_set_proc(3) und cap_get_proc(3); wenn möglich sollten diese Schnittstellen in Anwendungsprogrammen benutzt werden. Um auch Zugriff auf Linux-Erweiterungen zu bekommen, stehen die Aufrufe capsetp(3) und capgetp(3) zur Verfügung.

RÜCKGABEWERT
Bei Erfolg wird null zurückgeliefert. Im Fehlerfall wird -1 übergeben und errno entsprechend gesetzt.

FEHLER

EINVAL
    Ein oder mehrere übergebene Argumente waren ungültig.

EPERM
    Es wurde versucht, neue Rechte zur Menge der erlaubten Rechte (permitted) hinzuzufügen, oder ein nicht erlaubtes Recht in die Liste aktueller (effective) oder vererbbarer (inheritable) Rechte aufzunehmen.

WEITERE INFORMATIONEN
Die portable Schnittstelle zum Abfragen und Setzen von Prozessrechten wird durch die Bibliothek libcap zur Verfügung gestellt. Sie ist zu beziehen über:
ftp://linux.kernel.org/pub/linux/libs/security/linux-privs

SIEHE AUCH