tarコマンドで作成されたディレクトリには777権限がありません。

tarコマンドで作成されたディレクトリには777権限がありません。

tarファイルの抽出中にエラーが発生しました。作成されたディレクトリは、777の代わりにchmod 666を使用して作成されました。したがって、そのフォルダ内では抽出されません。

これは私のコマンドです:

$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

私はこのモジュールをローカルで使用してファイルを圧縮します。

https://www.npmjs.com/package/tar

mkdirを使用してディレクトリを作成すると、777モードが提供されます。何が欠けていますか?

要求通り:

-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/

抽出して使用しています--strip 1

ベストアンサー1

出力に見られるように、tar tvアーカイブ自体に対する権限が破損しています。このアーカイブを生成したツールを制御できる場合は、それを修正するかバグを報告することをお勧めします。

破損したアーカイブからファイルを抽出する必要があるとします。この試み:

tar xzvf compress.tgz --delay-directory-restore
find dist -type d -exec chmod a+x {} \;

+(この場合は末尾は使用できません。固定サブディレクトリにドロップダウンできるchmodように、一度に1つのディレクトリに適用findする必要があるためです。) . 特殊文字ですが、代わりにfind... -execリテラルとして) に渡されます。

おすすめ記事