#!/usr/bin/perl -wT
BEGIN { plan
tests
=> 18; }
my
$TEST_UID
= 1000;
my
$TEST_GID
= 1000;
ok(1);
ok(geteuid(),$>,
"geteuid not the same as \$>"
);
ok(getruid(),$<,
"getruid not the same as \$<"
);
ok(getsuid(),$>,
"getsuid not the same as original \$>"
);
ok(
$SUID
,getsuid(),
"\$SUID and getsuid() do not match"
);
ok(
$SGID
,getsgid(),
"\$SGID and getsgid() do not match"
);
ok(
$RUID
,getruid(),
"\$RUID and getruid() do not match"
);
ok(
$RGID
,getrgid(),
"\$RGID and getrgid() do not match"
);
ok(
$EUID
,geteuid(),
"\$EUID and geteuid() do not match"
);
ok(
$EGID
,getegid(),
"\$EGID and getegid() do not match"
);
if
(
$EUID
== 0) {
eval
{drop_gid_perm(
$TEST_GID
);};
if
($@) {
ok(0,
undef
,
"Dropping group privileges failed"
);
}
else
{
ok(1);
}
eval
{drop_uid_perm(
$TEST_UID
);};
if
($@) {
ok(0,
undef
,
"Dropping root privileges failed"
);
}
else
{
ok(1);
}
}
else
{
skip(
"Running as non-root, no need to drop group"
,1);
skip(
"Running as non-root, no need to drop privileges"
,1);
}
eval
{
$EUID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set EUID = 0"
);
eval
{
$RUID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set RUID = 0"
);
if
(suid_is_cached()) {
skip(
"Cannot set saved-UID directly on this system"
,1);
}
else
{
eval
{
$SUID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set SUID = 0"
);
}
eval
{
$EGID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set EGID = 0"
);
eval
{
$RGID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set RGID = 0"
);
if
(suid_is_cached()) {
skip(
"Cannot set saved-GID correctly on this system"
,1);
}
else
{
eval
{
$SGID
= 0;}; ok($@,
qr/./
,
"Unexpectedly set SGID = 0"
);
}