]> source.dussan.org Git - rspamd.git/commitdiff
* Change method of dropping privilleges
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 4 Mar 2009 10:58:20 +0000 (13:58 +0300)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 4 Mar 2009 10:58:20 +0000 (13:58 +0300)
utils/redirector.pl.in

index cb74b0222104bc25330413028a09718594b98e04..da34515804a4964da7dbb6e2e355f9c4082c043a 100755 (executable)
@@ -50,6 +50,14 @@ my %cfg = (
 
 our $do_reopen_log = 0;
 
+# Drop privilleges
+if ($> == 0) {
+    my $uid = getpwnam($cfg{user}) or die "user $cfg{user} unknown";
+    my $gid = getgrnam($cfg{group}) or die "group $cfg{group} unknown";
+    $< = $uid;
+    $) = $gid;
+}
+
 die "Process is already started, check $cfg{pidfile}" if Proc::PidUtil::is_running($cfg{pidfile});
 
 die "Cannot write to pidfile $cfg{pidfile}" if ! open(PID, "> $cfg{pidfile}");
@@ -60,10 +68,6 @@ $cfg{do_log} = 0 if ! open(LOG, ">> $cfg{logfile}");
 # Do daemonization
 Proc::Daemon::Init if !$cfg{debug};
 
-my $uid = getpwnam($cfg{user}) or die "user $cfg{user} unknown";
-my $gid = getgrnam($cfg{group}) or die "group $cfg{group} unknown";
-setpgrp ($uid, $gid) or die "cannot drop privilleges";
-
 Proc::PidUtil::make_pidfile($cfg{pidfile}, $$) or die "Cannot write pidfile $cfg{pidfile}";
 
 # Init memcached connection