logo

Линук Виртуализација - Цхроот затвор

Цхроот на УНИКС оперативним системима је операција која мења очигледно коријенски директориј за текући течни процес и њену децу. Програми који раде у овом модификованом окружењу не могу приступити датотекама изван одређеног дрвета директорија. Ово у основи ограничава приступ дрвету директорија и на тај начин добијају име 'Цхроот Јаил'.

Идеја је да креирате дрво директорија у којој копирате или повежете у свим системским датотекама потребним за поступак који треба да се покрене. Затим користите Цхроот системски позив да бисте променили корен директоријума да бисте били у основи овог новог стабла и започните процес који ради у тој цхроотској средини. Пошто то заправо не може референтне стазе изван модификованог корена, не може злонамерно прочитати или писати на те локације.



Зашто је то потребно и како се разликује од виртуелних машина?

Ово је виртуализација радног система и често се користи уместо виртуелних машина за креирање више изолованих случајева домаћина ОС-а. Ово је виртуализација на нивоу кернела и практично нема изнад главе у поређењу са виртуелним машинама које су виртуализација апликација, као резултат пружа врло добру методу за креирање више изолованих случајева на истом хардверу. Виртуална машина (ВМ) је имплементација софтвера машине и често искориштавају оно што је познато као виртуализација хардвера за доношење виртуелне слике радног оперативног система.

Како користити Цхроот затвор

Основна команда за креирање затвора Цхроот је следећа:

 chroot /path/to/new/root command  
OR
chroot /path/to/new/root /path/to/server
OR
chroot [options] /path/to/new/root /path/to/server

Напомена: Само корисник корен / привилегована корисник може да користи ЦХРООТ системски позив. Не-привилегирани корисник са приступом команди може заобићи затвор Цхроот.



Кораци за креирање мини затвора за "Басх" и 'ЛС' наредбу


1. Направите директориј који ће деловати као корен команде.

 $ mkdir jailed  
$ cd jailed

2 Створите све суштинске директоријуме да команда ради: У зависности од вашег оперативног система, потребне директоријуме се могу променити. Логично стварамо све ове директоријуме како би задржали копију потребних библиотека. Да бисте видели шта су потребне све директорије, видети корак 4.

 $ mkdir -p bin lib64/x86_64-linux-gnu lib/x86_64-linux-gnu

3.РУН ТХЕ "Која" наредба: Покрените наредбу "Коју" да бисте пронашли локацију ЛС и Басх Цомманд.Афтер који управља Којом командном копијама ти бинари у "бин" удружења нашег затвора. Проверите да ли немате ниједно од ових команди сличних. Од сада би се помислили на наш директориј као 'Затвор' Именик ради практичности.



 $ unalias ls # Required only if you have aliased ls command  
$ unalias bash # Required only if you have aliased bash command
$ cp $(which ls) ./bin/
$ cp $(which bash) ./bin/

4. Копирајте одговарајуће библиотеке / објекте : За извршне израде у нашем Затворен Директоријум за рад Требамо копирати одговарајуће библиотеке / објекте у затвореном директоријуму. Подразумевано извршни изглед гледа на локације које почињу са '/'. Да бисте пронашли зависности, користимо команду "ЛДД"

низ структура у језику ц
$ ldd $(which bash)  
linux-vdso.so.1 => (0x00007ffc75dd4000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f6577768000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6577564000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f657719a000)
/lib64/ld-linux-x86-64.so.2 (0x000055979f3fd000)

Покрените следеће команде за креирање одговарајућих директорија.

$ cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/x86_64-linux-gnu/  
$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
$ cp /lib64/ld-linux-x86-64.so.2 lib64/

Слично за ЛС 

$ ldd $(which ls)  
linux-vdso.so.1 => (0x00007fff4f05d000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9a2fd07000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a2f93e000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9a2f6cd000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a2f4c9000)
/lib64/ld-linux-x86-64.so.2 (0x000055e836c69000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a2f2ac000)
$ cp /lib/x86_64-linux-gnu/libselinux.so.1 lib/x86_64-linux-gnu/  
$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libpcre.so.3 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/
$ cp /lib64/ld-linux-x86-64.so.2 lib64/
$ cp /lib/x86_64-linux-gnu/libpthread.so.0 lib/x86_64-linux-gnu/


Коначна структура директорија мора бити слична томе

Цхроот затвор' title=

5. Судо цхроот: Покрените ову наредбу да промените корен у затворени директориј заједно са стазом до љуске. Подразумевано ће се покушати да учита "/ бин / сх" шкољку.

 $ cd ..  
$ sudo chroot jailed /bin/bash

Можете се суочити са овом грешком док користите команду Цхроот 

chroot: failed to run command `/bin/bash': No such file or directory

То може бити после две разлоге, било да датотека не постоји (што је очигледно) или када библиотека за утовар не успе или није доступна. Двапут проверите да ли су библиотеке на тачном локацији.

6 Нова шкољка мора да се појави: То је наш затворени бас. Тренутно имамо само 2 команде инсталиране басх и ЛС. Срећом ЦД и ПВД ​​су уграђене команде у басх љусци и тако их можете користити.

Лутајте око директорија Покушајте да приступите 'ЦД /../' или нешто слично. Покушајте да прекинете затвор, вероватно нећете моћи. :)

Да изађе из затвора 

 $ exit

Најважнији и занимљивији је то када трчите 

 $ ps aux

и пронађите поступак који ћете пронаћи да постоји само један процес 

root 24958 … 03:21 0:00 /usr/bin/sudo -E chroot jailed/ /bin/bash

Занимљиво је да процеси у затвореном шкољку како се покреће као једноставан дечији поступак ове љуске. Сви процеси унутар затвореног окружења су само једноставно поступак корисника у хотелу Хост ОС и изоловани су простори за именовање и име које пружају кернел, тако да је минималан изнад главе и као додатна корист.

Слично томе можете додати више команди на виртуелно затворено окружење. Да бисте додали сложеније програме, можда ћете морати да створите више директорија попут "/ проц 'и' / дев". Они повећавају сложеност процеса. Надам се да то не захтевамо за нашу сврху.

Ово је све што требате знати о цхроот и у затвору директорија. Наш крајњи циљ је да разумемо шта су контејнери и како су услуге попут АВС (Амазон Веб Сервицес) Гоогле Цлоуд и Доцкер који могу да пруже толико виртуелних случајева оперативних система на захтев. Такође како СИС-Админ покреће више веб сервера за више домена на једној физичкој машини. То је био само један корак ка разумевању