我偶然发现了一个名为的文件ld.so.preload,但找不到它的任何实际用途。它与 env 变量有关LD_PRELOAD吗?
Mar*_*iae 17
好问题!实际上,/etc/ld.so.preload在某种程度上取代了LD_PRELOAD。
由于安全问题,LD_PRELOAD受到严格限制:它不能执行任意setuid二进制文件,因为如果可以,您可以用您自己的恶意代码替换库例程,例如参见此处的一个很好的讨论。事实上,你可以在ld.so'user manual 中阅读:
LD_PRELOAD
要在所有其他库之前加载的附加、用户指定的 ELF 共享库列表。列表的项目可以用空格或冒号分隔。这可用于选择性地覆盖其他共享库中的函数。使用描述下给出的规则搜索库。对于 set-user-ID/set-group-ID ELF 二进制文件,包含斜杠的预加载路径名将被忽略,并且只有在库文件上启用了 set-user-ID 权限位时才会加载标准搜索目录中的库。
相反,文件/etc/ld.so.preload没有这样的限制,这个想法是,如果你可以读/写目录/etc,你已经拥有 root 凭据。因此它的使用。请记住,您可以使用/etc/ld.so.preload即使您一开始似乎没有它:它只是glibc 的一个特性,因此是所有 Linux 发行版的一个特性(但不是,最好的我对 Unix 风格的了解),因此您可以创建它并将任何Linux 发行版中的任何setuid 库的名称放入其中,它就会起作用。
| 归档时间: |
|
| 查看次数: |
22034 次 |
| 最近记录: |