Fornecendo / bin e / lib dentro de uma prisão chroot

11

Eu preciso ser capaz de fornecer os diretórios / bin e / lib dentro de uma prisão chroot para que os programas possam se vincular dinamicamente corretamente.

Existe uma maneira de fazer isso sem fazer uma cópia dos diretórios / bin e / lib para a prisão chroot?

Eu tentei links simbólicos, e eles não funcionam de dentro das cadeias chroot, e os diretórios não podem ser vinculados.

covarde anônimo
fonte

Respostas:

14

Você pode usar mountpara remontar os diretórios necessários em sua prisão:

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

Para uso em /etc/fstab:

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

Felicidades!

jgr
fonte
2
Muito obrigado. Linux está ficando cada vez melhor e melhor quanto mais eu jogar com ele: p
Covarde Anônimo
Estou feliz que funcionou bem! Felicidades!
JGR
3

Se você não quis montar os diretórios como o jgr disse, você pode cpcopiar recursivamente os diretórios e criar hardlinks para todos os arquivos:

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

Desta forma, o seu chroot /bine /libpode ter uma estrutura / conteúdo ligeiramente diferente dos diretórios principais.

Josh
fonte
1
Boa ideia, mas se o / chroot estiver em um dispositivo diferente, isso não funcionará. Você não pode vincular os dispositivos.
AllenKll # 6/16
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
fonte
1
A intenção da pergunta parece ser fornecer acesso aos arquivos existentes, em vez de copiá-los para o chroot.
Psusi