可以使用File::Find::Rule
来确定某个目录是否可由给定的UID写入吗?
我使用了以下测试:
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";
但它始终返回$dir
是可写的,即使对于我知道受限制的测试目录也是如此。
我可以对此测试进行哪些调整以使其正常工作?
修改
使用use File::Find::Rule qw(permissions)
导致脚本崩溃。在以前的permissions()
操作中,我从未需要使用File::Find::Rule
的先前用法来指定此选项。
如果我按照以下方式调整规则,我会让事情发生。
在这里,我正在测试子目录列表中是否存在父目录:
my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");
$dir
子目录的父目录是.
如果该目录存在于@subDirs
列表中,则该目录必须是可写的。
感谢ikegami建议这个模块。
答案 0 :(得分:1)
在这里,我测试子目录列表中是否存在父目录:
my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");
$dir
子目录的父目录是.
如果该目录存在于@subDirs
列表中,则该目录必须是可写的。