от Beco(23-02-2006)

рейтинг (14)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Създаване на chroot среди във Fedora Core и Red Hat Enterprise Linux чрез yum и rpm

Copyright ©2006 Веселин Колев, Софийски Университет „Св. Климент Охридски“

Лиценз: CC Attribution-ShareAlike


  1. Въведение.
  2. Уточнения.
  3. Създаване на директорията за изграждане на „chroot“ средата.
  4. Инициализиране на базата от данни на пакетната система RPM.
  5. Зареждане на OpenPGP сертификатите за проверка на електронните подписи върху пакетите.
  6. Създаване на repo файлове в помощ на инсталирането на пакети в „chroot“ средата.
  7. Инсталиране на необходимите пакети в „chroot“ средата.

1. Въведение.

Понякога дадено приложение или среда за работа, трябва да се обезопасят чрез заключването им в т.нар. „chroot“ среда. Причините за това са най-различни, били са и продължават да бъдат предмет на дискусии, но няма да бъдат дискутирани тук, доколкото този документ представлява само и единствено едно възможно ръководство за изграждането на „chroot“ средите.

Това ръководство не бива да се разглежда като абсолютно и напълно изчерпателно. Описаната в него практика има претенциите да бъде класифицирана като „добра“, но няма претенциите да отмени другите практики по изграждане на „chroot“ среди.

Авторът не носи отговорност за причинени щети, вследствие на използване на описаните тук действия и техники.

2. Уточнения.

В примерите по-долу ще се предполага, че „chroot“ средата ще бъде изградена в директория /home/chroot. Такова положение на директорията върху локалната файлова система не е задължиелно и е само примерно. Може да бъде използвана произволна и за предпочитане празна директория върху споменатата вече локалната файлова система.

Всички описани по-долу операции се извършват от супер потребител (root). Ориентир за това е наличието на знака „#“ през описанията за изпълнение на команден ред.

3. Създаване на директорията за изграждане на „chroot“ средата.

# mkdir /home/chroot

4. Инициализиране на базата от данни на пакетната система RPM.

# rpm --root /home/chroot --initdb

Изпълнението на този команден ред, създава началната и минимално необходима база данни, която да бъде използвана от пакетния мениджър. Ако операцията е протекла успешно, в директория /home/chroot/var/lib/rpm/ ще се намира файлово дърво със структура подобна на тази:

total 388
-rw-r--r-- 1 root root 24576 Feb 23 14:29 __db.001
-rw-r--r-- 1 root root 1318912 Feb 23 14:29 __db.002
-rw-r--r-- 1 root root 450560 Feb 23 14:29 __db.003
-rw-r--r-- 1 root root 12288 Feb 23 14:29 Packages

5. Зареждане на OpenPGP сертификатите за проверка на електронните подписи върху пакетите.

RPM е пакетна система, в която има вградени криптографски електронни подписи върху съдържанието на всеки пакет. За да може да се удостовери източника на пакета, в базата от данни на пакетната система, трябва да бъдат заредени OpenPGP сертификатите на дистрибуторите на пакетите, които ще бъдат инсталирани в „chroot“ средата.

Ще предполагаме, че трябва да бъдат инсталирани само базовите за дистрибуцията OpenPGP сертификати, които по подразбиране се намират в директория /usr/share/rhn:

# rpm --root /home/chroot/ --import /usr/share/rhn/RPM-GPG-KEY*

Ако ще бъде инсталиран OpenPGP сертификат, който не в базовата колекция, той трябва да бъде посочен като файл, например:

# rpm --root /home/chroot/ --import /path/to/openpgp-cert.asc

Последното може да се наложи да бъде направено по изключение, ако се налага в „chroot“ средата да бъдат инсталирани пакети от външни за дистрибуцията хранилища като това на Dag Wieers.

6. Създаване на repo файлове в помощ на инсталирането на пакети в „chroot“ средата.

При инсталирането на rpm пакети в „chroot“ средата с помощта на инструмента yum, трябва да се създадат repo файлове (един или повече, в зависимост от нуждите на конкретната инсталация), които отразяват отделните пакетни хранилища. Тези repo файлове ще се използват само за изграждане на „chroot“ средата. Също така в създадените специално за целта repo файлове не трябва да присъстват yum променливите $basearch и $release.

Ето как изглежда примерен преработен repo файла за инсталиране на Fedora Core 4 в „chroot“ среда:

fedora.repo

[base]
name=Fedora Core 4 — i386 — Base
baseurl=ftp://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/
enabled=1
gpgcheck=1

[updates-released]
name=Fedora Core 4 — i386 — Released Updates
baseurl=ftp://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/i386/
enabled=1
gpgcheck=1

За изпълнението на действията описани в следващата точка, ще се предполага, че този файл се намира в директория /home/yum.repo.chroot.i386 и носи името fedora.repo.

7. Инсталиране на необходимите пакети в „chroot“ средата.

Необходимите за инсталация в „chroot“ средата пакети могат да се разделят на две категории:

  • базови
  • допълнителни

Единственият базов пакет, който трябва да бъде инсталиран чрез yum е glibc. При инсталирането му ще бъдат инсталирани (като зависимости) и другите базови пакети.

# yum --installroot=/home/chroot -c /home/yum.repo.chroot.i386/fedora.repo install glibc

Допълнителните пакети се инсталират в зависимост от целите на изграждането на „chroot“ средата. Един съвсем кратък и нагледен пример може да бъде даден с инсталирането на пакета bash:

# yum --installroot=/home/chroot -c /home/yum.repo.chroot.i386/fedora.repo install bash

След инсталацията му може да се провери правилността на изграждането на „chroot“ средата така:

# chroot /home/chroot
bash-3.00#

За излизане от „chroot“ средата може да се използва командата exit:

bash-3.00# exit
exit
#

Ако се налага да бъдат инсталирани пакети от външни за дистрибуцията хранилища, просто трябва да се състави правилно (по описаната в точка 6 схема) съответния repo файл и да се използва посочената в тази точка схема за инсталация на пакети с yum.

Описаната тук схема позволява актуализация на пакетите в „chroot“ средата с минимални усилия. Ето как изглежда актуализиране на базовите за дистрибуцията пакети, ако следваме пак горния пример на инсталация:

# yum --installroot=/home/chroot -c /home/yum.repo.chroot.i386/fedora.repo update

Нужно е да се каже, че при стандартно използваните техники на създаване на „chroot“ среди чрез копиране на файлове, много трудно може да се реализира актуализация на пакетите, а това би довело до проблеми в сигурността.



<< Линукс не е Windows! | КАК ДА печатаме от Windows на CUPS принтер/опашка >>