Can File::Find::Rule be used to determine if a directory is writeable by a given UID?
I have used the following test:
my $uid = 123; # or whatever...
my @subDirs = File::Find::Rule->permissions(isWriteable => 1, user => "$uid")->directory()->maxdepth(1)->in( $dir );
if (scalar @subDirs == 0) {
die "$dir is not writeable...";
}
die "$dir is writeable";
But it always returns that the $dir is writeable, even for test directories that I know are restricted.
What adjustments can I make to this test to make it work?
EDIT
Using use File::Find::Rule qw(permissions) caused the script to crash. I have not ever needed to specify this option with previous usages of permissions() in older File::Find::Rule operations.
If I adjust the rule as follows, I get things working.
Here, I am testing for the presence of the parent directory in the subdirectory list:
my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");
The parent directory of the subdirectories of $dir is .
And if that directory exists in the list of @subDirs, it must be writable.
Thanks to ikegami for suggesting this module.
Here, I test for the presence of the parent directory in the subdirectory list:
The parent directory of the subdirectories of
$diris.If that directory exists in the list of
@subDirs, it must be writable.