無効な権限を持つ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に関する1つの機能ですか?しかし、アーカイブは混乱して聞こえます。

再びumask、説明を仮定しますここそうですね。 umaskは純粋に減算です(プログラマの場合はビットマスク)。許可ビットが欠落しており、umaskが適用されないと言うことは意味がありません。

すべてのディレクトリに実行権限を付与するには、以下を便利に使用できます。chmod -R a+X EasyExtend-3.0.2-py2.5

おすすめ記事