Bereitstellung von / bin und / lib in einem Chroot-Gefängnis

11

Ich muss in der Lage sein, die Verzeichnisse / bin und / lib in einem Chroot-Gefängnis bereitzustellen, damit Programme dynamisch richtig verknüpft werden können.

Gibt es eine Möglichkeit, dies zu erreichen, ohne eine Kopie der Verzeichnisse / bin und / lib im Chroot-Gefängnis zu erstellen?

Ich habe Symlinks ausprobiert und sie funktionieren nicht in Chroot-Gefängnissen, und Verzeichnisse können nicht fest verknüpft werden.

anonymer Feigling
quelle

Antworten:

14

Sie mountkönnen die Verzeichnisse, die Sie in Ihrem Gefängnis benötigen, erneut bereitstellen:

# mount --bind /bin /chroot/bin
# mount --bind /lib /chroot/lib
# chroot /chroot

Zur Verwendung in /etc/fstab:

/bin /chroot/bin none bind
/lib /chroot/lib none bind

Prost!

jgr
quelle
2
Danke vielmals. Linux wird immer besser, je mehr ich damit spiele: p
anonymer Feigling
Ich bin froh, dass es gut geklappt hat! Prost!
jgr
3

Wenn Sie die Verzeichnisse nicht wie von jgr angegeben bereitstellen möchten, können Sie cpVerzeichnisse rekursiv kopieren und Hardlinks für alle Dateien erstellen:

cp -alf /bin /chroot/bin
cp -alf /lib /chroot/lib
chroot /chroot

Auf diese Weise Ihres chroot /binund /libkönnen leicht unterschiedliche Struktur / Inhalt als die Hauptverzeichnisse haben.

Josh
quelle
1
Gute Idee, aber wenn sich / chroot auf einem anderen Gerät befindet, funktioniert dies nicht. Sie können keine Geräte miteinander verbinden.
AllenKll
1
#!/bin/bash

copy_file_and_dependencies() {
    PROGRAM="$1"
    DEPENDENCIES="$(ldd "$PROGRAM" | awk '{ print $3 }' | grep -v '(' | grep -v 'not a dynamic executable')"

    mkdir -p "${JAIL}$(dirname $PROGRAM)"
    cp -Lv "$PROGRAM" "${JAIL}${PROGRAM}"

    for f in $DEPENDENCIES; do
        mkdir -p "${JAIL}$(dirname $f)"
        cp -Lv "$f" "${JAIL}${f}"
    done
}

export -f copy_file_and_dependencies

copy_file_and_dependencies /etc/ld.so.cache
copy_file_and_dependencies /bin/sh
# ...
mcandre
quelle
1
Die Absicht der Frage scheint darin zu bestehen, Zugriff auf die vorhandenen Dateien zu gewähren, anstatt sie in die Chroot zu kopieren.
Psusi