最近の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