Extração de tar de permissões para o compartilhamento nfs de um script Perl

1

Como parte de um procedimento de instalação de um software, eu uso:

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

dentro de um script Perl (eu uso qx($command) ou system($command) , ou vou fazer.Tudo vai bem, e a bola tar é instalada no / do meu sistema, mas quando eu faço a mesma coisa em um compartilhamento nfs :

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

Em seguida, ocorre o seguinte:

  • Quando faço isso no prompt, isso vai bem (ou seja, todas as minhas permissões que salvei na tarball ainda estão no lugar).
  • Quando faço isso a partir do script Perl (ou de um shell script), qx($command) ou system($command) me deixa com a situação em que as permissões são alteradas (por exemplo, o que era executável, não é mais executável).

Eu estou suspeitando que isso tem a ver com umask (que é 022 no meu sistema), e normalmente o sinalizador -p deve cuidar disso, mas ainda não há alegria neste caso. Alguém tem alguma sugestão para mim (além de ler a manpage: -))?

Eu também tentei algo como system("umask xyz; $command") , mas (provavelmente porque o $command está usando um fork do meu processo, que recebe umask 022 ): também não há alegria.

Edit: Algumas das respostas indicam que eu deveria usar umask de Perl. Eu acho que uma umask 000 vai fazer o truque (mas eu vou ver isso de manhã, quando eu estou no sistema. Umask, porém, tem um efeito diferente em arquivos e diretórios. Existe uma maneira de desativar umask inteiramente durante a execução de meu progran (apesar de mil razões de segurança contra isso).

    
por Willem 08.06.2013 / 17:18

0 respostas