iofunc_chown()

Обработать сообщение _IO_CHOWN

Прототип:

#include <sys/iofunc.h>
int iofunc_chown( resmgr_context_t *ctp,
io_chown_t *msg,
iofunc_ocb_t *ocb,
iofunc_attr_t *attr );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
msg
Указатель на структуру io_chown_t, содержащую сообщение, полученное менеджером ресурсов.
ocb
Указатель на структуру блока управления открытым контекстом (OCB, Open Control Block) iofunc_ocb_t, созданную при открытии ресурса клиентом.
attr
Указатель на атрибутную запись iofunc_attr_t, которая определяет характеристики устройства, связанного с менеджером ресурсов.

Библиотека:

libc

Описание:

Вспомогательная функция iofunc_chown() реализует POSIX семантику для клиентского вызова chown(), принимаемого как _IO_CHOWN сообщение менеджером ресурсов.

Функция iofunc_chown() проверяет наличие у клиента необходимых разрешений для модификации структуры атрибутов функцией chown(). Если разрешений достаточно, то chown() выполняется, заменяя поля структуры ocb->attr. Согласно стандарту POSIX 1003.1, если клиент не является привилегированным (root) пользователем, iofunc_chown() снимает S_ISUID (set-user-ID) и S_ISGID (set-group-ID) в поле ocb->attr->mode.

Эта функция обновляет IOFUNC_ATTR_CTIME, IOFUNC_ATTR_DIRTY_TIME и IOFUNC_ATTR_DIRTY_MODE биты в ocb->attr->flags. Пользователь может вызвать iofunc_time_update(), чтобы обновить поля времени в ocb->attr.

Возвращаемое значение:

EOK
Успешное завершение.
EROFS
Попытка изменить владельца в файловой системе только для чтения.
EACCES
У клиента нет прав доступа для этой операции.
EPERM
GID или UID не совпадают.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

chown(), io_chown_t, iofunc_attr_t, iofunc_chmod(), iofunc_chown_default(), iofunc_ocb_t, iofunc_time_update(), resmgr_attach(), resmgr_context_t




Предыдущий раздел: Описание API системной библиотеки