Linux 功能 (setcap) 似乎禁用了 LD_LIBRARY_PATH

标签 linux shared-libraries linux-capabilities

我使用LD_LIBRARY_PATH 为应用程序设置某个用户库的路径。但是,如果我在此应用程序上设置功能

sudo setcap CAP_NET_BIND_SERVICE=eip myapplication

然后 LD_LIBRARY_PATH 似乎被忽略了。当我启动程序时,Linux 提示找不到某个共享库。

我猜想有某种保护措施可以防止具有扩展权限的应用程序被劫持。有解决方法吗?

最佳答案

如其他答案中所述,此行为是有意的。如果您可以自己编译(或至少链接)应用程序,则有某种解决方法。然后你可以通过 -Wl,-rpath <yourDynamicLibraryPath>到 gcc 或 -rpath <yourDynamicLibraryPath>到 ld,你就不必指定 LD_LIBRARY_PATH完全执行。

关于Linux 功能 (setcap) 似乎禁用了 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843178/

相关文章:

c - Socket程序文件传输

linux - 通过JNI从其他共享库加载依赖的.so

linux - GCC 选项的 -shared 和 -Wl,-shared 的区别

docker - 为什么 cap_net_bind_service 在这个 nginx 嵌套 Docker 容器中不起作用?

Linux 内核初始化在加密文件系统中失败

linux - 操作系统漏洞示例

linux - bash 如何处理嵌套引号?

java - 从 OSGi bundle 调用 native 方法时出现 UnsatisfiedLinkError

c++ - 检查 Linux 功能以设置线程优先级