При использовании ядра ОС с усиленной защитой (ядра hardened) использование непривилегированных контейнеров невозможно, так как в hardened ядре в целях повышения защищенности запрещено использование технологии user_namespaces (CONFIG_USER_NS), необходимой для работы непривилегированных контейнеров.

В данной статье контейнер создаётся непосредственно в домашнем каталоге пользователя.
При планировании реальной установки следует рассмотреть возможности создания специального непривилегированного пользователя для размещения у него контейнеров.


Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) с ядром generic
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 с ядром generic
  • Astra Linux Common Edition 2.12
  1. Установить пакеты lxc, libpam-cgfs:

    sudo apt install lxc libpam-cgfs

  2. После установки пакетов перезагрузить систему:

    sudo reboot

  3. Убедиться, что версия пакета lxc >= 3.1.0+really3.0.3-8:

    apt-cache policy lxc

  4. Создать пользовательский конфигурационный файл, для чего:

    1. Найти идентификаторы непривилегированного пользователя.
      Это можно сделать командой:

      grep $USER /etc/sub{u,g}id
    2. Создать каталог ~/.config/lxc/:

      mkdir ~/.config/lxc/

    3. Добавить найденные идентификаторы в файл ~/.config/lxc/default.conf:

      lxc.idmap = u $subuid $uid
      lxc.idmap = g $subgid $gid


      Сценарий для создания пользовательского конфигурационного файла сразу с занесением в него идентификаторов:

      mkdir -p ~/.config/lxc
      sed -e "/^${USER}/"'!d; s/[^:]*:/lxc.idmap = u 0 /; s/:/ /' /etc/subuid >>~/.config/lxc/default.conf
      sed -e "/^${USER}/"'!d; s/[^:]*:/lxc.idmap = g 0 /; s/:/ /' /etc/subgid >>~/.config/lxc/default.conf

  5. Создать контейнер

    lxc-create -t download -n test -- -d debian --no-validate -a amd64 -r buster

  6. Добавить разрешение на домашнюю папку пользователя:

    chmod a+x $HOME

  7. Запустить контейнер

    lxc-start -n test