tar comando criar diretório sem permissão 777

0

Ocorreu um erro ao extrair um arquivo tar, o diretório criado é criado com o chmod 666 em vez de 777. Portanto, ele não será extraído dentro desta pasta.

Aqui está o meu comando:

$umask 000 && tar -xvzf compress.tgz
tar: dist/assets: Cannot mkdir: Permission denied
tar: dist/assets/favicon.ico: Cannot open: Permission denied

$ls -ll
drw-rw-rw- 2 user grp    4096 Mar 14 16:43 assets

Eu usei este módulo no local para compactar o arquivo:

link

Quando eu crio um diretório com o mkdir ele dá o modo 777, o que me falta?

Conforme solicitado:

-bash-4.2$ tar tzvf compress.tgz
drw-rw-rw- 0/0               0 2018-03-15 12:17 dist/
-rw-rw-rw- 0/0           13117 2018-03-15 12:17 dist/3rdpartylicenses.txt
drw-rw-rw- 0/0               0 2018-03-15 12:17 dist/assets/

Eu uso --strip 1 para extrair.

    
por Frennetix 14.03.2018 / 17:18

2 respostas

2

Como você pode ver na saída de tar tv , as permissões no arquivo são quebradas. Se você tiver algum controle sobre a ferramenta que criou este arquivo, recomendo enfaticamente que você o corrija ou relate um bug.

Eu suponho que você ainda precisa extrair os arquivos do arquivo quebrado. Tente isto:

tar xzvf compress.tgz --delay-directory-restore
find dist -type d -exec chmod a+x {} \;

(Não podemos usar um + à direita neste exemplo porque o chmod deve ser aplicado em um diretório no momento, para que find possa descer nos subdiretórios fixos. O ponto-e-vírgula é prefixado com uma barra invertida para que ele não é tratado pelo shell como um caractere especial, mas é passado para o find... -exec como um literal.)

    
por 15.03.2018 / 14:13
0

Com star (de schily-tools ), você pode extraí-lo com:

star xf file.tgz -no-p -find -type d -chmod a+x

Para adicionar a permissão de execução (para todos) aos diretórios extraídos para corrigir essas permissões falsas no arquivo morto.

Com -no-p , o umask também é aplicado mesmo se executado como raiz, o que pressupõe que seu umask seja pelo menos 002 também corrige essas permissões de gravação muito grandes (observe que o umask tem precedência sobre o -chmod ).

Observe que nenhuma implementação% GNU tar , bsdtar nem star de tar no meu teste tem qualquer problema ao extrair um arquivo com essas permissões quebradas. Provavelmente aqui, você está tentando extraí-lo enquanto já existia já um diretório dist sem permissão de pesquisa (porque, por exemplo, você extraiu um arquivo semelhante com permissões quebradas similarmente).

Você precisa corrigir essas permissões antes de extrair o arquivo.

    
por 16.03.2018 / 11:44