Felhasználói eszközök

Eszközök a webhelyen


kubernetes:chroot

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Következő változat
Előző változat
kubernetes:chroot [2025/12/01 07:12] – létrehozva riba.zoltankubernetes:chroot [2025/12/01 08:32] (aktuális) riba.zoltan
Sor 1: Sor 1:
-====== chroot ======+====== Linux chroot környezet kialakítása ======
  
 A chroot környezet a minimális konténer futtató környezet bemutatására szolgál. Először a bash shell telepítése és testreszabása történik meg, majd a futtatáshoz szükséges környezetek. Végül a szükséges fájlrendszerek csatlakoztatása. A chroot környezet a minimális konténer futtató környezet bemutatására szolgál. Először a bash shell telepítése és testreszabása történik meg, majd a futtatáshoz szükséges környezetek. Végül a szükséges fájlrendszerek csatlakoztatása.
Sor 26: Sor 26:
 <code> <code>
 # chroot /opt/program /usr/bin/bash # chroot /opt/program /usr/bin/bash
 +chroot: failed to run command ‘/usr/bin/bash’: No such file or directory
 </code> </code>
 +
 +A program működéséhez szükséges megosztott objektumfájlok listázása.
 +
 +<code>
 +# ldd /usr/bin/bash
 + linux-vdso.so.1 (0x00007f65ff555000)
 + libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f65ff39b000)
 + libc.so.6 => /lib64/libc.so.6 (0x00007f65ff1a7000)
 + /lib64/ld-linux-x86-64.so.2 (0x00007f65ff557000)
 +</code>
 +
 +A szükséges könyvtárstruktúra létrehozása.
 +
 +<code>
 +# mkdir /opt/program/usr/lib64
 +# ln -s usr/lib64 /opt/program/lib64
 +</code>
 +
 +Állományok másolása. Fontos megjegyezni, hogy a forrás fájlok időnként szimbolikus hivatkozások, így a hivatkozott állományokat is másolni kell.
 +
 +<code>
 +# cp -a /usr/lib64/libtinfo.so.6* /opt/program/usr/lib64
 +# cp -a /usr/lib64/libc.so.6* /opt/program/usr/lib64
 +# cp -a /usr/lib64/ld-linux-x86-64.so.2* /opt/program/usr/lib64
 +</code>
 +
 +A teljes struktúra a következő
 +
 +<code>
 +# tree /opt/program
 +
 +/opt/program
 +├── bin -> usr/bin
 +├── lib64 -> usr/lib64
 +└── usr
 +    ├── bin
 +    │   └── bash
 +    └── lib64
 +        ├── ld-linux-x86-64.so.2
 +        ├── libc.so.6
 +        ├── libtinfo.so.6 -> libtinfo.so.6.5
 +        └── libtinfo.so.6.5
 +</code>
 +
 +Teszteljük a chroot működését
 +
 +<code>
 +# chroot /opt/program /usr/bin/bash
 +bash-5.3# exit
 +exit
 +</code>
 +
 +Próbáljuk listázni a chroot környezet tartalmát.
 +
 +<code>
 +# chroot /opt/program /usr/bin/bash
 +# ls /
 +bash: ls: command not found
 +bash-5.3# exit
 +exit
 +</code>
 +
 +Mivel nincs ls parancs, telepítsük a chroot könyvtárába. Itt is figyeljünk a megosztott objektumfájlokra.
 +
 +<code>
 +# ldd /usr/bin/ls
 + linux-vdso.so.1 (0x00007fae7efca000)
 + libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fae7ef5d000)
 + libcap.so.2 => /lib64/libcap.so.2 (0x00007fae7ef51000)
 + libc.so.6 => /lib64/libc.so.6 (0x00007fae7ed5d000)
 + libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fae7ecb0000)
 + /lib64/ld-linux-x86-64.so.2 (0x00007fae7efcc000)
 +</code>
 +
 +Másolási műveletek.
 +
 +<code>
 +# cp -a /usr/bin/ls /opt/program/usr/bin/ls
 +# cp -a /usr/lib64/libselinux.so.1* /opt/program/usr/lib64
 +# cp -a /usr/lib64/libcap.so.2* /opt/program/usr/lib64
 +# cp -a /usr/lib64/libpcre2-8.so.0* /opt/program/usr/lib64
 +</code>
 +
 +Ellenőrzés.
 +
 +<code>
 +# tree /opt/program
 +
 +# tree /opt/program
 +/opt/program
 +├── bin -> usr/bin
 +├── lib64 -> usr/lib64
 +└── usr
 +    ├── bin
 +    │   ├── bash
 +    │   └── ls
 +    └── lib64
 +        ├── ld-linux-x86-64.so.2
 +        ├── libcap.so.2 -> libcap.so.2.76
 +        ├── libcap.so.2.76
 +        ├── libc.so.6
 +        ├── libpcre2-8.so.0 -> libpcre2-8.so.0.15.0
 +        ├── libpcre2-8.so.0.15.0
 +        ├── libselinux.so.1
 +        ├── libtinfo.so.6 -> libtinfo.so.6.5
 +        └── libtinfo.so.6.5
 +</code>
 +
 +Futtassuk a bash programot a chroot környezetben és listázzuk a fájlokat.
 +
 +<code>
 +# chroot /opt/program /usr/bin/bash
 +bash-5.3# ls -l /
 +total 4
 +lrwxrwxrwx. 1 0 0    7 Dec  1 07:13 bin -> usr/bin
 +lrwxrwxrwx. 1 0 0    9 Dec  1 07:20 lib64 -> usr/lib64
 +drwxr-xr-x. 4 0 0 4096 Dec  1 07:20 usr
 +</code>
 +
 +Az ls parancs közvetlenül hívható, nem szükséges a shell. Így működnek a konténerek is. Ott az entrypoint lesz a program ami a konténer indításakor automatikusan lefut.
 +
 +<code>
 +# chroot /opt/program /usr/bin/ls -l /
 +total 4
 +lrwxrwxrwx. 1 0 0    7 Dec  1 07:13 bin -> usr/bin
 +lrwxrwxrwx. 1 0 0    9 Dec  1 07:20 lib64 -> usr/lib64
 +drwxr-xr-x. 4 0 0 4096 Dec  1 07:20 usr
 +</code>
 +
 +Ha elhagyjuk a chroot második paraméterében a futtatandó programot, akkor automatikusan a /bin/bash indul.
 +
 +<code>
 +# chroot /opt/program /bin/bash
 +bash-5.3# exit
 +exit
 +
 +# chroot /opt/program
 +bash-5.3# exit
 +exit
 +</code>
 +
 +Programok egy részének futtatásához szükség van a /proc, a /sys és néha a /dev könyvtárakra. Ezek a könyvtárak csatlakoztathatók többféle módszerrel. A könyvtárakat előre létre kell hozni a chroot környezetben.
 +
 +<code>
 +# mkdir /opt/program/dev
 +# mkdir /opt/program/proc
 +# mkdir /opt/program/sys
 +</code>
 +
 +=== A /proc fájlrendszer kezelése ===
 +
 +A /proc fájlrendszer csatlakoztatása (1. módszer)
 +
 +<code>
 +# mount -t proc proc /opt/program/proc
 +
 +# chroot /opt/program /usr/bin/ls /proc
 +1      18846  21    2439  37 5     7369  9817    kpagecgroup
 +10     18950  2119  2444  3716 50    744   9818    kpagecount
 +...
 +</code>
 +
 +A /proc fájlrendszer leválasztása.
 +
 +<code>
 +# umount /opt/program/proc
 +</code>
 +
 +A /proc fájlrendszer csatlakoztatása (2. módszer)
 +
 +<code>
 +# mount --bind /proc /opt/program/proc
 +
 +# chroot /opt/program /usr/bin/ls /proc
 +1      18846  21    2439  37 5     7369  9817    kpagecgroup
 +10     18950  2119  2444  3716 50    744   9818    kpagecount
 +...
 +</code>
 +
 +A /proc fájlrendszer leválasztása.
 +
 +<code>
 +# umount /opt/program/proc
 +</code>
 +
 +=== A /sys fájlrendszer kezelése ===
 +
 +A /sys fájlrendszer csatlakoztatása (1. módszer)
 +
 +<code>
 +# mount -t sysfs none /opt/program/sys
 +
 +# chroot /opt/program /usr/bin/ls /sys
 +block  class  devices fs     kernel  power
 +bus    dev    firmware hypervisor  module
 +</code>
 +
 +A /sys fájlrendszer leválasztása.
 +
 +<code>
 +# umount /opt/program/sys
 +</code>
 +
 +A /sys fájlrendszer csatlakoztatása (2. módszer)
 +
 +<code>
 +# mount --bind /sys /opt/program/sys
 +
 +# chroot /opt/program /usr/bin/ls /sys
 +block  class  devices fs     kernel  power
 +bus    dev    firmware hypervisor  module
 +</code>
 +
 +A /sys fájlrendszer leválasztása.
 +
 +<code>
 +# umount /opt/program/proc
 +</code>
 +
 +=== A /sys fájlrendszer kezelése ===
 +
 +A /dev fájlrendszer csatlakoztatása
 +
 +<code>
 +# mount --bind /dev /opt/program/dev
 +
 +# chroot /opt/program /usr/bin/ls /dev
 +autofs log sgx_vepc  tty34  ttyS10   userfaultfd
 +block loop-control shm   tty35  ttyS11   v4l
 +...
 +</code>
 +
 +A /dev fájlrendszer leválasztása.
 +
 +<code>
 +# umount /opt/program/dev
 +</code>
 +
 +Az elkészült chroot környezet kiegészíthető további állományokkal, programokkal.
 +
 +<code>
 +# tree /opt/program/
 +/opt/program/
 +├── bin -> usr/bin
 +├── dev
 +├── lib64 -> usr/lib64
 +├── proc
 +├── sys
 +└── usr
 +    ├── bin
 +    │   ├── bash
 +    │   └── ls
 +    └── lib64
 +        ├── ld-linux-x86-64.so.2
 +        ├── libcap.so.2 -> libcap.so.2.76
 +        ├── libcap.so.2.76
 +        ├── libc.so.6
 +        ├── libpcre2-8.so.0 -> libpcre2-8.so.0.15.0
 +        ├── libpcre2-8.so.0.15.0
 +        ├── libselinux.so.1
 +        ├── libtinfo.so.6 -> libtinfo.so.6.5
 +        └── libtinfo.so.6.5
 +</code>
 +
kubernetes/chroot.1764573173.txt.gz · Utolsó módosítás: szerkesztette: riba.zoltan