Для создания виртуальных серверов неплохо было бы дать возможность с помощью hasher устанавливать систему с определенным набором пакетов (передаваемым в качестве аргумента или файла со списком). Основное отличие от текущей функциональности hasher'а - все файлы должны в этот чрут попадать с реальными (из пакетов) правами.
Да, вместо chroot для vserver можно использовать вот такую штуку: /usr/sbin/chcontext --flag lock --flag nproc --secure /usr/lib/util-vserver/capchroot --suid root . /bin/bash -login Где /bin/bash -login - команда, которая должна запускаться в этом контексте. При этом у запущенного таким образом приложения будут снесены все capability. Добавить capability можно аргументом --cap CAP_NAME для chcontext Единственное но: каталог с vserver'ами должен быть с правами 000 и атрибутом +t, что бы из него нельзя было выбраться.
Да, сейчас в принципе можно войти в hasher'овский чрут через эту команду, но там получается: drwxr-xr-x 2 500 515 65 May 14 17:53 dev/ drwx------ 3 514 515 4096 May 14 17:52 root/ drwxrwxrwt 2 500 500 6 May 14 17:08 .out/ drwxr-xr-x 2 500 500 6 May 14 17:08 .in/ drwx--x--x 2 500 500 88 May 14 17:07 .host/ drwxr-xr-x 32 514 515 4096 May 14 17:07 etc/ drwxr-xr-x 7 514 515 4096 May 14 17:06 lib/ drwxr-xr-x 18 514 515 4096 May 14 17:06 var/ drwxrwxr-t 20 500 515 4096 May 14 17:06 ./ drwxrwxr-t 20 500 515 4096 May 14 17:06 ../ drwxr-xr-x 13 514 515 143 May 14 17:06 usr/ drwxr-xr-x 2 514 515 4096 May 14 17:06 sbin/ dr-xr-xr-x 2 514 515 6 May 14 17:06 sys/ drwxrwxrwt 2 514 515 6 May 14 17:06 tmp/ dr-xr-xr-x 2 514 515 6 May 14 17:06 proc/ drwxr-xr-x 5 514 515 42 May 14 17:06 mnt/ drwxr-xr-x 2 514 515 6 May 14 17:06 opt/ drwxr-xr-x 2 514 515 6 May 14 17:06 home/ drwxr-xr-x 2 514 515 4096 May 14 17:06 bin/ drwx------ 2 514 515 6 May 14 17:06 boot/ Что понятно и объяснимо ;-(
Аналогично было бы неплохо модифицировать hasher для использования в separator. Для этого нужно сделать так, что бы все права сохранялись в файле и что бы вся работа выполнялась под одним (текущим) пользователем.
Сохранение прав для псевдорута я могу сделать в качестве опции, но выполнение от одного пользователя в рамках hasher нереально.
а такую штуку, как установку hasher'ом системы в отдельный каталог жесткого диска (под рутом) ? Я правда не знаю как это будет выглядеть в hasher'е... тогда, когда я его смотрел - мне показалось что это реализовать не очень просто.
Думаю, что можно сделать архив (со всеми правами), который потом можно распаковать куда угодно.
да, как вариант. т.е. - на выходе из separator'а будет идти фактически некий архив. можно попробовать модифицировать. а как будет выглядеть то, что я передаю hasher'у в качестве списка пакетов для установки ? кстати, hasher сейчас в separator используется частично для подготовки apt-box'а. Может быть сделать параметр hasher'у - поставить список пакетов из файла ? А как запускать скрипты, донастраивающие систему ?
Как запускать? Берёшь создаёшь скрипт в чруте из не чрута и потом его выполняешь в чруте. Например, как это происходит при установке базовой системы и т.д.
А вход в чрут через hasher ? Правильно ?
Можно использовать hsh-run --rooter (начиная с 1.0.21). Короче, что из первоначального пожелания осталось востребованным, но не реализованным?
пока непонятно, после выхода Compact'а я все это дело посмотрю снова
посмотрел ;-) . мне бы еще одну опцию - путь к создаваемому чруту. т.е. - у меня один workdir с repo и aptbox'ом, и создается на его базе в данный момент три-четыре chroot'а (в separator'е - fakechroot'а). Соответственно неплохо было бы иметь возможность овверайдить дефолтный каталог chroot
плюс к этому в hasher не получается поставить пакет dev С dev - критично. chroot'ы я могу симлинкать, а вот dev мне устанавливать нужно под fakeroot'ом.
и еще: попытался сделать так: зайти в chroot через hsh-run --shell rpm -e --nodeps dev выйти из чрута hsh-install dev Говорит что dev уже установлен. это вылезает из-за того, что hasher зачем-то правит базу в apt-box'е. можно конечно скопировать dev внутрь и попытаться уже там его поставить, но это тоже не работает: [root@vrider .in]# rpm -Uvh dev-3.3.1-alt13.1.i586.rpm Preparing... #################################################################################################### dev error: unpacking of archive failed on file /dev: cpio: utime failed - Operation not permitted
Оно? Date: Tue, 8 Aug 2006 00:30:01 +0400 From: "Dmitry V. Levin" <ldv@> To: ALT Linux sysadmin discuss <sysadmins@> Subject: Re: [Sysadmins] Распределение по контейнерам On Fri, Aug 04, 2006 at 02:34:22PM +0300, Slava Dubrovskiy wrote: > Dmitry V. Levin пишет: > > Я использую hasher, что-нибудь типа > > $ hsh --save ~/build --initroot --pkg-build=, > > $ hsh-install --save ~/build basesystem apt etcnet glibc less openssh-server sysklogd > > > > > Сделал так. Но владелец файлов в build/chroot получается пользователь А. > Как запаковать этот chroot в tgz чтобы права были правильные? $ cat tarify.sh #!/bin/sh -e cd / tar --create --file=- --numeric-owner --one-file-system --sparse -- * $ hsh-run --save --root --execute tarify.sh ~/build >altlinux-minimal.tar Правда в этом altlinux-minimal.tar не будет /dev/tty и /dev/ptmx, но это можно потом добавить. -- ldv
IMHO FIXED, а ещё есть spt и mkimage. Создавалка чрута от root для бездисковых клиентов есть в ltsp5-server (использовался spt, но поскольку чрут создаётся при установке тогда же, когда пакеты и так устанавливаются рутом -- то от этого отказались). Возможно, есть смысл её дистрибутивизировать, если ещё где нужно...