我正在尝试设置一个仅包含 bash 的 chroot 环境。这是我到目前为止所拥有的:
\n\n[root@free]# tree .\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin -> usr/bin/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dev\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 etc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bash.bash_logout\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bash.bashrc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inputrc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 profile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib -> usr/lib/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib64 -> usr/lib64/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 proc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sys\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 usr\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bash\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libc.so\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libc.so.6\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libdl.so\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libdl.so.2\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libncursesw.so.6\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libreadline.so\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libreadline.so.7\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libreadline.so.7.0\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libtinfo.so\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 libtinfo.so.6\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib64\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ld-linux-x86-64.so.2\n\n11 directories, 16 files\nRun Code Online (Sandbox Code Playgroud)\n\nldd列出以下内容bash:
[root@free]# ldd /bin/bash\n linux-vdso.so.1 (0x00007ffd388a3000)\n libreadline.so.7 => /usr/lib/libreadline.so.7 (0x00007fa6e0baa000)\n libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fa6e09a6000)\n libc.so.6 => /usr/lib/libc.so.6 (0x00007fa6e05ea000)\n libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007fa6e037d000)\n /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fa6e10d8000)\nRun Code Online (Sandbox Code Playgroud)\n\n进入 chroot 环境已经可以工作了(I have no name!很好,因为我没有喷射复制 passwd 文件):
[root@free jail]# chroot .\n[I have no name!@jail]#\nRun Code Online (Sandbox Code Playgroud)\n\n问题是如果我输入p e backspace w d该行将如下所示:
[I have no name!@jail]#pe wd\nRun Code Online (Sandbox Code Playgroud)\n\n用 Enter 执行将执行pwd并打印
/\nRun Code Online (Sandbox Code Playgroud)\n\n箭头键(左和右)也表现得很奇怪,就像打印多个字符但不移动光标p d left w会导致pdwd. 这不会发生在bashchroot 之外。
我怎样才能解决这个问题?
\n\n我是否忘记复制库或其他东西?有libreadline问题吗(我已经复制了etc/inputrc)?或者这可能是一个libncursesw问题?
我查看了一个生成最小 chroot 的脚本,发现您缺少/usr/share/terminfo/libcurses 使用的目录并处理终端命令序列。除了可能需要的一些其他文件(/etc/resolv.conf等)之外,这就是我要尝试的内容。
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |