Jestem nowicjuszem chroot, próbującym zrobić proste więzienie chroot, ale raz po raz uderzam głową o ten sam problem ... Każda pomoc byłaby ogromnie doceniona
Utworzyłem katalog /usr/chroot
, którego chcę używać jako więzienia, pod nim utworzyłem podkatalogi i skopiowałem do niego zależności /bin/bash
:
[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$
Czy ktoś może mi dać pomysł, gdzie mogę się stąd udać?
cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
(powinien być/usr
zamiast/udr
)Odpowiedzi:
Komunikat o błędzie jest mylący :
/bin/bash: No such file or directory
może oznaczać, że/bin/bash
nie istnieje lub że używany przez niego moduł ładujący dynamiczny/bin/bash
nie istnieje. (Otrzymasz również tę wiadomość do skryptu, jeśli interpreter w#!
linii nie istnieje)./bin/bash
szuka,/lib64/ld-linux-x86-64.so.2
ale pod warunkiem/lib/ld-linux-x86-64.so.2
. Zrób/usr/chroot/lib64
symbolikęlib
lub odwrotnie.źródło
cp
polecenia: skopiowałeś pliki z/lib64
systemu podstawowego do/lib
chroot. Ale plik bash nadal szukald-linux-x86-64.so.2
w/lib64
(którego jeszcze nie stworzyłeś), nie/lib
. Zaoszczędzisz sobie bóle głowy, dokonując/lib
i/lib64
równowartość w chroot, więc uruchomićln -s lib /usr/chroot/lib64
. Jeśli chodzi o to, dlaczego komunikat o błędzie dotyczy,bash
a nie old-linux-x86-64.so.2
, zobacz mój pierwszy akapit./lib
jest dowiązaniem symbolicznym do/usr/lib
umieszczenia pliku w/usr/lib
nim/lib
, ponieważ są to ten sam katalog! Na pierwszy rzut oka nie działało, ponieważ moduł ładujący przechowuje pamięć podręczną zawartości/lib
i/usr/lib
, i zaczął działać, gdy pamięć podręczna została odbudowana. Uruchomienieldconfig
powoduje przebudowanie pamięci podręcznej i mogło to być zrobione przez Ciebie lub automatycznie, np. Przez menedżera pakietów, gdy instalujesz aktualizację oprogramowania.Po prostu zrób to:
mv /usr/chroot/lib /usr/chroot/lib64
źródło
Napotkałem również ten sam błąd. Najlepszym sposobem jest znalezienie różnicy między obrazem ratunkowym (live CD) „/” content a „/ mnt / sysimage”.
Problem został rozwiązany przez skopiowanie / bin i / sbin z katalogu „/” do „/ mnt / sysimage”, gdzie został przypadkowo usunięty.
źródło
powinieneś spróbować skopiować plik .bashrc do katalogu domowego. i to z pewnością pomoże.
źródło