CAPGET(2)

ИМЯ
capget, capset - установить/получить возможности процесса

ОБЗОР
#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);

ОПИСАНИЕ
В Linux 2.2, сила суперпользователя (root) была разделена на список отдельных возможностей. Каждый процесс имеет список Эффективных возможностей, которые он может в данный момент использовать. Каждый процесс также имеет список Унаследованных возможностей, которые могут быть переданы через execve(2), и список Разрешённых возможностей, которые он может сделать эффективными или унаследованными.

Две указанные выше функции являются низкоуровневым интерфейсом ядра для получения и установки данных возможностей. Для Linux не только эти функции являются специфичными, но и API ядра для изменения и использования этих функций (в особенности формата типов cap_user_*_t ) также является предментом изменений с каждой новой версией ядра.

Переносимыми являются вызовы cap_set_proc(3) и cap_get_proc(3); если это возможно, вы должны использовать в приложениях именно их. Если вы хотите использовать в приложениях расширения Linux, вы можете использовать более удобные вызовы capsetp(3) и capgetp(3).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. В случае ошибки возвращается -1 и значение errno устанавливается соответствующим образом.

ОШИБКИ

EINVAL
    Один из аргументов недопустим.

EPERM
    Была сделана попытка добавить возможность, которой нет в списке Разрешённых к списку Разрешённых, Эффективных или Унаследованных возможностей.

ПРОЧАЯ ИНФОРМАЦИЯ
Переносимые функции для запроса и установки возможностей предоставляются библиотекой libcap которая доступна по адресу:
ftp://linux.kernel.org/pub/linux/libs/security/linux-privs

СМОТРИ ТАКЖЕ
capabilities(7)

ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003