- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我遇到的情况:
我已经创建了一个 debootstrap ubuntu maverick(64 位)环境。我把它放在我的 ubuntu(64 位)清醒系统上的 /env/mav/
中。我可以 chroot
进入 /env/mav
并且可以完美地利用特立独行的系统。
我什至可以在 chroot 环境之外正常使用 lucid 程序。即 /env/mav/bin/ls
将运行。
但是,我注意到如果我将 LD_LIBRARY_PATH
修改为 /env/mav/lib
[1] [2]
我运行的每一个程序(清醒的和特立独行的)都会立即崩溃。 (例如 ls 导致段错误)。 kern.log 显示:
segfault at 7fece284aa18 ip 00007fece284aa18 sp 00007fff32028158 error 15
但是,很明显,如果我chroot
进入/env/mav
,每个程序都运行良好。不是所有的库都是从 jailed (/env/mav
) /lib
中读取的吗?那么在这种情况下,chroot
和修改LD_LIBRARY_PATH
有什么区别呢?
此外,如果我:
mount -B /env /env/mav/env
然后 chroot/env
然后将 LD_LIBRARY_PATH
设置为 /env/mav/lib
,一切仍然正常。
我对这里的内部情况一头雾水。是否有一些 ld 内部存储在某处? chroot 会做一些神奇的事情吗?
[1] 用例是从正确绑定(bind)到特立独行 jail 外的特立独行动态链接库的特立独行环境中运行程序。
[2] 这只是一个简化的例子。实际上/usr/lib
等都包含在内。包括特立独行的环境的/lib “毒害”一切;使用其他特立独行的库目录没有问题。
最佳答案
LD_LIBRARY_PATH 是ld-linux.so
程序/库的选项。这个库是一个动态链接器。它的路径“/lib/ld-linux.so.2
”在 ubuntu 中的(几乎)所有动态链接程序中都被硬编码在 ELF header (INTREP 字段)中。我的意思是,当 Linux 内核运行二进制文件时,它不知道 LD_LIBRARY_PATH 的特殊含义。
所以,当你运行的时候
LD_LIBRARY_PATH=/env/mav/ /env/mav/bin/ls
根系统的/lib/ld-linux.so.2 将被使用,然后它将尝试使用 $LD_LIBRARY_PATH
环境变量解析动态库(您可以使用 查看发生了什么LD_DEBUG=all
环境变量)
当你执行 chroot 时,将使用特立独行的 /lib/ld-linux.so.2
。
我认为,主机系统的 ld-linux
和 guest (maverick)系统的 libc.so
之间可能存在一些不兼容(因为 ld-linux 是 glibc/的一部分eglibc 包,它使用了 libc.so 中的一些东西。
为了测试我的假设,尝试运行(环境变量设置的 bash 语法):
LD_LIBRARY_PATH=/env/mav/ /env/mav/lib/ld-linux.so.2 /env/mav/bin/ls
在这里,我尝试手动启动 guest 的 ld-linux,以覆盖 INTREP 硬编码路径(是的,运行 .so
库似乎很不寻常,但这个库是非常特殊的情况并允许这种语法)。如果这个命令有效,我的假设可能是正确的。如果不是,还有其他可能的解释。
关于ubuntu - chroot 如何影响动态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004126/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题. 7年前关闭。 Improve thi
我尝试让我的代码在 chroot('/root/test1') 下工作,但它不能正常工作。 但是当我删除chroot('/root/test1'),修改execl("/test2", "test2",
如果我在 shell 脚本中写 chroot /home/mayank/chroot/codebase cd SBC 当我运行这个 shell 脚本时,它确实进入了 chroot 但没有执行命令 cd
Using chroot: Why do I get error from running sudo chroot /bin /bash ? 我从文档中了解到 chroot 应该执行 /bin/bas
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Imp
我正在使用 C 语言在 UNIX 环境中开发网络服务器。目前,我已经完成了对进程的限制,但现在我无法使用系统日志和记录到文件选项,这主要是由于更改了根路径。 程序的新根路径是它的目录。我无法从它逃脱到
这是我遇到的情况: 我已经创建了一个 debootstrap ubuntu maverick(64 位)环境。我把它放在我的 ubuntu(64 位)清醒系统上的 /env/mav/ 中。我可以 ch
我可以使用 Dir.chroot chroot Dir.chroot("/var/chroot/mychroot") 但是我怎样才能从 chroot 返回呢? 最佳答案 chroot 的意义在于您无法
我正在开发一个 web 应用程序(在 Ubuntu 服务器上运行),它将允许用户运行 Octave 代码(基本上是 Matlab)。但是,我只希望他们能够读取或修改他们指定的主文件夹中的文件夹。 我知
我有一个 chroot 环境的小问题,我希望你能帮助我 :) 这是我的故事: 1 - 我创建了一个用户演示(有一个像/home/demo这样的家)并且我通过脚本/bin/chrootshell chr
为了避免将所有共享库和配置文件复制到 chroot 文件夹中,我计划在所有共享库和配置之后立即调用 chroot("path/to/folder");文件已加载。 先前加载的库中的缓冲区溢出漏洞是否会
虽然有another question与类似的主题,它不包括共享库在 chroot jail 中使用的内存。 假设我们有几个类似的 chroot。更具体地说,完全相同的二进制文件和共享库集,它们实际上
有 ubuntu img 是由砧木制作的 在 ARM 架构中运行 但我无法对 img 进行 chroot 很多人说这是依赖问题 如果我没有可用的加载器和/或共享库, 我应该做些什么? 我有 ubunt
我需要一些帮助,以了解为什么在PHP-FPM服务启动后的几分钟内,PHP-FPM chroot的PHP脚本无法解析FQDN。 当我(重新)启动PHP-FPM服务时,它会工作(解析成功)几秒钟,然后解析
我想知道 kazoo 库中是否有一种方法可以让 Zookeeper 在连接字符串中创建 chroot 路径(如果该路径尚不存在)?有人对此有经验吗?我已阅读文档,但我还没有真正找到任何可以处理此问题的
我尝试在 chroot 中运行一些 Python 程序,但出现以下错误 Could not find platform independent libraries Could not find pl
名为 =program.c 的程序的一部分 int memoryPercent() { int memoryPercent=0; FILE *pipe1 = NULL; pip
更新 知道了!看我的解决方案(第五条评论) 这是我的问题: 我创建了一个名为“jail”的小型二进制文件,并在/etc/password 中将其设为测试用户的默认 shell。 这是经过简化的源代码:
我正在尝试将数据写入 chroot 环境中的文件。由于我是非 root 用户,他们与 chroot 通信的唯一方法是使用 schroot 命令。 目前我正在使用以下技巧来写入数据。 $ schroot
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是一名优秀的程序员,十分优秀!