Для уже запущенного процесса требуется привилегированная инструкция, например, с использованием опции сокета SO_RCVBUFFORCE. Этот процесс работает как обычный пользовательский процесс.Предоставить возможности для выполнения процесса
Как предоставить возможность/разрешение на этот процесс? Настройки параметров на основе файлов по-прежнему являются мечтой?
Я попытался /usr/sbin/setpcaps
утилиты из пакета libcap и cap_set_proc()
апи, но способность CAP_SETPCAP
блокируется на системе (старая системы на основе Fedora 4 с 2.6.20 ядра), поэтому он не может предоставить/удалить возможности для другого процесса.
Мысль об установке временного корневого uid для этого процесса, но есть ли способ изменить эффективный UID внешнего, уже запущенного процесса? Функции setuid()
/seteuid()
/... могут просто изменить текущий процесс (кто вызывает функцию).
Если включен CAP_SETPCAP, возможно добавить новые возможности в процесс с помощью cap_set_proc(). – CsTamas
Я принимаю этот ответ, указав на возможное решение: либо у вас есть демон, либо через сокет, передающий файловый дескриптор (см. Сообщение Kragen Sitaker по адресу http://lists.canonical.org/pipermail/kragen-hacks/2002- Январь/000292.html), или же для каждого запроса запускается утилита (исполняемая с флагом setuid) с fork() + exec(), которая наследует дескриптор сокета – CsTamas