ИМЯ¶
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