Ich bin ein Chroot-Neuling, der versucht, ein einfaches Chroot-Gefängnis zu bauen, aber ich stoße immer wieder mit dem Kopf gegen das gleiche Problem ... Jede Hilfe wäre sehr dankbar
Ich habe ein Verzeichnis erstellt /usr/chroot
, das ich als Gefängnis verwenden möchte, und Unterverzeichnisse darunter erstellt und die Abhängigkeiten von /bin/bash
darin kopiert :
[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$
Kann mir jemand eine Idee geben, wohin ich von hier aus gehen soll?
cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
(sollte/usr
statt sein/udr
)Antworten:
Die Fehlermeldung ist irreführend : Dies
/bin/bash: No such file or directory
kann bedeuten, dass/bin/bash
sie entweder nicht vorhanden ist oder dass der von verwendete dynamische Loader/bin/bash
nicht vorhanden ist. (Diese Meldung wird auch für ein Skript angezeigt, wenn der Interpreter in der#!
Zeile nicht vorhanden ist.)/bin/bash
ist auf der Suche nach/lib64/ld-linux-x86-64.so.2
aber Sie zur Verfügung gestellt/lib/ld-linux-x86-64.so.2
. Machen Sie/usr/chroot/lib64
ein Symbollib
oder umgekehrt.quelle
cp
Befehle an: Du hast Dateien aus/lib64
dem Basissystem/lib
in die Chroot kopiert . Aber die Bash-Binärdatei sucht immer nochld-linux-x86-64.so.2
in/lib64
(die Sie nicht erstellt haben), nicht/lib
. Sie sparen sich Kopfschmerzen , indem sie/lib
und/lib64
in der chroot - Äquivalent, so laufenln -s lib /usr/chroot/lib64
. In meinem ersten Absatz wird erläutert, warum die Fehlermeldung ungefährbash
und nicht ungefährld-linux-x86-64.so.2
ist./lib
ist ein Symlink zum Einfügen/usr/lib
einer Datei/usr/lib
in/lib
, da dies dasselbe Verzeichnis ist! Zu Beginn hat es nicht funktioniert, da der Loader einen Cache mit dem Inhalt von/lib
und/usr/lib
führt und es funktioniert, als der Cache neu erstellt wurde. Beim Ausführen wirdldconfig
der Cache neu erstellt. Dies wurde möglicherweise von Ihnen oder automatisch durchgeführt, z. B. von einem Paketmanager, als Sie ein Softwareupdate installiert haben.Mach einfach folgendes:
mv /usr/chroot/lib /usr/chroot/lib64
quelle
Ich war auch mit dem gleichen Fehler konfrontiert. Der beste Weg ist, den Unterschied zwischen dem Inhalt von "/" rescue image (live CD) und dem Inhalt von "/ mnt / sysimage" zu finden.
Das Problem wurde behoben, indem / bin und / sbin aus dem Verzeichnis "/" nach "/ mnt / sysimage" kopiert wurden, wo es versehentlich gelöscht wurde.
quelle
Sie sollten versuchen, die .bashrc-Datei in das Ausgangsverzeichnis zu kopieren. und es wird sicherlich helfen.
quelle