MYDan

 view release on metacpan or  search on metacpan

lib/MYDan/Util/Sudo.pm  view on Meta::CPAN

package MYDan::Util::Sudo;

=head1 NAME

MYDan::Util::Sudo - Become a user by setting uid or invoking sudo

=cut
use warnings;
use strict;

use Carp;
use POSIX;

=head1 SYNOPSIS

 use MYDan::Util::Sudo;

 MYDan::Util::Sudo->sudo( 'joe' );

=head1 Methods

=head3 sudo( $user )

Become $user ( default root ). 

=cut
sub sudo
{
    my ( $class, $user ) = splice @_;
    my $me = ( getpwuid $< )[0];

    return $user if $me eq ( $user ||= 'root' ) 
        || POSIX::setuid( ( getpwnam $user )[2] );

    warn "$me: need '$user' privilege, invoking sudo.\n";
    confess "exec $0: $!" unless exec 'sudo', '-u', $user, $0, @ARGV;
}

1;



( run in 2.509 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )