如何克服 tar:从成员名称中删除前导 `/'

Ary*_*rya 4 linux tar

当您与该命令进行比较时,我的命令完全不同

我正在尝试在 linux 中运行以下命令

Command: tar zcvf ABCD.tar.gz -T Files.txt
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息

Error: tar: Removing leading `/' from member names
Run Code Online (Sandbox Code Playgroud)

我尝试了以下命令,但仍然收到相同的错误消息(/sf/ask/2914888861/ -tar-sta )

tar -C / -zcvf ABCD.tar.gz -T Files.txt
Run Code Online (Sandbox Code Playgroud)

Fra*_*iat 8

这是一个特点!

如果/在压缩和提取期间压缩文件中包含斜杠前缀,则意味着攻击者只需说服您提取文件即可覆盖敏感文件(如/etc/shadow)。

它实际上不是错误消息,而是信息。

如果您真的想取消它,请将目录更改为父目录并使用相对名称:

cd /
tar -zcvf path/to/files
Run Code Online (Sandbox Code Playgroud)

而不是

tar -zcvf /path/to/files
Run Code Online (Sandbox Code Playgroud)

在您的情况下,我认为 中的文件名-T Files.txt是绝对位置。


ilk*_*chu 5

在 GNU tar 中,如果你想在文件名前面保留斜线,你需要的选项是:

   -P, --absolute-names
          Don't strip leading slashes from file names when creating archives.
Run Code Online (Sandbox Code Playgroud)

所以,tar zcvf ABCD.tar.gz -P -T Files.txt

提取存档时可能会删除斜杠,除非您当然-P也在那里使用。

另一方面,如果您想删除斜杠,但又不想 tar 抱怨,则需要执行类似sed s,^/,, files.txt | tar czf foo.tar.gz -C / -T -.