in reply to Running a daemon process as another user

At the top of the script, say

use POSIX qw/setuid setsid/; BEGIN { setuid scalar getpwnam 'toadi' or die $!; }
I've imported setsid, too, since you need it to manifest a daemon.

After Compline,
Zaxo

Replies are listed 'Best First'.
Re^2: Running a daemon process as another user
by toadi (Chaplain) on Oct 27, 2004 at 08:30 UTC
    ok this is very strange:
    use POSIX qw/setuid setsid/; BEGIN { setuid scalar getpwnam 'qf3' or die $!; # Fork. my $pidFile = '/some/path/pid'; my $pid = fork; if ($pid) # parent: save PID { open PIDFILE, ">$pidFile" or die "can't open $pidFile: $!\n"; print PIDFILE $pid; close PIDFILE; exit 0; } } print "USER: ". getpwuid($<) . "\n";

    USER will be root, but when I do a ps -ef it does:

    toadi 20510 1 14 04:56 pts/0 00:00:01 /usr/bin/perl /some/ +path/daemon


    --
    My opinions may have changed,
    but not the fact that I am right

      print "USER: ". getpwuid($<) . "\n";

      USER will be root, but when I do a ps -ef it does:

      Sure it is, because   $<   is the real uid (you used to be root).

      Use the effective uid   $>   to display the new identity. See  perlvar.

      Cheers, Sören