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 будет достаточно? -- Best wishes, | ICQ 103399444 Artem K. Jouravsky, | JID ujo@jabber.ru iFirst Ltd, System Administrator. ----------------------- Normal times may possibly be over forever.