Како користити команду цхроот на Линуку

Команда цхроот може да вас пошаље у затвор, да задржи ваше развојно или тестно окружење изоловано или само да побољша безбедност вашег система. Показујемо вам најлакши начин да га користите.

Шта је цхроот?

Ако покушате да измерите корисност команде, морате узети у обзир функционалност коју она пружа и лакоћу коришћења. Ако је превише компликован за употребу или превише дуготрајан да би их натерао да пожеле да га користе, функционалност би такође могла бити нула. Ако га нико не користи, не пружа никакву функционалност.

У дискусијама са корисницима Линук-а — лично и на форумима — чини се да је команда цхроот она за коју се сматра да је тешка за коришћење или да је превише лукава и заморна за подешавање. Чини се да се овај сјајан услужни програм не користи онолико колико би могао бити.

Са цхроот-ом можете подесити и покренути програме или интерактивне љуске као што је Басх у инкапсулираном систему датотека коме је онемогућена интеракција са вашим регуларним системом датотека. Све унутар цхроот окружења је уписано и садржано. Ништа у цхроот окружењу не може да види даље од сопственог, посебног, роот директоријума без ескалације на роот привилегије. Због тога је ова врста окружења добила надимак цхроот затвора. Израз „затвор“ не треба мешати са ФрееБСД’с јаил команда, која ствара цхроот окружење то је сигурније него уобичајено цхроот окружење.

Али у ствари, постоји веома једноставан начин коришћења цхроот-а, кроз који ћемо проћи. Користимо редовне Линук команде које ће радити на свим дистрибуцијама. Неке Линук дистрибуције имају наменске алате за подешавање цхроот окружења, као што су дебоотстрап за Убунту, али ми смо овде дистро-агностички.

Када треба да користите цхроот?

цхроот окружење пружа функционалност сличну оној виртуелне машине, али је лакше решење. Заробљеном систему није потребан хипервизор да би се инсталирао и конфигурисао, као нпр ВиртуалБок или Управљач виртуелним машинама. Нити не мора да има кернел инсталиран у затвореном систему. Заробљени систем дели ваше постојеће језгро.

У неким смислу, цхроот окружења су ближа контејнерима као што су ЛКСЦ него на виртуелне машине. Лагани су, брзо се постављају, а креирање и покретање једног може бити аутоматизовано. Као и контејнери, један згодан начин да их конфигуришете је да инсталирате довољно оперативног система да бисте постигли оно што је потребно. На питање „шта је потребно“ одговара се гледањем како ћете користити своје цхроот окружење.

  Како уклонити Инстаграм филтер са фотографије

Неке уобичајене употребе су:

Развој софтвера и верификација производа. Програмери пишу софтвер и тим за верификацију производа (ПВ) га тестира. Понекад ПВ пронађе проблеме који се не могу реплицирати на рачунар програмера. Програмер има све врсте алата и библиотека инсталираних на свом развојном рачунару које просечан корисник—и ПВ—неће имати. Често се покаже да нови софтвер који ради за програмера, али не и за друге, користи ресурс на рачунару програмера који није укључен у пробно издање софтвера. цхроот омогућава програмерима да на свом рачунару имају једноставно окружење ваниле у које могу да уроне софтвер пре него што га дају ПВ-у. Заробљено окружење се може конфигурисати са минималним зависностима које софтвер захтева.

Смањење ризика развоја. Програмер може да креира наменско развојно окружење тако да ништа што се у њему дешава не може да поквари његов стварни рачунар.

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

Опоравак и надоградња система датотека: Ако Линук инсталација постане нефункционална, можете користити цхроот да монтирате оштећени систем датотека на тачку монтирања на Ливе ЦД-у. Ово вам омогућава да радите у оштећеном систему и покушате да га поправите као да је нормално монтиран у роот /. То значи да ће очекиване путање датотека унутар оштећеног система бити исправно референциране из основног директоријума, а не из тачке монтирања Ливе ЦД-а. Слична техника је коришћена у чланку који описује како да мигрирате Линук систем датотека са ект2 или ект3 на ект4.

Рингфенцинг Апплицатионс. Покретање ФТП сервера или другог уређаја повезаног на интернет унутар цхроот окружења ограничава штету коју спољни нападач може да направи. Ово може бити вредан корак у јачању безбедности вашег система.

Креирање цхроот окружења

Потребан нам је директоријум који ће деловати као основни директоријум цхроот окружења. Да бисмо имали скраћени начин упућивања на тај директоријум, креираћемо променљиву и у њу сачувати име директоријума. Овде постављамо променљиву за чување путање до „тестроот“ директоријума. Није битно ако овај директоријум још увек не постоји, ускоро ћемо га направити. Ако директоријум постоји, требало би да буде празан.

chr=/home/dave/testroot

Ако директоријум не постоји, морамо га креирати. Ово можемо да урадимо са овом командом. Опција -п (родитељи) осигурава да се сви недостајући родитељски директорији креирају у исто време:

mkdir -p $chr

Морамо да креирамо директоријуме за држање делова оперативног система које ће наше цхроот окружење захтевати. Поставићемо минималистичко Линук окружење које користи Басх као интерактивну шкољку. Такође ћемо укључити команде тоуцх, рм и лс. То ће нам омогућити да користимо све Басх-ове уграђене команде и додир, рм и лс. Моћи ћемо да креирамо, листамо и уклањамо датотеке и користимо Басх. И – у овом једноставном примеру – то је све.

  Да ли су бесплатни ВПН-ови спорији од плаћених ВПН-ова?

