如何检查目录是否可由UID写入?

时间:2011-04-12 22:25:25

标签: perl file permissions rule file-find

可以使用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建议这个模块。

1 个答案:

答案 0 :(得分:1)

在这里,我测试子目录列表中是否存在父目录:

my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");

$dir子目录的父目录是.

如果该目录存在于@subDirs列表中,则该目录必须是可写的。