NOMBRE
capget, capset − consulta/establece las capacidades de un proceso
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