我有一个应用程序需要使用该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 服务运行。
有没有办法只为这个特定的应用程序添加库搜索路径?
*我无权更改或破例