잘못된 권한이 있는 tar 추출 - 의도적인 동작인가요?

잘못된 권한이 있는 tar 추출 - 의도적인 동작인가요?

최근 tar.gz아카이브로 인해 내 스크립트가 손상되었습니다. 재현 단계:

# 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 exit 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

결과:

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

슈퍼유저가 아닌 계정으로 모든 작업을 수행했음에도 새로 추출된 파일에는 umask가 적용되지 않았습니다.

질문:이것은 버그입니까, 기능입니까, 아니면 유효하지 않은 저장입니까?

질문2: 그러한 파일에 대해 기본 권한을 강제하는 우아한 방법이 있습니까?

UPD:내 umask는 0002입니다. sudo ls -l올바른 권한을 부여하십시오.

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

답변1

이는 완벽하게 유효한 권한이지만 읽을 수 있는 권한은 포함되지 않습니다. :). 확실히 이것은 tar에 관한 한 기능입니까? 그러나 아카이브는 혼란스럽게 들립니다.

다시 umask, 설명을 가정하겠습니다여기맞습니다. umask는 순전히 빼기입니다(프로그래머인 경우 비트마스크). 권한 비트가 누락되어 umask가 적용되지 않는다고 말하는 것은 의미가 없습니다.

모든 디렉토리에 실행 권한을 부여하려면 다음을 편리하게 사용할 수 있습니다.chmod -R a+X EasyExtend-3.0.2-py2.5

관련 정보