Eu sou um novato em chroot tentando fazer uma prisão chroot simples, mas estou batendo a cabeça contra o mesmo problema várias vezes ... Qualquer ajuda seria apreciada em massa
Criei um diretório /usr/chroot
que quero usar como prisão e criei subdiretórios sob ele e copiei as dependências /bin/bash
dele:
[root@WIG001-001 ~]# cd /usr/chroot/
[root@WIG001-001 chroot]# ls
[root@WIG001-001 chroot]# mkdir bin etc lib var home
[root@WIG001-001 chroot]# ldd /bin/bash
linux-vdso.so.1 => (0x00007fff99dba000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000037a2000000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000379fc00000)
libc.so.6 => /lib64/libc.so.6 (0x000000379f800000)
/lib64/ld-linux-x86-64.so.2 (0x000000379f400000)
[root@WIG001-001 chroot]# cp /lib64/libtinfo.so.5 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/libc.so.6 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/ld-linux-x86-64.so.2 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /bin/bash bin
[root@WIG001-001 chroot]# pwd
/usr/chroot
[root@WIG001-001 chroot]# /usr/sbin/chroot .
/usr/sbin/chroot: cannot run command `/bin/bash': No such file or directory
it looks like the /bin/bash created under /usr/chroot is fine as the below works:
[root@WIG001-001 chroot]# su - nobody -s /usr/chroot/bin/bash
-bash-4.0$
Alguém pode me dar alguma idéia para onde ir a partir daqui?
cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
(deve estar em/usr
vez de/udr
)Respostas:
A mensagem de erro é enganosa :
/bin/bash: No such file or directory
pode significar que/bin/bash
não existe ou que o carregador dinâmico usado por/bin/bash
não existe. (Você também receberá esta mensagem para um script se o intérprete na#!
linha não existir.)/bin/bash
está procurando,/lib64/ld-linux-x86-64.so.2
mas você forneceu/lib/ld-linux-x86-64.so.2
. Faça/usr/chroot/lib64
um simbólicolib
ou vice-versa.fonte
cp
comandos: você copiou arquivos do/lib64
sistema básico para/lib
o chroot. Mas o binário festa ainda está procurandold-linux-x86-64.so.2
em/lib64
(que você não tenha criado), não/lib
. Você vai economizar dores de cabeça fazendo/lib
e/lib64
equivalente no chroot, então corraln -s lib /usr/chroot/lib64
. Quanto ao motivo pelo qual a mensagem de erro é sobrebash
e não sobreld-linux-x86-64.so.2
, veja o meu primeiro parágrafo./lib
é um link simbólico para/usr/lib
colocar um arquivo,/usr/lib
coloca-o/lib
, pois esses são o mesmo diretório! Em um palpite, ele não funcionou no início porque o carregador mantém um cache do conteúdo de/lib
e/usr/lib
e começou a funcionar quando o cache foi reconstruído. A execuçãoldconfig
recria o cache e isso pode ter sido feito por você ou automaticamente, por exemplo, por um gerenciador de pacotes quando você instalou uma atualização de software.Apenas faça o seguinte:
mv /usr/chroot/lib /usr/chroot/lib64
fonte
Eu também enfrentei o mesmo erro. A melhor maneira é encontrar a diferença entre o conteúdo da imagem de recuperação (CD ao vivo) "/" e o conteúdo "/ mnt / sysimage".
O problema foi resolvido copiando / bin e / sbin do diretório "/" para "/ mnt / sysimage", onde foi excluído acidentalmente.
fonte
você deve copiar o arquivo .bashrc no diretório inicial. e isso vai ajudar com certeza.
fonte