Журнал LinuxFormat - перейти на главную

LXF134:DrBrown2

Материал из Linuxformat
Версия от 13:03, 17 сентября 2011; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Кон­тейнер­ные тех­но­ло­гии

В Linux та­ких мно­же­ство – раз­бе­рем­ся с их ти­па­ми.


При ка­ж­дом за­пуске про­грам­мы в Linux она раз­де­ля­ет неко­то­рые ре­сур­сы с дру­ги­ми при­ло­жения­ми и вир­туа­ли­зи­ру­ет (или изо­ли­ру­ет) осталь­ные. Ка­кие ре­сур­сы раз­де­ля­ют­ся, а ка­кие изо­ли­ру­ют­ся, за­ви­сит от ис­поль­зуе­мой тех­но­ло­гии. Вот неболь­шой об­зор.

  • Про­цес­сы Про­цес­сы – низ­ший уро­вень кон­тейнери­за­ции, и вы да­же, на­вер­ное, вор­чи­те на ме­ня за то, что я отнес их к этой ка­те­го­рии. Но про­цесс – и в са­мом де­ле кон­тейнер, в ко­то­ром вы­пол­ня­ет­ся про­грам­ма. Сре­ди про­че­го он изо­ли­ру­ет про­стран­ство па­мя­ти про­грам­мы (у ка­ж­до­го про­цес­са есть ил­лю­зия, что все ад­рес­ное про­стран­ство при­над­ле­жит ему) и на­бо­ры фай­ло­вых де­ск­рип­то­ров про­грам­мы (на­при­мер, ка­ж­дый про­цесс зна­ет, ку­да под­клю­чен его стан­дарт­ный по­ток вы­во­да). Эта тех­но­ло­гия кон­тейнери­за­ции фун­да­мен­таль­на для Linux и Unix и су­ще­ству­ет с неза­па­мят­ных вре­мен.
  • Chroot Идея здесь в том, что­бы ог­раничить про­грам­му оп­ре­де­лен­ной ча­стью фай­ло­во­го де­ре­ва («тюрь­мой» или «пе­сочницей»). Ме­ханизм осно­ван на систем­ном вы­зо­ве chroot (из­менить ко­рень), ко­то­рый из­ме­ня­ет пред­став­ление про­цес­са о том, где на­хо­дит­ся корневой ка­та­лог (/). На­при­мер, ес­ли про­цесс де­ла­ет chroot в ка­та­лог /var/run/foobar и за­тем об­ра­ща­ет­ся к фай­лу /etc/fstab, на са­мом де­ле он бу­дет об­ра­щать­ся к фай­лу /var/run/foobar/etc/fstab.

    Для пра­виль­но напи­сан­ной про­грам­мы это ме­ра безо­пас­но­сти – про­грам­ма не смо­жет по­лу­чить доступ ни к ка­ким фай­лам вне «тюрь­мы». Часто с при­менением этой тех­но­ло­гии ра­бо­та­ют де­мо­ны – на ум при­хо­дит DNS-сер­вер Bind. Но дан­ный ме­ханизм нель­зя на­звать силь­ным, да он никогда и не пре­тен­до­вал на это. Ес­ли де­мон вы­пол­ня­ет­ся под поль­зо­ва­те­лем root, и у него есть уяз­ви­мость (к при­ме­ру, ошиб­ка при пе­ре­полнении бу­фе­ра), су­ще­ству­ет несколь­ко хо­ро­шо до­ку­мен­ти­ро­ван­ных спо­со­бов вы­рвать­ся из тюрь­мы. Ме­ханизм chroot на са­мом де­ле пред­на­зна­чал­ся для то­го, что­бы пре­доста­вить про­грам­ме соб­ствен­ное ви­дение фай­ло­вой систе­мы, а раз­ра­бот­чи­кам – «пе­сочницу» для тести­ро­вания но­вых про­грамм, а не для то­го, что­бы сдер­жи­вать про­грам­мы с уяз­ви­мо­стя­ми.
    При соз­дании «тюрь­мы» для про­грам­мы ну­жен оп­ре­де­лен­ный под­ход. Нель­зя про­сто бро­сить узника в ка­ме­ру без еды и во­ды и ждать, что он вы­жи­вет. В «тюрь­ме» долж­ны быть фай­лы, необ­хо­ди­мые для ра­бо­ты про­грам­мы, фай­лы дан­ных, фай­лы на­строй­ки; на­вер­ное, ко­пии неко­то­рых фай­лов из /etc и /dev, и т. д.

Персональные инструменты
купить
подписаться
Яндекс.Метрика