Linux 如何为su或sudo设置LD_预加载?

Linux 如何为su或sudo设置LD_预加载?,linux,centos,glibc,su,Linux,Centos,Glibc,Su,我正在使用CentOS 6.5。我的glibc版本是2.14,我不小心将/lib64/libc.so.6链接到了以前的glibclibc-2.12.so 然后我运行export LD_PRELOAD=/lib64/libc-2.14。因此,除了su和sudo之外,大多数命令都可以执行。当运行su时,它给出分段错误。当运行sudo时,它会给出su:/lib64/libc.so.6:version`GLIBC_2.14',这是/lib64/libcrypt.so.1所不需要的 如何为su和sudo设

我正在使用CentOS 6.5。我的glibc版本是2.14,我不小心将/lib64/libc.so.6链接到了以前的glibclibc-2.12.so

然后我运行export LD_PRELOAD=/lib64/libc-2.14。因此,除了su和sudo之外,大多数命令都可以执行。当运行su时,它给出分段错误。当运行sudo时,它会给出su:/lib64/libc.so.6:version`GLIBC_2.14',这是/lib64/libcrypt.so.1所不需要的


如何为su和sudo设置LD_预加载,或者如何恢复glibc?

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

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

我能做些什么来恢复glibc

这是一个系统管理问题,更适合serverfault,但恢复的一种方法是:

从救援CD启动 将根分区装入/mnt 修复符号链接 重新启动 我能做些什么来恢复glibc

这是一个系统管理问题,更适合serverfault,但恢复的一种方法是:

从救援CD启动 将根分区装入/mnt 修复符号链接 重新启动
LD_PRELOAD=/lib64/libc-2.14.so sudo-我应该做这个,对吧?Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。也看到我被这个问题弄糊涂了。您是在问如何将libc.so.6符号链接更改回2.14 glibc吗?这可以通过ln实现。您可能要做的是重新安装软件包。我也不遵循su/sudo位-这些程序是setuid,如果由非特权用户执行,加载程序将忽略env var,也就是说,您确实需要解决实际问题。@employeeofmonth要使用ln或包管理器,受害者必须运行su或sudo。回到第一步。从恢复拇指驱动器启动并恢复损坏的文件。LD_PRELOAD=/lib64/libc-2.14。所以sudo-我应该做这件事,对吗?堆栈溢出是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。也看到我被这个问题弄糊涂了。您是在问如何将libc.so.6符号链接更改回2.14 glibc吗?这可以通过ln实现。您可能要做的是重新安装软件包。我也不遵循su/sudo位-这些程序是setuid,如果由非特权用户执行,加载程序将忽略env var,也就是说,您确实需要解决实际问题。@employeeofmonth要使用ln或包管理器,受害者必须运行su或sudo。回到第一步。从恢复拇指驱动器引导并恢复损坏的文件。正确-glibc在其ldso中内部将清除LD_PRELOAD和类似的环境变量,只要专门执行set*id程序(如su或sudo)以防止安全问题。应该将此标记为答案;。正确-glibc在其ldso中内部将清除LD_PRELOAD和类似的env VAR,只要专门执行set*id程序(如su或sudo),以防止出现安全问题。应该将此标记为答案;。