我正在尝试找到一种方法,让find
命令仅查找可能具有共享库依赖项的文件(这意味着它们在调用时会产生输出ldd
)。
为了找到一组文件的所有依赖项(二进制文件,文本文件,办公室文件等),我仔细检查了文件find . -type f
并调用ldd
了所有文件,然后解析输出。
我知道它find
具有-executable
测试选项,但是我不确定是否覆盖我所有的基础。
我知道ldd
输出类似于“程序未动态链接”,但我想为无法保存共享文件的文件保存命令。
ldd
转储Elf文件的依赖项。所有Elf文件都以bytes开头\x7F 'E' 'L' 'F'
,这可能是测试它们的最快方法。但是,我不知道find
读取文件内容的任何选项。find
主要只是查看目录列表中的元数据,例如文件名,模式位等。
但是,为了运行Elf文件,必须将其Execute位置1。如果您确实有一个没有执行位的Elf文件,则无法执行该文件,因此您可能并不在意。因此,如果您正在寻找一种加快搜索速度的快速方法,那么检查执行位应该是安全的。
我建议-perm /555
不要使用-executeable
,因为第一个检查是否有执行位,第二个检查当前用户是否可以执行它。
但是,除了提到像jofel这样的Python之类的动态语言外,许多C程序还将动态链接到PAM库(/lib/security/pam_*.so
)和libc“ nss”库(/lib/libnss*.so
)。如果要构建chroot或其他内容,则需要这些。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句