Предоставление / bin и / lib внутри chroot-тюрьмы

11

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

Есть ли способ сделать это, не копируя каталоги / bin и / lib в 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

Ура!

JGR
источник
2
Большое спасибо. Linux становится все лучше и лучше, чем больше я играю с ним: p
анонимный трус
Я рад, что все получилось! Ура!
JGR
3

Если вы не хотите монтировать каталоги, как сказал jgr, вы можете использовать cpдля рекурсивного копирования каталогов и создания жестких ссылок для всех файлов:

cp -alf /bin /chroot/bin
cp -alf /lib /chroot/lib
chroot /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
# ...
mcandre
источник
1
Похоже, цель этого вопроса - предоставить доступ к существующим файлам, а не копировать их в chroot.
psusi