Entpacken Sie die Datei, während Sie die richtigen Berechtigungen erhalten?

17

Ich habe eine Datei auf meinem Server entpackt mit:

unzip filename

Dies scheint jedoch dazu geführt zu haben, dass alle Dateien Eigentümer- / Gruppenberechtigungen von haben 0 0.

Die Dateien, die ich hochgeladen habe, waren ein PHPSoftwareskript. Daher frage ich mich, wie ich die Berechtigungen beim Entpacken der Dateien richtig einstelle und auf welche Werte sie eingestellt werden sollten.

Brett
quelle

Antworten:

10

Soweit ich weiß, unterstützt Zip das Speichern von Dateibesitz / -berechtigungen nicht. Sie können versuchen, die umask so einzustellen, dass unzip die Dateien mit diesen Berechtigungen erstellt. Lauf

umask 644

vorher unzip.

lawl0r
quelle
Es wurde tatsächlich mit Fenster gezippt, sorry.
Brett
1
Es spielt keine Rolle, ob es unter Windows oder * nix erstellt wurde. Zip unterstützt immer noch keine Unix-Dateiberechtigungen. Egal wo es erstellt wurde.
Lawl0r
Ja, ich weiß ... aber Sie sagten, ich könnte versuchen, das umaskso einzustellen, dass die Zip mit diesen Berechtigungen erstellt wird. Aber glaube ich nicht, dass ich das unter Windows machen kann?
Brett
Vor dem Entpacken
lawl0r
8
@ lawl0r ja das tut es. Verwenden Sie die Option -Z, um sie anzuzeigen.
OrangeDog
20

Tatsächlich sind einige Antworten hier nicht richtig. ZIP-Dateien können auch Dateiberechtigungen haben. (*) Sie können die Berechtigungen der Dateien in Ihrer ZIP-Datei auflisten mit:

unzip -Z

Möglicherweise hat das Tool, mit dem Sie die ZIP-Datei erstellt haben, die Berechtigungen nicht oder nicht richtig gespeichert.

Also, wenn Sie die ZIP - Datei selbst gemacht , überprüfen Sie das Werkzeug , das Sie mit der ZIP - Datei gemacht. Möglicherweise gibt es eine Möglichkeit, Berechtigungen vor dem Zippen festzulegen (wie bei maven), oder es werden die ursprünglichen Berechtigungen beibehalten (dies funktioniert jedoch nur auf einem System, das Berechtigungen unterstützt - dh nicht unter Windows).

Wenn Sie die ZIP-Datei nicht selbst erstellt haben , besteht Ihre einzige Chance darin, die Berechtigungen nach dem Entpacken korrekt festzulegen, z. B. mit

chmod -R [permissions] [directory]

(*) Wir verwenden diese Funktion in Kombination mit dem Maven-Assembly-Plugin, in dem Sie den Dateimodus für Dateien angeben können, die in die ZIP-Datei aufgenommen werden.

David Tanzer
quelle
1
Ich denke, Sie haben Recht, aber die Art und Weise, wie Sie die Antwort vorschlagen, stimmt nicht. Sie sollten sich darauf konzentrieren, eine gute Antwort zu geben, als in einer neuen zu kritisieren ...
Francisco Tapia
2
@FranciscoTapia Ich habe meine Antwort aktualisiert (mit einigen Dingen, die man ausprobieren könnte), aber ich werde den Hinweis hinterlassen, dass andere Antworten dort falsch sind. Ich denke es ist wichtig.
David Tanzer
1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.unter Windows / mingw. Ich habe momentan keinen Zugriff auf meine Linux-Box, aber dort funktioniert -Z auch. Trotzdem danke für den Hinweis!
David Tanzer
3
@ David Tanzer , Ihre Antwort ist die beste, auch wenn sie nicht akzeptiert wird. In der Tat ist die Herkunft eines Archivs (z. B. Windows, Linux usw.) wichtig. Ich habe es unter Linux getestet ( Zip 3.0 , UnZip 6.00 ). Sobald eine Datei in ein Archiv gestellt wird, werden die Berechtigungen gespeichert. Und sie werden in der extrahierten Datei wiederhergestellt (z. B. wenn die Datei unter Linux extrahiert wird). Offensichtlich werden die Berechtigungen beim Extrahieren unter Windows nicht angewendet. Es wird cool sein , wirklich zu sehen , in unzip einem bestimmten Schalter (wie Teer ‚s --no-same-permissions) , die keine Berechtigungen erhalten und respektiert umask beim Extrahieren.
Flaz14
1
@DanielF Berechtigungen sind nur da , wenn das Erstellen von Programm sie dort gesetzt, so dass , wenn Ihr Archiv unter Windows erstellt wurde, zipinfo/ unzip -Zkann nur vermuten. Um herauszufinden, ob die Berechtigungen vorhanden sind, verwenden Sie zipinfo -v/ unzip -Zvund suchen Sie nach "Nicht-MSDOS-Attributen für externe Dateien". Die beiden höchstwertigen Bytes sind die UNIX-Berechtigungen (in hexadezimaler Schreibweise, nicht in oktaler Schreibweise!), sofern das „Dateisystem oder Betriebssystem des Ursprungs“ UNIX ist.
Alex Shpilkin