【发布时间】:2021-11-01 02:34:24
【问题描述】:
一点背景:
我有一个需要管理员权限才能运行的可执行文件。此可执行文件还具有对自定义动态库的运行时依赖性。该动态库必须从自定义路径加载(而不是从/usr/lib 加载,因为存在其他库可能引用的类似旧版本的可执行文件),可执行文件指的是在编译时设置-RPATH可执行文件。
当我使用sudo 命令从命令行运行该可执行文件时,一切正常。
现在,这个可执行文件是来自另一个非 root 进程的 fork/exec,为此我将可执行文件的文件权限 chmod 设置为 4755,以便可执行文件始终以 root 身份运行。
现在的问题是,当我将文件权限chmod设置为4755时,系统不再尊重-RPATH,我的可执行文件默认搜索/usr/lib的lib路径,超过-RPATH。
问题:如何强制我的可执行文件优先使用-RPATH 而不是/usr/lib,而不管我的文件权限(或至少chmod 4755)中有什么?
【问题讨论】: