Berechtigungs-Tar-Extraktion in eine NFS-Freigabe aus einem Perl-Skript

Berechtigungs-Tar-Extraktion in eine NFS-Freigabe aus einem Perl-Skript

Als Teil des Installationsvorgangs einer Software verwende ich:

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

in einem Perl-Skript (ich verwende qx($command)oder system($command), beides ist möglich. Alles läuft gut und der Tarball wird im / meines Systems installiert, aber wenn ich dasselbe mit einer NFS-Freigabe mache:

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

Dann passiert Folgendes:

  • Wenn ich dies in der Eingabeaufforderung mache, läuft alles reibungslos (d. h. alle meine Berechtigungen, die ich im Tarball gespeichert habe, sind noch vorhanden).
  • Wenn ich dies innerhalb des Perl-Skripts (oder auch eines Shell-Skripts) mache, gelange ich entweder mit „ qx($command)oder“ system($command)in die Situation, dass die Berechtigungen geändert werden (was beispielsweise ausführbar war, ist nicht mehr ausführbar).

Ich vermute, dass dies mit umask zu tun hat (was auf meinem System 022 ist), und normalerweise sollte das Flag -p das beheben, aber in diesem Fall funktioniert es trotzdem nicht. Hat jemand Vorschläge für mich (außer, die Manpage zu lesen :-))?

Ich habe auch etwas wie versucht system("umask xyz; $command"), aber (wahrscheinlich, weil $commandein Fork meines Prozesses verwendet wird, der den erhält umask 022): auch ohne Erfolg.

Bearbeiten: Einige der Antworten deuten darauf hin, dass ich umask von Perl verwenden sollte. Ich denke, ein umask 000 wird es tun (aber ich werde das morgen früh sehen, wenn ich am System bin). umask hat jedoch eine andere Wirkung auf Dateien und Verzeichnisse. Gibt es eine Möglichkeit, umask während der Ausführung meines Programms vollständig zu deaktivieren (trotz tausender Sicherheitsgründe, die dagegen sprechen).

verwandte Informationen