[devel] Q: capset after pthread_create (droproot patch for 3proxy)

Afanasov Dmitry ender на altlinux.org
Вт Июн 9 10:07:25 MSD 2009


On Mon, Jun 08, 2009 at 08:25:57PM +0400, Sergey Vlasov wrote:
> On Mon, Jun 08, 2009 at 06:22:37PM +0400, Afanasov Dmitry wrote:
> > вопрос: как постфактум проставить для всех порожденных тредов?
> 
> Только каким-то образом обеспечить вызов capset() во всех потоках, для
> которых это необходимо (впрочем, при выполнении clone() при вызовах
> pthread_create() результат capset() будет наследоваться).
> 
> > если никак, то придется drop_root вписывать в пяток лишних файлов.
> 
> При вписывании следует учитывать, что функции set*id(), реализованные
> в glibc, действуют на весь процесс.
[...]

огромное спасибо за информацию. я ведь в начале так и думал - раскидать
setuid'ы по тредам.

On Mon, Jun 08, 2009 at 11:52:08PM +0400, Dmitry V. Levin wrote:
> On Mon, Jun 08, 2009 at 06:22:37PM +0400, Afanasov Dmitry wrote:
> > вопрос: как постфактум проставить для всех порожденных тредов?
> > если никак, то придется drop_root вписывать в пяток лишних файлов.
> 
> Про технический аспект Сергей уже написал.  Что касается безопасности, то
> лучше выполнить drop root до порождения тредов.
именно этот вариант и придется использовать.

сначала не хотелось, так как "drop_root() перед pthread_create()" означает
"setuid() до readconfig()". а так как конфиг "интерпретируемый", команды
выполняются сразу. в том числе команды setuid и pthread_create(subsystem).
а значит придется выкинуть из 3proxy.conf команды setuid, setgid, chrootи
и реализовать как параметры командной строки полностью, а не как
дополненение.

> может сложиться ситуация, когда, например, один поток ещё выполняется с
> правами root, а другой -- уже непривилегированный и обрабатывает запросы
> клиентов.
в данный момент именно так и получилось, почему и возник мой вопрос. буду
переделывать.

-- 
С уважением
Афанасов Дмитрий
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090609/d0bfe9ef/attachment-0001.bin>


Подробная информация о списке рассылки Devel