Understanding Perl's Special Variables - A Question Of Ownership (Page 8 of 11 )
You can obtain information on the user and group the Perl script is running
as, with the following four variables:
$< - the real UID of the process
$> - the effective UID of the process
$) - the real GID of the process
$( - the effective GID of the process
A difference between "real" and "effective" IDs appears when you use the
setuid() or setgid() command to change the user or group. The "real" ID is
always the one prior to the setuid() or setgid() call; the "effective" one
is the one you've changed into following the call.
Consider the following example, which demonstrates:
#!/usr/bin/perl
# print real UID
print "Real UID: $<\n";
# print real GID
print "Real GID: $(\n";
# print effective UID
print "Effective UID: $>\n";
# print effective GID
print "Effective GID: $)\n";
Here's the output:
Real UID: 515
Real GID: 100 514 501 100
Effective UID: 515
Effective GID: 100 514 501 100
Notice that the $) and $( commands return a list of all the groups the user
belongs to, not just the primary group.
Of course, most often this is not very useful by itself. What you really
need is a way to map the numeric IDs into actual user and group names. And
Perl comes with built-in functions to do this - consider the following
example, which illustrates:
#!/usr/bin/perl
# set record separator
$\=" ";
# print user and group
print "This script is running as " . getpwuid($>) . " who
belongs to the
following groups:";
foreach (split(" ", $))) { print scalar(getgrgid($_)); };
Here's the output:
This script is running as john who belongs to the following groups: users
software apps
Next: Rank And File >>
More Perl Articles
More By icarus, (c) Melonfire