#perl #file #permissions #rule #file-find
#perl #файл #разрешения #правило #файл-найти
Вопрос:
Может 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. жужжание… У File::Find::Rule нет
permissions
метода.2. Ах, вы, должно быть, используете File::Find::Rule::Permissions .
3. У меня работает нормально (при условии, что вы
use File::Find::Rule ':permissions'
)
Ответ №1:
Здесь я проверяю наличие родительского каталога в списке подкаталогов:
my @subDirs = File::Find::Rule::Permissions->directory()->permissions(isWriteable => 1, user => "$uid")->maxdepth(1)->name(".")->in("$dir");
Родительский каталог подкаталогов $dir
является .
Если этот каталог существует в списке @subDirs
, он должен быть доступен для записи.