Как проверить, доступен ли каталог для записи по UID? - PullRequest
1 голос
/ 13 апреля 2011

Может ли 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 Ответ

1 голос
/ 13 апреля 2011

Здесь я проверяю наличие родительского каталога в списке подкаталогов:

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

Родительским каталогом подкаталогов $dir является .

Если этокаталог существует в списке @subDirs, он должен быть доступен для записи.

...