capget(2) consulta/establece las capacidades de un proceso

Other Alias

capset

SINOPSIS

#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);

DESCRIPCIÓN

A partir de la versión 2.2 de Linux, el poder del superusuario (root) se ha dividido en un conjunto de capacidades discretas. Todo proceso posee un conjunto de capacidades efectivas que identifican qué capacidades (si las hay) puede ejercer actualmente. Todo proceso también posee un conjunto de capacidades heredables que se pueden pasar a través de una llamada execve(2), y un conjunto de capacidades permitidas que el proceso puede hacer efectivas o heredables.

Estas dos funciones son las interfaz directa con el núcleo para consultar y establecer capacidades. No sólo estas llamadas al sistema son específicas de Linux sino que el API del núcleo es probable que cambie, y el uso de estas funciones (en particular el formato de los tipos cap_user_*_t) está subjeto a cambios con cada versión del núcleo.

Las interfaces portables son cap_set_proc(3) y cap_get_proc(3). Si es posible, debería usar estas interfaces en sus aplicaciones. Si desea usar las extensiones de Linux en sus aplicaciones, debería utilizar las interfaces capsetp(3) y capgetp(3), que son más fáciles de usar.

VALOR DEVUELTO

En caso de éxito, se devuelve un cero. En caso de error, se devuelve un -1 y se asigna a errno un valor apropiado.

ERRORES

EINVAL
Uno de los argumentos es incorrecto.
EPERM
Se ha intentado añadir una capacidad al conjunto Permitido, o asignar una capacidad que no está en el conjunto Permitido al conjunto Efectivo o Heredable.

INFORMACIÓN ADICIONAL

La interfaz portable para las funciones de consulta y establecimiento de capacidades la proporciona la biblioteca libcap que está disponible aquí:
ftp://linux.kernel.org/pub/linux/libs/security/linux-privs