Забезпечення / бін та / lib всередині в'язниці chroot


11

Мені потрібно мати можливість надати каталоги / bin та / lib всередині в'язниці chroot, щоб програми могли динамічно зв’язуватися належним чином.

Чи є спосіб досягти цього, не роблячи копії / bin та / lib dirs до в'язниці Chroot?

Я спробував символьні посилання, і вони не працюють із внутрішніх в'язниць chroot, і каталоги не можуть бути жорсткими посиланнями.

Відповіді:


14

Ви можете скористатись mountдля перекомпонування каталогів, які вам потрібні у в’язниці:

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

Для використання в /etc/fstab:

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

Ура!


2
Дуже дякую. Linux просто стає все кращим і кращим, чим більше я граю з ним: p
анонімний боягуз

Я радий, що це спрацювало добре! Ура!
jgr

3

Якщо ви не хочете монтувати каталоги так, як сказав jgr, ви можете використовувати cpдля повторної копіювання каталогів та створення твердих посилань для всіх файлів:

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

Таким чином , ваші кореневої - х /binі /libможе мати трохи різну структуру / зміст , ніж основні каталоги.


1
Гарна ідея, але якщо / chroot знаходиться на іншому пристрої, це не спрацює. Ви не можете встановити посилання на різних пристроях.
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
# ...

1
Наміть питання полягає в тому, щоб забезпечити доступ до існуючих файлів, а не копіювати їх у chroot.
psusi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.