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.
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
VÉASE TAMBIÉN¶
capabilities(7)