[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