[Mailman-Users] Group mismatch error

Barry Finkel b19141 at britaine.ctd.anl.gov
Wed Feb 14 22:06:31 CET 2007


Mark Sapiro replied to my posting about group-id mismatches, in part:

>>My questions are these:
>>
>>1) Where is this group test being made?


>In the wrapper /usr/lib/mailman/mail/mailman.
>
>...
>
>In a 'package' installation, the expected group is determined by what
>ever magic the packager has resorted to to avoid having to recompile
>the wrapper.

I was looking at this wrapper executable and how it is compiled.
I needed to determine the "magic" involved.  I have the "script" output
of my installations on Solaris and Ubuntu.  I found this Debian/Ubuntu
patch

     10_wrapper_uid.dpatch

that contains, in part, this change to mail-wrapper.c:

=====================================================================
--- mailman-2.1.4.orig/src/mail-wrapper.c
+++ mailman-2.1.4/src/mail-wrapper.c
@@ -74,7 +74,7 @@
                 fatal(logident, MAIL_ILLEGAL_COMMAND,
                       "Illegal command: %s", argv[1]);
 
-        check_caller(logident, parentgroup);
+       if (getgid() >= 100 && getgid() != 65534) check_caller(logident, LEGAL_PARENT_GROUP);
 
         /* If we got here, everything must be OK */
         status = run_script(argv[1], argc, argv, env);
=====================================================================

The patch contains a similar patch to cgi-wrapper.c .

>From the debian/changelog, with the oldest patch first:

-------------------------------------------
mailman (1.0b7-1) unstable; urgency=low

  * Don't check caller gid in mail-wrapper

 -- Gergely Madarasz <gorgo at caesar.elte.hu>  Fri,  8 Jan 1999 02:24:00 +0100
-------------------------------------------
mailman (2.0.3-2) unstable; urgency=low

  * Applied some old patches which had got lost, including allowing the
    calling of the wrapper scripts if GID == nobody or < 100.  (Closes:
    #36010, #89564, #89848, 89818)

 -- Tollef Fog Heen <tfheen at debian.org>  Wed, 14 Mar 2001 13:40:16 +0100
-------------------------------------------

>From the Debian web site:

mailman  (2.0.3-3) unstable; urgency=low 

  * Mailman has supported having nobody as the CGI user for some time
     (closes: #36010)

- Tollef Fog Heen <tfheen at debian.org>  Fri, 16 Mar 2001 11:06:44 +0100
-------------------------------------------

There was no additional information on patches #89564, #89848, 89818.

The patch appears to be calling

     check_caller

only if the group is over 99 and not 65534, and it is calling that
routine with a different parent group.  But the mail-wrapper.c code has

     #define LEGAL_PARENT_GROUP MAIL_GROUP
     const char* parentgroup = LEGAL_PARENT_GROUP;

I have no idea for the reasoning behind "Don't check caller gid in
mail-wrapper", nor do I understand the reasoning for the "nobody" and
"< 100" GID checks.  I do not know if the change to the second parameter
of check_caller is significant.

When I built my 2.1.9 package, I did not include any of the Debian
patches except for one that changes two parameters in Defaults.py.in:

     IMAGE_LOGOS
     DEFAULT_URL_PATTERN

What I have on my Ubuntu test system in /etc/group is:

     daemon:x:1:
     list:x:38:

I have to conclude that the straight Ubuntu/Debian package installation
was not checking the group-id because the daemon and list groups have
ID below 100.  When I built and installed the 2.1.9 Ubuntu package
without this patch, the Mailman code began checking the group-id and
found a mismatch.

I would appreciate it if someone would confirm my conclusions.  Thanks.
----------------------------------------------------------------------
Barry S. Finkel
Computing and Information Systems Division
Argonne National Laboratory          Phone:    +1 (630) 252-7277
9700 South Cass Avenue               Facsimile:+1 (630) 252-4601
Building 222, Room D209              Internet: BSFinkel at anl.gov
Argonne, IL   60439-4828             IBMMAIL:  I1004994



More information about the Mailman-Users mailing list