2011-04-12 73 views
1

可以使用File::Find::Rule来确定某个目录是否可由给定的UID写入?如何检查目录是否可以被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)导致脚本崩溃。我从来没有需要在之前的File::Find::Rule操作中使用以前的用法permissions()来指定此选项。

如果我按照以下方式调整规则,我就可以正常工作。

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

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

$dir子目录的父目录是.

如果该目录存在于名单它的@subDirs,它必须是可写的。

感谢ikegami建议这个模块。

+0

嗡嗡... [File :: Find :: Rule](http://search.cpan.org/perldoc?File::Find::Rule)没有'permissions'方法。 – ikegami 2011-04-12 22:49:18

+0

啊,你必须使用[File :: Find :: Rule :: Permissions](http://search.cpan.org/perldoc?File::Find::Rule::Permissions)。 – ikegami 2011-04-12 22:52:37

+0

对我来说很好(只要你使用File :: Find :: Rule':'权限') – Grrrr 2011-04-12 23:13:17

回答

1

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

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

$dir子目录的父目录是.

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

相关问题