谁负责加载 /etc/ld.so.preload 中的文件?
Who is responsible to load files in /etc/ld.so.preload?
我之前想过,链接到动态库的程序会查看/etc/ld.so.preload
。
但是,我在某处读到
All programs try to open /etc/ld.so.preload, this behavior is baked into Glibc.
因此,为了避免glibc,我想到了用汇编代码编写程序。使用 nasm
和 ld
编译它。它仍在加载 /etc/ld.so.preload
个库。
我的最终目标是编写一个不尝试在 /etc/ld.so.preload
中加载库的程序。
为此,我需要知道谁负责加载它以及我如何编写这样的程序(无语言限制)?
PS :我真正的问题是我想编辑 /etc/ld.so.preload
以包含我的图书馆。但是万一这个库碰巧坏了,那么我机器上的每一个命令都会中断,我就不能在机器上做任何事情。因此,对于这种情况,我想随身携带一个实用程序,它将从 /etc/ld.so.preload
中删除我的库。在那种情况下,此实用程序以及 sudo
必须完全静态链接。
Who is responsible to load files in /etc/ld.so.preload?
动态链接器是。使用 GLIBC 时,动态链接器为 ld-linux.so
.
Compiled it using nasm and ld. Still it is loading /etc/ld.so.preload libraries.
您要么是动态链接到 GLIBC,要么上面的说法是错误的。
actually I am running it using sudo, and sudo needs ld.so.preload. Can we by any means make sudo statically linked?
您可以重建许多要静态链接的程序,是的。但这有成本(磁盘 space,必须为每个安全修复重建所有程序,等等),而且可能并非完全微不足道。它也不太可能解决您遇到的任何实际问题。
My real problem is that I want to edit /etc/ld.so.preload to include my library. But In case if this library happens to be a broken one then every single command on my machine breaks and I cannot do anything on the machine. Hence, for such a case I want to keep a utility handy which would delete my library from /etc/ld.so.preload. In that case this utility as well as sudo must be completely statically linked.
这个问题的解决方案是按照 Russ Ridge 在对此答案的评论中建议的进行操作:"install a statically linked version of BusyBox"。
BusyBox 有您想要的 su
和 rm
命令。
另一种解决方案是学习如何使用 Linux recovery CD -- 这在很多情况下可能会派上用场,因此学习如何恢复系统非常值得。
我之前想过,链接到动态库的程序会查看/etc/ld.so.preload
。
但是,我在某处读到
All programs try to open /etc/ld.so.preload, this behavior is baked into Glibc.
因此,为了避免glibc,我想到了用汇编代码编写程序。使用 nasm
和 ld
编译它。它仍在加载 /etc/ld.so.preload
个库。
我的最终目标是编写一个不尝试在 /etc/ld.so.preload
中加载库的程序。
为此,我需要知道谁负责加载它以及我如何编写这样的程序(无语言限制)?
PS :我真正的问题是我想编辑 /etc/ld.so.preload
以包含我的图书馆。但是万一这个库碰巧坏了,那么我机器上的每一个命令都会中断,我就不能在机器上做任何事情。因此,对于这种情况,我想随身携带一个实用程序,它将从 /etc/ld.so.preload
中删除我的库。在那种情况下,此实用程序以及 sudo
必须完全静态链接。
Who is responsible to load files in /etc/ld.so.preload?
动态链接器是。使用 GLIBC 时,动态链接器为 ld-linux.so
.
Compiled it using nasm and ld. Still it is loading /etc/ld.so.preload libraries.
您要么是动态链接到 GLIBC,要么上面的说法是错误的。
actually I am running it using sudo, and sudo needs ld.so.preload. Can we by any means make sudo statically linked?
您可以重建许多要静态链接的程序,是的。但这有成本(磁盘 space,必须为每个安全修复重建所有程序,等等),而且可能并非完全微不足道。它也不太可能解决您遇到的任何实际问题。
My real problem is that I want to edit /etc/ld.so.preload to include my library. But In case if this library happens to be a broken one then every single command on my machine breaks and I cannot do anything on the machine. Hence, for such a case I want to keep a utility handy which would delete my library from /etc/ld.so.preload. In that case this utility as well as sudo must be completely statically linked.
这个问题的解决方案是按照 Russ Ridge 在对此答案的评论中建议的进行操作:"install a statically linked version of BusyBox"。
BusyBox 有您想要的 su
和 rm
命令。
另一种解决方案是学习如何使用 Linux recovery CD -- 这在很多情况下可能会派上用场,因此学习如何恢复系统非常值得。