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
Была сделана попытка добавить возможность, которой нет в списке
Разрешённых к списку Разрешённых, Эффективных или Унаследованных
возможностей.