[sisyphus] Re: mailman сломался

Епифанов Сергей =?iso-8859-1?q?serpiph_=CE=C1_entek=2Eru?=
Пт Мар 7 16:40:41 MSK 2003


В сообщении от 7 Март 2003 16:19 Artem K. Jouravsky написал:
> On Fri, Mar 07, 2003 at 03:58:52PM +0300, Епифанов Сергей wrote:
> > В сообщении от 7 Март 2003 15:23 Artem K. Jouravsky написал:
> > > On Fri, Mar 07, 2003 at 02:59:54PM +0300, Епифанов Сергей wrote:
> > > > В сообщении от 6 Март 2003 17:13 Artem K. Jouravsky написал:
> > > > > Думаю, ответ надо искать там же, где ответ на вопрос, почему не
> > > > > работает SGID
> > > >
> > > > Думаю, ответ здесь: у каждого файла есть UID и EUID, а также GID и
> > > > EGID. UID и GID определяют пользователя, который запустил программу,
> > > > а EUID и EGID - права, которые даны программе на время исполнения.
> > > > Так вот, судя по всему, mailman смотрит не на EGID (который
> > > > устанавливается через SGID-бит), а на GID, который определяется через
> > > > то, как пользователь зашел в систему.
> > >
> > > BTS?
> >
> > Это только мои предположения, что по настоящему - надо смотреть в
> > исходниках.
> >
> > Посмотрите в src строки, где есть getgid, getuid, geteuid, getegid.
> > Может, это подскажет, где искать.
>
> mailman-2.1.1/src/common.c:        GID_T mygid = getgid();
>
>
> /* Is the parent process allowed to call us?
>  */
> void check_caller(const char* ident, const char* parentgroup)
>  {
>          GID_T mygid = getgid();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 		     struct group *mygroup = getgrgid(mygid);
> 	/* skipped */
> 	if (!mygroup)
> 	....
> 	if (strcmp(parentgroup, mygroup->gr_name))
> 	                fatal(ident, GROUP_MISMATCH,
> 					"Group mismatch error.  Mailman expected the %s\n"
> Да, это оно.
> То есть, простого исправления getgid на getegid будет достаточно?

Прежде, чем править пакет, посмотрите в spec. Какие определения для mail_user 
и mail_group?

-- 
С уважением, Епифанов Сергей



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