1

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、それは書き込み可能でなければなりません。

このモジュールを提案してくれた池上に感謝します。

4

1 に答える 1

1

ここでは、サブディレクトリリストに親ディレクトリが存在するかどうかをテストします。

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

のサブディレクトリの親ディレクトリ$dir.

そのディレクトリがのリストに存在する場合は、@subDirs書き込み可能である必要があります。

于 2011-04-13T16:10:59.413 に答える