如何向具有某项功能运行的可执行文件添加库搜索路径?

如何向具有某项功能运行的可执行文件添加库搜索路径?

我有一个应用程序需要使用该CAP_NET_BIND_SERVICE功能运行,以便它可以打开低端口(对于 TCP/Modbus 服务器,端口号为 502)。它捆绑了一组需要动态链接的 .so 文件,包括固定版本的系统库(libxml.so 和 libz.so)。通常,我会设置LD_LIBRARY_PATH,但是当可执行文件具有功能时,环境变量将被忽略(请参阅“安全执行模式”中的ld.so(8))。

我尝试了以下方法:

  • 将搜索路径添加到/etc/ld.so.conf.d目录会破坏任何依赖于系统库的内容,这些系统库现在已被供应商库所掩盖
  • 根据我们的安全策略,不允许设置防火墙规则以将端口 502 重定向到高端口、更改配置的侦听端口以及禁用该功能*
  • 我们与供应商签订的许可证不允许我们修改其编译的可执行文件,因此chrpath我们别无选择
  • 出于安全原因,不建议以 root 身份运行,并且会生成 root 拥有的日志文件(我们希望避免这种情况)

操作系统是 RHEL 7,作为具有自定义单元文件的 systemd 服务运行。

有没有办法只为这个特定的应用程序添加库搜索路径?

*我无权更改或破例

相关内容