If anyone's interested, here's a snippet with the basic working logic. Although the "id -G" portion is not the safest way of doing this, I just don't know how:
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
+$blksize,$blocks) = stat($targetdir);
$newuser = getpwuid($uid);
$groups = `/usr/bin/id -G $newuser`;
$) = "$groups";
$> = $uid;
if ( not chdir("$targetdir")) {
print "$targetdir is inaccessible to its owner\n";
next;
} else {
$currentdir = Cwd::getcwd();
my $lasterr = $!;
if (not defined $currentdir) {
# incorrect underlying mount-point permissions
print "getcwd() failed for $targetdir:$lasterr\n";
} else {
print "getcwd() for $over is OK.");
}
}
|