gpt4 book ai didi

linux - LD_PRELOAD 在特定文件夹上失败

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:21 30 4
gpt4 key购买 nike

在 Ubuntu 16.04 系统上,一直在尝试将 ld_preload 与自定义编译的 libpcap.so 一起使用并运行 tcpdump。

编译 libpcap (1.8.0)

./configure --prefix=`pwd`/inst
make install

然后当使用这个命令时,tcpdump 使用自定义的 libpcap

LD_PRELOAD=/home/user/tcpdump/inst/libpcap.so.1.8.0 /usr/sbin/tcpdump --version

输出是:

tcpdump version 4.7.4
libpcap version 1.8.0
OpenSSL 1.0.2g 1 Mar 2016

但是,当我将 libpcap 移动到另一个文件夹时,比如/usr/local/lib它不再起作用了。

我收到以下错误:

ERROR: ld.so: object '/usr/local/lib/libpcap.so.1.8.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored

据我所知,这是某种权限问题。但我 chown'ed 和 chmod'ed 我能想到的一切。我错过了什么?

这应该让您了解可能出了什么问题。

编辑:该问题似乎特定于某些目录和 tcpdump 本身。LD_PRELOAD 在/bin/true 上时的 strace 输出

LD_PRELOAD=/usr/local/lib/libpcap.so.1.8.0 strace -fF  /bin/true 2>&1 | grep libp
open("/usr/local/lib/libpcap.so.1.8.0", O_RDONLY|O_CLOEXEC) = 3

这是 tcpdump 上的 strace 输出

LD_PRELOAD=/usr/local/lib/libpcap.so.1.8.0 strace -fF  /usr/sbin/tcpdump 2>&1 | grep libp
open("/usr/local/lib/libpcap.so.1.8.0", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
writev(2, [{"ERROR: ld.so: object '", 22}, {"/usr/local/lib/libpcap.so.1.8.0", 31}, {"' from ", 7}, {"LD_PRELOAD", 10}, {" cannot be preloaded (", 22}, {"cannot open shared object file", 30}, {"): ignored.\n", 12}], 7ERROR: ld.so: object '/usr/local/lib/libpcap.so.1.8.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
open("/usr/lib/x86_64-linux-gnu/libpcap.so.0.8", O_RDONLY|O_CLOEXEC) = 3

两个命令都以 sudo 运行

最佳答案

查找文件似乎确实有问题(权限或路径不正确)。我看到您提到您已将文件移动到/usr/local/lib,但我看到错误消息为/usr/local/libpcap.so.1.8.0。也许是错字?

如果没有,请运行

LD_PRELOAD=/usr/local/lib/libpcap.so.1.8.0 strace -fF -e open /bin/true 2>&1 | grep libp

另一件需要确认的事情是/usr/local/lib 位于您的链接器的标准路径中(如果您不想使用 LD_PRELOAD,那就是):

ldconfig -v 2>/dev/null | grep -v ^$'\t'

关于linux - LD_PRELOAD 在特定文件夹上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709497/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com