【发布时间】:2017-05-13 16:56:04
【问题描述】:
我正在开发 CentOS 6.5。我的 glibc 的版本是 2.14,我不小心将 /lib64/libc.so.6 链接到以前的 glibc(libc-2.12.so)。
然后我运行export LD_PRELOAD=/lib64/libc-2.14.so,除了su和sudo之外,大多数命令都可以执行。当运行su 时,它给出“Segmentation fault”。当运行 sudo 时,它给出 "su: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /lib64/libcrypt.so.1)"。
如何为su和sudo设置LD_PRELOAD,或者我该怎么做才能恢复glibc?
【问题讨论】:
-
LD_PRELOAD=/lib64/libc-2.14.so sudo -i应该可以解决问题,对吧? -
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
-
我对这个问题感到困惑。您是在问如何将 libc.so.6 符号链接更改回 2.14 glibc?这可以用 ln 轻松完成。您可能想要做的是重新安装软件包。我也不遵循 su/sudo 位 - 这些程序是 setuid,如果由非特权用户执行,加载程序将忽略 env var,即您确实需要解决实际问题。
-
@employeeofthemonth 要使用
ln或包管理器,受害者必须运行su或sudo。回到第一格。 -
从恢复拇指驱动器启动并恢复损坏的文件。