On Mon, Aug 18, 2008 at 12:11 AM, Philip Guenther <[EMAIL PROTECTED]> wrote: > This question doesn't really have anything to do with OpenBSD.
Thanks, but I think it has to do with OpenBSD, because the question is about implementation at this platform. I'll try using following for now: drop_root() if ($< == 0 or $> == 0); # sudo useradd -g=uid -s/sbin/nologin -d/var/empty _myuser sub drop_root { my ($uid, $gid, $home) = (getpwnam('_myuser'))[2,3,7]; die 'User _myuser not found' unless ($uid and $gid and -d $home); chroot($home) or die "Can not chroot to $home: $!"; # try to set the real, effective and save uid setgid($gid) or die "Can not set gid to $gid: $!"; setuid($uid) or die "Can not set uid to $uid: $!"; # try to regain privileges - this should fail die 'Not able to drop privileges' if (setuid(0) or setgid(0)); }