Descompactando o arquivo enquanto obtém as permissões corretas?

17

Descompactei um arquivo no meu servidor usando:

unzip filename

No entanto, isso parece ter causado todos os arquivos com permissões de proprietário / grupo de 0 0.

Os arquivos que eu enviei eram um PHPscript de software, então, eu estou me perguntando como defino as permissões corretamente ao descompactar os arquivos e como eles devem ser definidos.

Brett
fonte

Respostas:

10

O Zip não suporta salvar a propriedade / permissão do arquivo, tanto quanto eu sei. Você pode tentar definir o umask para descompactar os arquivos com essas permissões. Corre

umask 644

antes unzip.

lawl0r
fonte
Na verdade, foi fechado com janela, desculpe.
Brett
1
Não importa se ele foi criado no Windows ou no * nix. O zip ainda não suporta permissões de arquivo unix. Independentemente de onde foi criado.
lawl0r
Sim, eu sei .... mas você disse que eu poderia tentar definir o arquivo umaskpara criar o zip com essas permissões; mas não acho que posso fazer isso no Windows?
Brett
Antes unziping
lawl0r
8
@ lawl0r sim, sim. Use a opção -Z para vê-los.
27415 OrangeDog
20

Na verdade, algumas respostas aqui não estão corretas. Arquivos ZIP também podem ter permissões de arquivo. (*) Você pode listar as permissões dos arquivos no seu arquivo ZIP com:

unzip -Z

Talvez a ferramenta que você usou para criar o arquivo ZIP não armazene as permissões ou não as armazene corretamente.

Portanto, se você mesmo criou o arquivo ZIP , verifique a ferramenta com a qual ele foi criado. Talvez haja uma maneira de definir permissões antes de compactar (como no maven) ou preservar as permissões originais (mas isso funcionaria apenas em um sistema que suporta permissões - ou seja, não no Windows).

Se você não criou o arquivo ZIP , sua única chance é definir as permissões corretas após descompactar, por exemplo, com

chmod -R [permissions] [directory]

(*) Utilizamos esse recurso em combinação com o plug-in maven assembly, onde é possível especificar o fileMode para os arquivos que entram no arquivo ZIP.

David Tanzer
fonte
1
Eu acho que você está certo, mas a maneira como você propõe a resposta não está certa. você deve se concentrar para fornecer uma boa resposta de criticar em um novo ...
Francisco Tapia
2
@FranciscoTapia Atualizei minha resposta (com algumas coisas que alguém poderia tentar), mas deixarei a dica de que outras respostas estão incorretas lá. Eu acho importante.
David Tanzer
1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.no Windows / mingw. Atualmente, não tenho acesso à minha caixa Linux, mas o Z também funciona. De qualquer forma, obrigado pela dica!
David Tanzer
3
@ David Tanzer , sua resposta é a melhor, mesmo que não seja aceita. De fato, a origem de um arquivo (por exemplo, Windows, Linux, etc) é importante. Eu testei no Linux ( Zip 3.0 , UnZip 6.00 ). Depois que um arquivo é colocado em um arquivo, as permissões são salvas. E eles estão sendo restaurados no arquivo extraído (por exemplo, quando o arquivo é extraído no Linux). Obviamente, as permissões não serão aplicadas ao extrair na caixa do Windows. Vai ser muito legal ver na descompactação um interruptor específico (como tar 's --no-same-permissions) que não preservar as permissões e respeita umask durante a extração.
flaz14
1
@DanielF Permissão estão lá apenas se o programa de criação de colocá-los lá, por isso, se o seu arquivo foi criado no Windows, zipinfo/ unzip -Zsó podemos adivinhar. Para verificar se as permissões existem, use zipinfo -v/ unzip -Zve procure por "atributos de arquivo externo que não sejam do MSDOS"; os dois bytes mais significativos são as permissões UNIX (em hexadecimal, não octal!), desde que o “sistema de arquivos ou sistema operacional de origem” seja UNIX.
Alex Shpilkin