การให้ / bin และ / lib ภายในคุก chroot


11

ฉันต้องสามารถให้ไดเรกทอรี / bin และ / lib ภายในคุก chroot เพื่อให้โปรแกรมสามารถเชื่อมโยงอย่างถูกต้องแบบไดนามิก

มีวิธีการที่จะทำสิ่งนี้ให้สำเร็จโดยไม่ทำการคัดลอก / bin และ / lib dirs ไปยังคุก chroot หรือไม่?

ฉันได้ลองใช้ symlink แล้วและมันไม่ทำงานจากภายในคุก 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
ขอบคุณมาก. ลินุกซ์เริ่มดีขึ้นเรื่อย ๆ ยิ่งฉันเล่นกับมันมากขึ้น: p
คนขี้ขลาดนิรนาม

ฉันดีใจที่มันทำงานได้ดี! ไชโย!
jgr

3

หากคุณไม่ต้องการเมานต์ไดเร็กทอรีตามที่ jgr กล่าวคุณสามารถใช้cpเพื่อคัดลอกไดเร็กทอรีซ้ำและสร้างฮาร์ดลิงก์สำหรับไฟล์ทั้งหมด:

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

วิธีนี้จะทำให้ chroot ของคุณ/binและ/libสามารถมีโครงสร้าง / เนื้อหาแตกต่างกันเล็กน้อยจากไดเรกทอรีหลัก


1
เป็นความคิดที่ดี แต่ถ้า / chroot อยู่บนอุปกรณ์อื่นสิ่งนี้จะไม่ทำงาน คุณไม่สามารถ hardlink ข้ามอุปกรณ์ได้
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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.