setuid 可执行文件的环境设置

Kar*_*son 6 setuid environment-variables dynamic-linking

在运行setuid启用位的程序时,我观察到一个奇怪的行为。

程序foobar设置了 setuid 位的用户拥有。

用户execbar运行foo

foo 报告动态库之一无法访问。

有问题的动态库位于正常ld.so.conf搜索路径之外的目录中,因此它是通过LD_LIBRARY_PATH为用户设置的execbar

问题是:运行程序是否setuid清除了用户设置的环境execbar

Sté*_*las 10

不,但动态链接器在使用 setuid 运行时会忽略一些环境变量,否则您可以使其加载并以目标用户身份运行任何代码。这适用于LD_LIBRARY_PATHLD_PRELOAD甚至更多。参见ld.so(8)