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建议这个模块。
嗡嗡... [File :: Find :: Rule](http://search.cpan.org/perldoc?File::Find::Rule)没有'permissions'方法。 – ikegami 2011-04-12 22:49:18
啊,你必须使用[File :: Find :: Rule :: Permissions](http://search.cpan.org/perldoc?File::Find::Rule::Permissions)。 – ikegami 2011-04-12 22:52:37
对我来说很好(只要你使用File :: Find :: Rule':'权限') – Grrrr 2011-04-12 23:13:17