On Friday, August 15, 2003, at 07:51 pm, Bill Goffe wrote:


I'm running Mailman 2.1.2 on a Debian system, and I'd like to call
add_members from another script. In my application, users can only get
to this point via a password, so I'm reasonably sure that they don't
need address verification that the normal subscription mechanism
provides. But, when I call add_members from another CGI script, I get

Traceback (most recent call last):
  File "/usr/local/mailman/bin/remove_members", line 186, in ?
    main()
  File "/usr/local/mailman/bin/remove_members", line 161, in main
    mlist = MailList.MailList(listname)
  File "/usr/local/mailman/Mailman/MailList.py", line 122, in __init__
    self.Lock()
  File "/usr/local/mailman/Mailman/MailList.py", line 155, in Lock
    self.__lock.lock(timeout)
  File "/usr/local/mailman/Mailman/LockFile.py", line 243, in lock
    self.__write()
  File "/usr/local/mailman/Mailman/LockFile.py", line 422, in __write
    fp = open(self.__tmpfname, 'w')
IOError: [Errno 13] Permission denied:
  '/usr/local/mailman/locks/a.lock.cook.20710.0'

As Mailman and Apache run under different userids, I tried adding
Mailman's group to Apache's, but I still get similar errors (I tried the
reverse in case I got it reversed). Interestingly, if I run Apache
*itself* as mailman, it works fine, but that seems like an awfully blunt
mechanism.


I read the FAQ, but didn't see anything. I also spent a lot of time in
archives, and while this is talked about, it is never really answered.


Mailman's own CGI scripts are run via compiled C wrappers that have set gid to the mailman group permission and which then execute the associated MM CGI script from $prefix/Mailman/Cgi/ directory. These wrappers do some security checking before running the script. The source of the wrapper is in $build/src/cgi-wrapper.c


You do not necessarily have to copy this approach in all its detail, although, if your alternative CGI script is written in Python, it is not that difficult to do. But the general principle of doing it this way is good. Take a look at the permissions on the wrappers in $exec-prefix/cgi-bin/ and the C wrapper source code.

Certainly this is preferable to opening up the permissions of your Apache server too far, especially if it is accessible from the internet.

Another approach is to have your script drop stuff to a file where a cron script run by the mailman user picks the data up and does the real thing. But this puts a lag in response and lacks immediacy. But it can be made a bit more hacker proof.

Thus, I'm most curious if anybody has any suggestions.

- Bill

-- *------------------------------------------------------*
| Bill Goffe [EMAIL PROTECTED] |
| Department of Economics voice: (315) 312-3444 |
| SUNY Oswego fax: (315) 312-5444 |
| 443 Mahar Hall <wuecon.wustl.edu/~goffe> |
| Oswego, NY 13126 |
*--------*------------------------------------------------------ *-----------*
| "Our products just aren't engineered for security." |
| -- Brian Valentine, Microsoft Senior VP for Windows Development, |
| "Lead Windows Developer Bugged by Security," Matt Berger, InfoWorld |
| www.infoworld.com/articles/hn/xml/02/09/05/020905hnmssecure.xml |
*---------------------------------------------------------------------- -----*
-----------------------------------------------------------------------
Richard Barrett                               http://www.openinfo.co.uk


------------------------------------------------------ Mailman-Users mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-users Mailman FAQ: http://www.python.org/cgi-bin/faqw-mm.py Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/

This message was sent to: [EMAIL PROTECTED]
Unsubscribe or change your options at
http://mail.python.org/mailman/options/mailman-users/archive%40jab.org

Reply via email to