Das erreichst du unter Perl durch setzten von Spezialvariablen.
#!/usr/bin/perl use strict;
use warnings;
use English;
my $unpriv_username = 'coax'; # unpriviligierter User
# hole UID des unpriviligierten Users
my $unpriv_uid = (getpwnam($unpriv_username))[3];
# setze effektive UID auf unpriviligierte UID
$EUID = $unpriv_uid;
# ... mach etwas unter unpriviligierten Rechten ...
#
# ... erzeuge zum Beispiel ein Verzeichnis unter neuen Rechten:
# mkdir('verzeichnis', '0755') or die $!;
Das Modul 'English' ist dafuer nicht unbedingt noetig, macht es aber moeglich, dass man die Spezialvariablen ($>) ueber eindeutigere Namen (wie hier $EUID) ansprechen kann.
Die Zeile
$EUID = $unpriv_uid;
kann also auch ohne English-Modul so
$> = $unpriv_uid;
geschrieben werden.siehe dazu:
perldoc perlvar # (die Variablen: $< $> $( $) bzw. $UID $EUID $GID $EGID )
Datum: 03.02.2005-18:59
