Unix-setuid

 view release on metacpan or  search on metacpan

lib/Unix/setuid.pm  view on Meta::CPAN

{
    package Unix::setuid::euid;
    sub TIESCALAR { bless [], $_[0] }
    sub FETCH     { $> }
    sub STORE     { $> = $_[1] }
}

{
    package Unix::setuid::ruser;
    sub TIESCALAR { bless [], $_[0] }
    sub FETCH     { my @pw = getpwuid($<); @pw ? $pw[0] : $< }
    sub STORE     {
        if ($_[1] =~ /\A\d+\z/) {
            $< = $_[1];
        } else {
            my @pw = getpwuid($_[1]);
            die "No such user '$_[1]'" unless @pw;
            $< = $pw[2];
        }
    }
}

{
    package Unix::setuid::euser;
    sub TIESCALAR { bless [], $_[0] }
    sub FETCH     { my @pw = getpwuid($>); @pw ? $pw[0] : $> }
    sub STORE     {
        if ($_[1] =~ /\A\d+\z/) {
            $> = $_[1];
        } else {
            my @pw = getpwnam($_[1]);
            die "No such user '$_[1]'" unless @pw;
            $> = $pw[2];
        }
    }
}



( run in 0.274 second using v1.01-cache-2.11-cpan-8d75d55dd25 )