http://www.perlmonks.org?node_id=402930


in reply to Re: Running a daemon process as another user
in thread Running a daemon process as another user

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

Replies are listed 'Best First'.
Re^3: Running a daemon process as another user
by Happy-the-monk (Canon) on Oct 27, 2004 at 09:06 UTC

    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