On Mon, Nov 21, 2005 at 10:52:39PM +0100, Peter J. Holzer wrote:
> privileges after loading the modules is definitely bad: There is a good
> chance that the logfiles will be created with owner root, but later
> forkserver will run as a non-privileged user and be unable to reopen
> them.

And behold, this was just filed as Debian Bug#342336.  Could have sworn I
tested it with a purge/install/connect loop.

Here's the patch I'm testing before upload.  If any plugins do ultimately need
root, we might so an extra load_plugins() before dropping privileges, using a
different configuration file or something along those lines.

-- 
Devin  \ aqua(at)devin.com, IRC:Requiem; http://www.devin.com
Carraway \ 1024D/E9ABFCD2: 13E7 199E DD1E 65F0 8905 2E43 5395 CA0D E9AB FCD2
Index: 0.31.1/qpsmtpd-forkserver
===================================================================
--- 0.31.1/qpsmtpd-forkserver   (revision 582)
+++ 0.31.1/qpsmtpd-forkserver   (working copy)
@@ -129,7 +129,6 @@
 
 # Load plugins here
 my $qpsmtpd = Qpsmtpd::TcpServer->new();
-$qpsmtpd->load_plugins;
 
 # Drop privileges
 my (undef, undef, $quid, $qgid) = getpwnam $USER or
@@ -138,7 +137,6 @@
 while (my ($name,$passwd,$gid,$members) = getgrent()) {
     my @m = split(/ /, $members);
     if (grep {$_ eq $USER} @m) {
-       ::log(LOGINFO,"$USER is member of group $name($gid)");
        $groups .= " $gid";
     }
 }
@@ -149,6 +147,8 @@
       die "unable to change uid: $!\n";
 $> = $quid;
 
+$qpsmtpd->load_plugins;
+
 ::log(LOGINFO,"Listening on port $PORT");
 ::log(LOGINFO, 'Running as user '.
        (getpwuid($>) || $>) .

Reply via email to