URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7378
[ Назад ]

Исходное сообщение
"сбрасывание и возвращение root привелегий"

Отправлено geragray , 23-Май-08 17:38 
Есть программа работающая с цепочкой mangle iptables. При запуске правило устанавливается, при завершении удаляется. Для работы с mangle нужер рут, но в целях безопастности программа должна иметь полный доступ только когда это абсолютно неообходимо.

На ум пришло только одно. На исполняемый файл устанавливаю suid флаг и после запуска программы, когда mangle iptable уже принят системой, сбрасываю рут привелегии следующим образом:

setuid(getuid());

Проблемма заключается в том, что при завершении программа должна убрать установленное правило. Но тк рут уже сброшен это сделать невозможно.

Может быть вы способ возвращения рут привелегий? setuid(0) естественно не работает :)


Содержание

Сообщения в этом обсуждении
"сбрасывание и возвращение root привелегий"
Отправлено parad , 24-Май-08 10:20 
Запуск под рутом -> форк -> родитель waitpid(), потомок setuid(). по завершению как потомок отомрет родитель приберет за ним. :)

"сбрасывание и возвращение root привелегий"
Отправлено geragray , 27-Май-08 11:28 
Хм, спасибо за идею. Только у меня треды в приложении, аналога waitpid для phtread случайно не знаете?



"сбрасывание и возвращение root привелегий"
Отправлено parad , 27-Май-08 17:01 
аналог - pthread_join.
не вижу оснований для беспокойства - в начале приложения до создания тредов - форк, потом треды.