Есть ли способ установить глобальные разрешения для всех файлов, созданных скриптом Perl? - PullRequest
4 голосов
/ 08 декабря 2010

У меня есть скрипт, который запускает действия CPAN :: Mini :: Inject и имеет App :: Cache. Он работает нормально, но иногда мне нужно запускать его из разных учетных записей пользователей, что происходит, когда я запускаю не так, как у файловых прав, поскольку некоторые файлы автоматически создаются с правами доступа 0740.

Сейчас я использую костыль system("chmod -R a+w ."), но мне это не нравится.

Можно ли как-то принудительно установить для сценария глобальный файловый режим 0777 для всех созданных файлов?

Ответы [ 2 ]

6 голосов
/ 08 декабря 2010

Вы можете использовать встроенный umask для изменения режима файла по умолчанию. Например, umask 0 изменит режим по умолчанию на 0777.

НО, если файлы создаются с правами 0740, это, вероятно, означает, что CPAN :: Mini :: Inject явно устанавливает разрешения и umask может не оказывать никакого влияния.

В этом последнем случае вам придется погрузиться в исходный код модуля, найти место, где установлены разрешения, и посмотреть, можно ли его перегрузить в любом случае. Другой вариант - просто отправить запрос функции автору.

Кстати, модуль CPAN :: Mini принимает опцию dirmode для установки прав доступа к каталогу.

6 голосов
/ 08 декабря 2010

Взгляните на umask .

...