Linux
如何查找任何執行檔或庫文件
假設有人為您提供了一個 tarball,說它是原始碼,僅此而已。您要確保這是真的,並且目錄中沒有包含病毒的執行檔或庫。如何使用 find 命令來執行此操作?
謝謝。
您可以在安全的地方(如掛載的文件系統
noexec
)解壓縮文件並檢查生成的目錄中的二進製文件。該file
命令可以告訴您文件是否為文本、原始碼、二進製文件等。[root@xt ~]# file ./packages/Digest-MD5-2.33/t/badfile.t ./packages/Digest-MD5-2.33/t/badfile.t: ASCII text [root@xt ~]# file ./packages/Digest-MD5-2.33/MD5.pm ./packages/Digest-MD5-2.33/MD5.pm: Perl5 module source text [root@xt ~]# file ./packages/rrdtool-1.0.50/src/gdpng.o ./packages/rrdtool-1.0.50/src/gdpng.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
如下所示,您可以在其中過濾 ELF 執行檔:
find . -type f -exec file {} + | grep ELF
輸出將是:
[root@xt ~]# find . -type f -exec file {} + | grep ELF ./packages/rrdtool-1.0.50/gd1.3/gdfontl.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped ./packages/rrdtool-1.0.50/gd1.3/gdfontmb.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped ./packages/rrdtool-1.0.50/gd1.3/gdlucidan10l2.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped ./packages/rrdtool-1.0.50/gd1.3/gdlucidab14.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped ./packages/rrdtool-1.0.50/gd1.3/gdlucidan10.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped