2011-04-12 72 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的列表中存在,它必須是可寫的。

相關問題