1

В рамках процедуры установки программного обеспечения я использую:

curl -s <url-to-targz> | tar -p -x -z -C /

внутри скрипта Perl (я использую qx($command) или system($command) .Все идет хорошо, и tar шар установлен в / моей системы, но когда я делаю то же самое с общим ресурсом nfs:

curl -s <url-to-targz> | tar -p -x -z -C /my-nfs/opt

Затем происходит следующее:

  • Когда я делаю это по приглашению, все идет хорошо (т.е. все мои разрешения, которые я сохранил в tar-бале, все еще остаются в силе).
  • Когда я делаю это, отказываясь от сценария Perl (или, в этом случае, сценария оболочки), либо qx($command) либо system($command) оставляют меня в ситуации, когда меняются права доступа (например, что было исполняемым), больше не исполняется).

Я подозреваю, что это связано с umask (в моей системе это 022), и обычно флаг -p должен об этом позаботиться, но в этом случае радости все равно нет. У кого-нибудь есть какие-либо предложения для меня (кроме чтения man-страницы :-))?

Я также пробовал что-то вроде system("umask xyz; $command") , но (возможно, потому что команда $command использует форк моего процесса, который получает umask 022): тоже не радость.

Изменить: Некоторые ответы указывают, что я должен использовать Umask из Perl. Я думаю, что umask 000 добьется цели (но я увижу это утром, когда я нахожусь в системе. Хотя umask по-разному влияет на файлы и каталоги. Есть ли способ полностью отключить umask во время работы моего програна (несмотря на тысячу соображений безопасности против него).

0