如何为 su 或 sudo 设置 LD_PRELOAD?

sun*_*obo 1 linux glibc centos su

我正在 CentOS 6.5 上工作。我的glibc版本是2.14,我不小心将/lib64/libc.so.6链接到了以前的glibc(libc-2.12.so)。

然后我运行,除了和 之外export LD_PRELOAD=/lib64/libc-2.14.so,大多数命令都可以执行。运行时,它给出“分段错误”。当 run 时,它给出"su: /lib64/libc.so.6: version `GLIBC_2.14' not find (required by /lib64/libcrypt.so.1)"susudosusudo

如何设置LD_PRELOADsusudo或者如何恢复 glibc?

n. *_* m. 5

设计上没有办法。设置 LD_PRELOAD 允许在可执行文件中执行任意代码。在运行敏感的特权 SUID 程序时允许这样做是相当不明智的。

  • 正确 - 每当专门执行 set*id 程序(如 su 或 sudo)以防止安全问题时,glibc 内部(在其 ldso 中)将清除“LD_PRELOAD”和类似的环境变量。应该将此标记为答案;)。 (2认同)