Décompresser le fichier tout en obtenant les autorisations correctes?

17

J'ai décompressé un fichier sur mon serveur en utilisant:

unzip filename

Cependant, cela semble avoir causé tous les fichiers ayant des autorisations de propriétaire / groupe de 0 0.

Les fichiers que j'ai téléchargés étaient un PHPscript logiciel, donc je me demande comment définir correctement les autorisations lors de la décompression des fichiers et à quoi ils doivent être définis?

Brett
la source

Réponses:

10

Pour autant que je sache, Zip ne prend pas en charge l'enregistrement de la propriété / autorisation du fichier. Vous pouvez essayer de définir le umask afin que la décompression crée les fichiers avec ces autorisations. Courir

umask 644

avant unzip.

lawl0r
la source
Il était en fait zippé avec fenêtre, désolé.
Brett
1
Peu importe qu'il ait été créé sur Windows ou * nix. Zip ne prend toujours pas en charge les autorisations de fichiers Unix. Peu importe où il a été créé.
lawl0r
Ouais, je sais .... mais vous avez dit que je pouvais essayer de régler le umaskafin qu'il crée le zip avec ces autorisations; mais je ne pense pas que je puisse faire ça sur Windows?
Brett
Avant de décompresser
lawl0r
8
@ lawl0r oui c'est le cas. Utilisez l'option -Z pour les voir.
OrangeDog
20

En fait, certaines réponses ici ne sont pas correctes. Les fichiers ZIP peuvent également avoir des autorisations de fichier. (*) Vous pouvez lister les permissions des fichiers dans votre fichier ZIP avec:

unzip -Z

Peut-être que l'outil que vous avez utilisé pour créer le fichier ZIP n'a pas stocké les autorisations ou ne les a pas stockées correctement.

Donc, si vous avez créé le fichier ZIP vous - même , vérifiez l'outil avec lequel vous avez créé le fichier ZIP. Il existe peut-être un moyen de définir des autorisations avant de zipper (comme avec maven), ou il conserve les autorisations d'origine (mais cela ne fonctionnerait que sur un système qui prend en charge les autorisations - c'est-à-dire pas sur Windows).

Si vous n'avez pas créé le fichier ZIP vous - même , votre seule chance est de définir les autorisations correctes après la décompression, par exemple avec

chmod -R [permissions] [directory]

(*) Nous utilisons cette fonctionnalité en combinaison avec le plugin d'assemblage maven, où vous pouvez spécifier le FileMode pour les fichiers qui vont dans le fichier ZIP.

David Tanzer
la source
1
je pense que vous avez raison, mais la façon dont vous proposez la réponse n'est pas juste. vous devriez vous concentrer pour fournir une bonne réponse que critiquer dans une nouvelle ...
Francisco Tapia
2
@FranciscoTapia J'ai mis à jour ma réponse (avec certaines choses que l'on pourrait essayer), mais je vais laisser entendre que d'autres réponses sont incorrectes. Je pense que c'est important.
David Tanzer
1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.sous Windows / mingw. Je n'ai actuellement pas accès à ma box Linux, mais là -Z fonctionne aussi. Quoi qu'il en soit, merci pour l'astuce!
David Tanzer
3
@David Tanzer , votre réponse est la meilleure même si elle n'est pas acceptée. En effet, l'origine d'une archive (par exemple Windows, Linux, etc.) est importante. J'ai testé sur Linux ( Zip 3.0 , UnZip 6.00 ). Une fois qu'un fichier est placé dans une archive, les autorisations sont enregistrées. Et ils sont en cours de restauration sur le fichier extrait (par exemple lorsque le fichier est extrait sur Linux). De toute évidence, les autorisations ne seront pas appliquées lors de l'extraction sur Windows box. Il sera vraiment cool de voir dans Décompressez un commutateur spécifique (comme le goudron de --no-same-permissions) qui ne préserve pas les autorisations et respecte umask lors de l' extraction.
flaz14
1
@DanielF Les autorisations ne sont là que si le programme de création les y a placées, donc si votre archive a été créée sous Windows, zipinfo/ unzip -Zne peut que deviner. Pour voir si les autorisations sont là, utilisez zipinfo -v/ unzip -Zvet recherchez «attributs de fichiers externes non MSDOS»; les deux octets les plus significatifs sont les permissions UNIX (en hexadécimal, pas octal!) à condition que le «système de fichiers ou système d'exploitation d'origine» soit UNIX.
Alex Shpilkin