tar extrai com permissões inválidas - é um comportamento pretendido?

0

Recentemente, um arquivo tar.gz quebrou meu script. Etapas para reproduzir:

# this is a Python package distributed through PyPi
wget https://pypi.python.org/packages/b3/e8/0a829f58ff6068f94edf74877f2e093aae945482c96ade683ef3cafdfcad/EasyExtend-3.0.2-py2.5.tar.gz
# tar exist status is 0 (i.e. not a broken archive)
tar -zxvf EasyExtend-3.0.2-py2.5.tar.gz
ls -l EasyExtend-3.0.2-py2.5

Resultado:

ls: cannot access 'EasyExtend-3.0.2-py2.5/scripts': Permission denied
ls: cannot access 'EasyExtend-3.0.2-py2.5/setup.py': Permission denied
ls: cannot access 'EasyExtend-3.0.2-py2.5/LICENSE.txt': Permission denied
ls: cannot access 'EasyExtend-3.0.2-py2.5/PKG-INFO': Permission denied
ls: cannot access 'EasyExtend-3.0.2-py2.5/EasyExtend': Permission denied
ls: cannot access 'EasyExtend-3.0.2-py2.5/README.txt': Permission denied
total 0
d????????? ? ? ? ?            ? EasyExtend
-????????? ? ? ? ?            ? LICENSE.txt
-????????? ? ? ? ?            ? PKG-INFO
-????????? ? ? ? ?            ? README.txt
d????????? ? ? ? ?            ? scripts
-????????? ? ? ? ?            ? setup.py

Embora tudo tenha sido feito em uma conta que não é de superusuário, o umask não foi aplicado a arquivos recém-extraídos.

Pergunta : é um bug, um recurso ou um arquivo inválido?

Pergunta 2: existe uma maneira elegante de forçar permissões padrão em tais arquivos?

UPD : minha umask é 0002. sudo ls -l fornece as permissões corretas:

sudo ls -l EasyExtend-3.0.2-py2.5
total 28
drw-rw-r-- 7 username username 4096 Sep 19  2009 EasyExtend
-rw-rw-r-- 1 username username 1559 May 16  2006 LICENSE.txt
-rw-rw-r-- 1 username username  342 Sep 19  2009 PKG-INFO
-rw-rw-r-- 1 username username  585 Aug 13  2008 README.txt
drw-rw-r-- 2 username username 4096 Sep 19  2009 scripts
-rw-rw-r-- 1 username username 5296 Aug 15  2008 setup.py
    
por Marat 06.06.2017 / 20:33

1 resposta

1

Estas são permissões perfeitamente válidas, elas simplesmente não incluem deixar você lê-las :). Em termos de alcatrão, certamente é uma característica? Mas o arquivo soa bagunçado.

Re umask, eu diria que a explicação aqui está correto; Umask é puramente uma coisa subtrativa (ou um bitmask, se você for um programador). Não faz sentido dizer que umask não é aplicada com base na falta de bits de permissão.

Para conceder permissão executável para todos os diretórios, você pode usar convenientemente chmod -R a+X EasyExtend-3.0.2-py2.5

    
por 06.06.2017 / 21:21