Permisos de extracción de tar para compartir nfs desde un script Perl

Permisos de extracción de tar para compartir nfs desde un script Perl

Como parte del procedimiento de instalación de un software, utilizo:

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

dentro de un script Perl (yo uso qx($command)o system($command), cualquiera de los dos servirá. Todo va bien y la bola tar se instala en el directorio / de mi sistema, pero cuando hago lo mismo en un recurso compartido nfs:

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

Entonces ocurre lo siguiente:

  • Cuando hago esto cuando se me solicita, todo va bien (es decir, todos los permisos que guardé en la bola de alquitrán todavía están vigentes).
  • Cuando hago esto desde el script Perl (o un script de Shell, para el caso), me qx($command)deja system($command)en la situación en la que se cambian los permisos (por ejemplo, lo que era ejecutable, ya no es ejecutable).

Sospecho que esto tiene que ver con umask (que es 022 en mi sistema), y normalmente el indicador -p debería encargarse de eso, pero todavía no es divertido en este caso. ¿Alguien tiene alguna sugerencia para mí (aparte de leer la página de manual :-))?

También probé algo como system("umask xyz; $command"), pero (probablemente porque $commandestá usando una bifurcación de mi proceso, que obtiene umask 022): tampoco me alegro.

Editar: algunas de las respuestas indican que debería usar umask de Perl. Creo que una umask 000 funcionará (pero veré esto en la mañana, cuando esté en el sistema). Sin embargo, umask tiene un efecto diferente en archivos y directorios. ¿Hay alguna manera de desactivar umask por completo durante la ejecución de mi programa (a pesar de mil razones de seguridad en contra).

información relacionada