Linux

tar 命令創建沒有 777 權限的目錄

  • May 31, 2018

我在提取 tar 文件時遇到錯誤,創建的目錄是使用 chmod 666 而不是 777 創建的。因此它不會在此文件夾中提取。

這是我的命令:

$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用來提取。

從輸出中可以看出,tar tv存檔本身的權限已損壞。如果您對創建此存檔的工具有任何控制權,我強烈建議您修復它或報告錯誤。

我假設您仍然需要從損壞的存檔中提取文件。試試這個:

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

(我們不能+在這種情況下使用尾隨,因為chmod必須一次應用一個目錄,以便find可以下降到固定的子目錄。分號以反斜杠為前綴,因此 shell 不會將其視為特殊字元,但是而是將其find... -exec作為文字傳遞給。)

引用自:https://unix.stackexchange.com/questions/430228