Linux
tar 命令創建沒有 777 權限的目錄
我在提取 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
作為文字傳遞給。)