ИМЯ
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
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2003