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 / 18: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 / 15: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 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 / 12:44