<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>4165</bug_id>
          
          <creation_ts>2004-05-14 17:46:10 +0400</creation_ts>
          <short_desc>Создание vserver&apos;а</short_desc>
          <delta_ts>2007-11-10 20:16:14 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>hasher</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>at</cc>
    
    <cc>glebfm</cc>
    
    <cc>inger</cc>
    
    <cc>lakostis</cc>
    
    <cc>ldv</cc>
    
    <cc>led</cc>
    
    <cc>mike</cc>
    
    <cc>mouse</cc>
    
    <cc>placeholder</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>13713</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2004-05-14 17:46:10 +0400</bug_when>
    <thetext>Для создания виртуальных серверов неплохо было бы дать возможность с помощью
hasher устанавливать систему с определенным набором пакетов (передаваемым в
качестве аргумента или файла со списком). Основное отличие от текущей
функциональности hasher&apos;а - все файлы должны в этот чрут попадать с реальными
(из пакетов) правами.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13736</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2004-05-14 18:01:10 +0400</bug_when>
    <thetext>Да, вместо 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&apos;ами должен быть с правами 000 и атрибутом +t,
что бы из него нельзя было выбраться.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13737</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2004-05-14 18:06:53 +0400</bug_when>
    <thetext>Да, сейчас в принципе можно войти в hasher&apos;овский чрут через эту команду, но там
получается:

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/

Что понятно и объяснимо ;-(
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25530</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-10 11:12:30 +0400</bug_when>
    <thetext>Аналогично было бы неплохо модифицировать hasher для использования в separator.

Для этого нужно сделать так, что бы все права сохранялись в файле и что бы вся
работа выполнялась под одним (текущим) пользователем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25555</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2005-06-10 17:33:48 +0400</bug_when>
    <thetext>Сохранение прав для псевдорута я могу сделать в качестве опции, но выполнение от
одного пользователя в рамках hasher нереально.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25560</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-10 17:55:14 +0400</bug_when>
    <thetext>а такую штуку, как установку hasher&apos;ом системы в отдельный каталог жесткого
диска (под рутом) ?

Я правда не знаю как это будет выглядеть в hasher&apos;е... тогда, когда я его
смотрел - мне показалось что это реализовать не очень просто.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25562</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2005-06-10 18:01:43 +0400</bug_when>
    <thetext>Думаю, что можно сделать архив (со всеми правами), который потом можно
распаковать куда угодно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25564</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-10 18:25:56 +0400</bug_when>
    <thetext>да, как вариант. т.е. - на выходе из separator&apos;а будет идти фактически некий архив.

можно попробовать модифицировать. а как будет выглядеть то, что я передаю
hasher&apos;у в качестве списка пакетов для установки ? 

кстати, hasher сейчас в separator используется частично для подготовки apt-box&apos;а.

Может быть сделать параметр hasher&apos;у - поставить список пакетов из файла ?

А как запускать скрипты, донастраивающие систему ?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25565</commentid>
    <comment_count>8</comment_count>
    <who name="Kachalov Anton">mouse</who>
    <bug_when>2005-06-10 18:28:26 +0400</bug_when>
    <thetext>Как запускать? Берёшь создаёшь скрипт в чруте из не чрута и потом его выполняешь
в чруте. Например, как это происходит при установке базовой системы и т.д.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25567</commentid>
    <comment_count>9</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-06-10 18:33:26 +0400</bug_when>
    <thetext>А вход в чрут через hasher ?
Правильно ?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30099</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2005-09-05 16:42:13 +0400</bug_when>
    <thetext>Можно использовать hsh-run --rooter (начиная с 1.0.21).

Короче, что из первоначального пожелания осталось востребованным, но не
реализованным?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30103</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-09-05 17:50:35 +0400</bug_when>
    <thetext>пока непонятно, после выхода Compact&apos;а я все это дело посмотрю снова
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30172</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-09-06 18:21:36 +0400</bug_when>
    <thetext>посмотрел ;-) . мне бы еще одну опцию - путь к создаваемому чруту.

т.е. - у меня один workdir с repo и aptbox&apos;ом, и создается на его базе в данный
момент три-четыре chroot&apos;а (в separator&apos;е - fakechroot&apos;а).

Соответственно неплохо было бы иметь возможность овверайдить дефолтный каталог
chroot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30263</commentid>
    <comment_count>13</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-09-08 12:59:52 +0400</bug_when>
    <thetext>плюс к этому в hasher не получается поставить пакет dev

С dev - критично. chroot&apos;ы я могу симлинкать, а вот dev мне устанавливать нужно
под fakeroot&apos;ом.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30264</commentid>
    <comment_count>14</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2005-09-08 13:24:33 +0400</bug_when>
    <thetext>и еще:
попытался сделать так:

зайти в chroot через hsh-run --shell
rpm -e --nodeps dev
выйти из чрута
hsh-install dev

Говорит что dev уже установлен. 
это вылезает из-за того, что hasher зачем-то правит базу в apt-box&apos;е.

можно конечно скопировать 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
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39945</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2006-09-01 11:32:42 +0400</bug_when>
    <thetext>Оно?

Date: Tue, 8 Aug 2006 00:30:01 +0400
From: &quot;Dmitry V. Levin&quot; &lt;ldv@&gt;
To: ALT Linux sysadmin discuss &lt;sysadmins@&gt;
Subject: Re: [Sysadmins] Распределение по контейнерам

On Fri, Aug 04, 2006 at 02:34:22PM +0300, Slava Dubrovskiy wrote:
&gt; Dmitry V. Levin пишет:
&gt; &gt; Я использую hasher, что-нибудь типа
&gt; &gt; $ hsh --save ~/build --initroot --pkg-build=,
&gt; &gt; $ hsh-install --save ~/build basesystem apt etcnet glibc less openssh-server
sysklogd
&gt; &gt;
&gt; &gt;   
&gt; Сделал так. Но владелец файлов в build/chroot получается пользователь А.
&gt; Как запаковать этот 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 &gt;altlinux-minimal.tar

Правда в этом altlinux-minimal.tar не будет /dev/tty и /dev/ptmx, но это
можно потом добавить.


-- 
ldv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57918</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-11-10 20:16:13 +0300</bug_when>
    <thetext>IMHO FIXED, а ещё есть spt и mkimage.

Создавалка чрута от root для бездисковых клиентов есть в ltsp5-server
(использовался spt, но поскольку чрут создаётся при установке тогда же, когда
пакеты и так устанавливаются рутом -- то от этого отказались).  Возможно, есть
смысл её дистрибутивизировать, если ещё где нужно...</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>