From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 8 Oct 2002 13:31:22 +0700 From: Alexey Morozov To: ALT Devel discussion list Subject: Re: [devel] Re: IA: /usr/sbin/gnome-pty-helper Message-ID: <20021008063122.GG11539@pyro.hopawar.private.net> References: <20021006201904.GB25012@basalt.office.altlinux.ru> <20021007071558.GD11539@pyro.hopawar.private.net> <20021007093601.GD31447@basalt.office.altlinux.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20021007093601.GD31447@basalt.office.altlinux.ru> User-Agent: Mutt/1.4i Sender: devel-admin@altlinux.ru Errors-To: devel-admin@altlinux.ru X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: devel@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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'ом или привилегированным процессом его запускающим, возможно, заслуживает рассмотрения... Но здесь, опять же, есть минус: поскольку процесс все же принадлежит пользователю, то он может читать/модифицировать его память...