[devel] Re: IA: /usr/sbin/gnome-pty-helper

Alexey Morozov =?iso-8859-1?q?morozov_=CE=C1_novosoft=2Eru?=
Вт Окт 8 10:31:22 MSD 2002


On Mon, Oct 07, 2002 at 01:36:01PM +0400, Dmitry V. Levin wrote:
> Запускающий helper процесс должен входить в группу utempter.
> Если он сбросит права раньше срока, то получит EACCES.
> Если он их не сбросит до инициализации Gtk, то последний его пошлет.
> Если же он выставит все group IDs в utempter, то получается ерунда с
> доступом к файловой системе - отсюда и запрет на создание файлов.
> 
> > > Конечно, можно сделать fork+pipe, но это уже совсем другая история.
> > Хмм... Из пушки...
> Зато реально. Других рабочих вариантов до сих пор предложено не было.
Стоп. А как насчет следующей схемы:
0. права на терминал 02511 root:utempter
1. запуск терминала (egid == utempter, gid == user_gid)
     |
      \_ 2. запуск pty-helper
3. сброс привилегий в _gid_ (не в egid!).
4. инициализация GTK+ и всяких прочих там виджетсетов/библиотек и
   всего остального.

плюсы: достаточная простота реализации, минимизация изменений в
сравнении с vanilla sources. 
минус: существуют проблемы с отслеживанием момента закрытия
терминала. Впрочем, насколько я понимаю, в случае пробоя в терминале
уверенности в том, что злоумышленник не "закроет" запись в utmp до
начала деструктивных действий нет никакой... 

Кстати, возможно, идея с долгоживущим utempter'ом или привилегированным
процессом его запускающим, возможно, заслуживает рассмотрения...
Но здесь, опять же, есть минус: поскольку процесс все же принадлежит
пользователю, то он может читать/модифицировать его память...




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