Bash em chroot movimentos-chave estranhos

1

Estou tentando configurar um ambiente chroot com apenas bash nele. Isso é o que eu tenho até agora:

[root@free]# tree .
.
├── bin -> usr/bin/
├── dev
├── etc
│   ├── bash.bash_logout
│   ├── bash.bashrc
│   ├── inputrc
│   └── profile
├── lib -> usr/lib/
├── lib64 -> usr/lib64/
├── proc
├── sys
└── usr
    ├── bin
    │   └── bash
    ├── lib
    │   ├── libc.so
    │   ├── libc.so.6
    │   ├── libdl.so
    │   ├── libdl.so.2
    │   ├── libncursesw.so.6
    │   ├── libreadline.so
    │   ├── libreadline.so.7
    │   ├── libreadline.so.7.0
    │   ├── libtinfo.so
    │   └── libtinfo.so.6
    └── lib64
        └── ld-linux-x86-64.so.2

11 directories, 16 files

ldd lista o seguinte para bash :

[root@free]# ldd /bin/bash
    linux-vdso.so.1 (0x00007ffd388a3000)
    libreadline.so.7 => /usr/lib/libreadline.so.7 (0x00007fa6e0baa000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fa6e09a6000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fa6e05ea000)
    libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007fa6e037d000)
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fa6e10d8000)

Entrar no ambiente chroot já funciona ( I have no name! está bom, já que eu não copiei o arquivo passwd):

[root@free jail]# chroot .
[I have no name!@jail]#

O problema é que, se eu digitar p e backspace w d , a linha terá a seguinte aparência:

[I have no name!@jail]#pe wd

executá-lo com enter executará pwd e imprime

/

também as teclas de seta (esquerda e direita) agem de forma estranha, como imprimir vários caracteres, mas não mover o cursor p d left w leva a pdwd . Isso não acontece em bash fora do chroot.

Como posso corrigir isso?

Esqueci de copiar uma biblioteca ou algo assim? É um problema de libreadline (já copiei etc/inputrc )? Ou poderia ser um problema libncursesw ?

    
por aichingm 14.07.2018 / 12:08

1 resposta

3

Eu dei uma olhada no um script para gerar chroots mínimos e notei que você está perdendo o diretório /usr/share/terminfo/ , que é usado pelo libcurses e lida com seqüências de comandos do terminal. Além de alguns outros arquivos que provavelmente serão necessários ( /etc/resolv.conf , etc.), é o que eu gostaria de tentar.

    
por 14.07.2018 / 12:51