代码之家  ›  专栏  ›  技术社区  ›  Avinash

AIX libpath和粘性位集

aix
  •  2
  • Avinash  · 技术社区  · 14 年前

    我有以正常方式运行良好的可执行文件。它加载一个共享库。我在启动该exe之前设置libpath。 现在,如果我将exe的权限更改为“由根拥有”并设置“粘性位”,那么它将无法加载共享库。 如果我在/usr/lib中创建到共享库的链接,一切都可以正常工作。

    这个问题的任何原因和解决方法。

    1 回复  |  直到 14 年前
        1
  •  6
  •   wkl    14 年前

    这是一个安全功能- LIBPATH 当运行具有粘性位集的内容时,不会使用来自用户环境的。如果它允许您使用用户集 伦敦银行同业拆借利率 在设置了suid的可执行文件上,可能会有人加载恶意库以破坏系统。

    还要注意,Linux系统中也存在这个安全特性。- LD_LIBRARY_PATH 当运行粘性位可执行文件时,将忽略来自用户环境的。

    可能的解决方案

    1-一种解决方案是授予用户 sudo 执行该命令的特权,在这种情况下,您可以执行类似…

    sudo LIBPATH="..." executable

    2-另一个解决方案是创建一个shell脚本 伦敦银行同业拆借利率 然后执行可执行文件,在shell脚本上设置粘性位,如下所示…

    #/bin/sh
    
    LIBPATH="/whatever/path" /path/to/executable