Наведите директоријуме које треба да креирате у оквиру {} проширење стезника.

mkdir -p $chr/{bin,lib,lib64}

Сада ћемо променити директоријум у наш нови основни директоријум.

cd $chr

Копирајмо бинарне датотеке које су нам потребне у нашем минималистичком Линук окружењу из вашег редовног „/бин” директоријума у ​​наш цхроот „/бин” директоријум. Опција -в (вербосе) чини да нам цп каже шта ради док извршава сваку радњу копирања.

cp -v /bin/{bash,touch,ls,rm} $chr

Датотеке се копирају за нас:

Ови бинарни фајлови ће имати зависности. Морамо да откријемо шта су и да копирамо те датотеке иу наше окружење, иначе басх, тоуцх, рм и лс неће моћи да функционишу. Ово треба да урадимо редом за сваку од наших изабраних команди. Прво ћемо урадити Басх. Команда лдд ће навести зависности за нас.

ldd /bin/bash

Зависности су идентификоване и наведене у прозору терминала:

Морамо да копирамо те датотеке у наше ново окружење. Бирање детаља из тог списка и њихово копирање једног по једног ће бити дуготрајно и подложно грешкама.

Срећом, можемо га полуаутоматизирати. Поново ћемо навести зависности, а овог пута ћемо формирати листу. Затим ћемо проћи кроз листу копирајући датотеке.

Овде користимо лдд да наведемо зависности и унесемо резултате кроз цев у егреп. Коришћење егреп-а је исто као и коришћење греп-а са опцијом -Е (проширени регуларни изрази). Опција -о (само подударање) ограничава излаз на одговарајуће делове линија. Тражимо одговарајуће датотеке библиотеке које се завршавају бројем [0-9].

list="$(ldd /bin/bash | egrep -o '/lib.*.[0-9]')"

Можемо да проверимо садржај листе користећи ехо:

echo $list

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

Опција -в (вербосе) узрокује да цп најављује сваку копију док је изводи. Опција –парентс осигурава креирање свих недостајућих родитељских директорија у цхроот окружењу.

for i in $list; do cp -v --parents "$i" "${chr}"; done

за и у $лист;  до цп -в --родитељи

А ово је излаз:

  Како пребројати празне или празне ћелије у Гоогле табелама

Користићемо ту технику да ухватимо зависности сваке друге команде. И ми ћемо користити технику петље да извршимо стварно копирање. Добра вест је да треба да направимо само малу измену команде која прикупља зависности.

Команду можемо да преузмемо из наше историје команди тако што ћемо неколико пута притиснути тастер стрелице нагоре, а затим извршити измене. Команда за копирање у петљи уопште не мора да се мења.

Овде смо користили тастер стрелице нагоре да пронађемо команду и уредили смо је тако да каже додир уместо басх.

list="$(ldd /bin/touch | egrep -o '/lib.*.[0-9]')"

Сада можемо поновити потпуно исту команду петље као и раније:

for i in $list; do cp -v --parents "$i" "${chr}"; done

за и у $лист;  до цп -в --родитељи

И наши фајлови се копирају за нас:

Сада можемо да уредимо командну линију листе за лс:

list="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"

Опет, користићемо исту команду петље. Није важно који су фајлови на листи. Слепо ради преко листе копирајући датотеке за нас.

for i in $list; do cp -v --parents "$i" "${chr}"; done

за и у $лист;  до цп -в --родитељи

И зависности за лс су копиране за нас:

Уређујемо командну линију листе последњи пут, чинећи је да ради за рм:

list="$(ldd /bin/ls | egrep -o '/lib.*.[0-9]')"

Последњи пут користимо команду за копирање у петљи:

for i in $list; do cp -v --parents "$i" "${chr}"; done

Последње наше зависности се копирају у наше цхроот окружење. Коначно смо спремни да користимо команду цхроот. Ова команда поставља корен цхроот окружења и одређује коју апликацију треба покренути као љуску.

sudo chroot $chr /bin/bash

Наше цхроот окружење је сада активно. Промпт прозора терминала се променио, а интерактивном љуском рукује басх схелл у нашем окружењу.

Можемо испробати команде које смо унели у окружење.

ls
ls /home/dave/Documents

Команда лс функционише онако како бисмо очекивали када је користимо у окружењу. Када покушамо да приступимо директоријуму изван окружења, команда не успева.

Можемо користити додир да креирамо датотеку, лс да је наведемо и рм да је уклонимо.

touch sample_file.txt
ls
rm sample_file.txt
ls

Наравно, можемо користити и уграђене команде које пружа Басх шкољка. Ако унесете помоћ у командну линију, Басх ће их навести за вас.

help

Користите екит да напустите цхроот окружење:

exit

Ако желите да уклоните цхроот окружење, можете га једноставно избрисати:

rm -r testroot/

Ово ће рекурзивно избрисати датотеке и директоријуме у цхроот окружењу.

Аутоматизирајте за удобност

Ако мислите да би вам цхроот окружења могла бити корисна, али су помало незгодна за подешавање, запамтите да увек можете да преузмете оптерећење и ризик од задатака који се понављају користећи псеудониме, функције и скрипте.