Filenames

無論用於提取文件的命令如何,tarball 都可以更改文件提取到的位置,這是真的嗎?

  • August 30, 2018

我有一位同事說您需要小心提取 tarball,因為它們可以進行您不知道的更改。我一直認為 tarball 只是壓縮文件的層次結構,所以如果你將它解壓縮到 /tmp/example/ 它不可能將文件偷偷溜進 /etc/ 或類似的東西。

不同的 tar 實用程序在這方面的行為不同,所以要小心。對於您未創建的 tar 文件,請務必在解壓縮之前列出目錄。

Solaris 焦油

命名文件從 tarfile 中提取並寫入 tarfile 中指定的相對於目前目錄的目錄。使用要提取的文件和目錄的相對路徑名。

tar 存檔中包含的絕對路徑名使用絕對路徑名解壓縮,也就是說,前導正斜杠 (/) 不會被剝離。

對於具有完整(絕對)路徑名的 tar 文件,例如:

/tmp/real-file
/etc/sneaky-file-here

…如果你提取這樣的文件,你最終會得到這兩個文件。

GNU焦油

預設情況下,GNU tar 會/在輸入或輸出中刪除前導,並抱怨包含..組件的文件名。有一個選項可以關閉此行為:

--absolute-names

-P

不要從文件名中去除前導斜杠,並允許文件名包含..文件名組件。

…如果您使用 GNU tar 提取完整路徑的 tar 文件而不使用該-P選項,它會告訴您:

/tar:從成員名稱中刪除前導

並將文件提取到目前目錄的子目錄中。

AIX 焦油

對此一無所知,它的行為與 Solaris tar 一樣——它將創建和提取具有完整/絕對路徑名的 tar 文件。

HP-UX tar:( 歡迎更好的線上參考)

警告

無法將絕對路徑名恢復到相對位置。

OpenBSD 焦油

-P

不要/從路徑名中去除前導斜杠 ( )。預設是去除前導斜杠。

-P在 macOS、FreeBSD 和 NetBSD 上也實現了一些選項tar,它們具有相同的語義,此外,tarFreeBSD和 macOS 上,將“拒絕提取路徑名包含..或目標目錄將被符號連結更改的存檔條目”而沒有-P.

schilytools 明星

-/

提取檔案時,不要從文件名中去除前導斜杠。包含絕對路徑名的 Tar 檔案通常是個壞主意。對於其他 tar 實現,它們可能永遠不會在不破壞現有文件的情況下被提取。出於這個原因,預設情況下,在提取模式下會從文件名中去除前導斜杠。

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