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

13

Eu 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 script de software PHP , então estou pensando em como definir corretamente as permissões ao descompactar os arquivos e como eles devem ser definidos?

    
por Brett 03.06.2013 / 12:07

3 respostas

10

O Zip não suporta salvar a propriedade / permissão do arquivo, tanto quanto eu sei. Você pode tentar configurar o umask para que o unzip crie os arquivos com essas permissões. Executar

umask 644

antes de unzip .

    
por 03.06.2013 / 12:14
14

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 em seu arquivo ZIP com:

unzip -Z

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

Então, se você mesmo fez o arquivo ZIP , verifique a ferramenta com a qual você criou o arquivo ZIP. Talvez exista uma maneira de definir permissões antes de compactar (como com o maven) ou preservar as permissões originais (mas isso só funcionaria em um sistema que suporte 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 a descompactação, por exemplo, com

chmod -R [permissions] [directory]

(*) Usamos esse recurso em combinação com o plug-in do assembly maven, onde você pode especificar o fileMode para os arquivos que entram no arquivo ZIP.

    
por 14.07.2015 / 16:36
1

Arquivos ZIP não armazenam permissões do Unix. Se você quiser retê-los, precisará arquivá-los usando tar (e possivelmente gzip do arquivo também).

Se você descompactar arquivos PHP e eles não tiverem permissões adequadas, é isso que você deve configurar como :

  • Os arquivos devem pertencer a alguma conta de usuário e grupo.
  • Arquivos e pastas devem ser legíveis (mas não graváveis) pelo processo do servidor da Web.
  • As pastas devem obter a permissão de execução, mas também não devem ser graváveis.

Por exemplo, se você descompactou seus arquivos para /var/www/foo e deseja que seu usuário ( whoami ) e grupo ( id -gn ):

find /var/www/foo -exec chown $(whoami):$(id -gn $(whoami)) {} \+
find /var/www/foo -type f -name '*.php' -exec chmod 644 {} \+
find /var/www/foo -type d -exec chmod 755 {} \+
    
por 03.06.2013 / 12:14