lxc-create с пользователем не по умолчанию

lxc-create с пользователем не по умолчанию

При использовании "lxc-create -t ​​ubuntu" как указать пользователя нового контейнера? Мне не нужен ubuntu:ubuntu по умолчанию, а нужно указать свое уникальное имя пользователя и пароль.

Я использую lxc 1.0.0~beta3 на Ubuntu 14.04.

решение1

Создание пользователя выполняется в файле шаблона, поэтому вам необходимо изменить файл шаблона Ubuntu, например: lxc-ubuntu. Шаблоны хранятся в /usr/local/share/lxc/templatesили /usr/lib/lxc/templates/. Откройте его в вашем любимом редакторе и найдите следующие строки (они являются configure_ubuntu()функцией файла шаблона):

if [ -z "$bindhome" ]; then
    chroot $rootfs useradd --create-home -s /bin/bash ubuntu
    echo "ubuntu:ubutu" | chroot $rootfs chpasswd
fi

Замените ubuntuна свое имя пользователя и пароль, т.е. эти строки будут выглядеть так:

if [ -z "$bindhome" ]; then
    chroot $rootfs useradd --create-home -s /bin/bash USERNAME
    echo "USERNAME:PASSWORD" | chroot $rootfs chpasswd
fi

Затем создайте контейнер как обычно.

решение2

Более простым вариантом для одноразового использования было бы создать пользователя самостоятельно. Более новые (по крайней мере, ubuntu, который я только что попробовал) шаблоны даже не поставляются с пользователем ubuntu/ubuntu по умолчанию, см. это сообщение:

Вы только что создали контейнер Ubuntu (release=trusty, arch=amd64, option=default)

Чтобы включить sshd, выполните: apt-get install openssh-server

В целях безопасности образы контейнеров поставляются без учетных записей пользователей и без пароля root.

Используйте lxc-attach или chroot непосредственно в rootfs, чтобы установить пароль root или создать учетные записи пользователей.

Использование lxc-attach, насколько я знаю, является самым быстрым способом, просто сделайте следующее:

you@hostbox:/$ lxc-attach -n yourlxc
root@yourlxc:/# adduser username

решение3

Вы можете передать параметры командной строки в шаблон/скрипт, который устанавливает и настраивает контейнер Ubuntu LXC./usr/share/lxc/templates/lxc-ubuntu

lxc-create -t ubuntu -n <CONTAINER_NAME> -- --user <USER_NAME> --password <USER_PASSWORD>

Другие варианты:

./lxc-ubuntu -h|--help [-a|--arch] [-b|--bindhome <user>] [-d|--debug]
   [-F | --flush-cache] [-r|--release <release>] [ -S | --auth-key <keyfile>]
   [--rootfs <rootfs>] [--packages <packages>] [-u|--user <user>] [--password <password>]
   [--mirror <url>] [--security-mirror <url>]
release: the ubuntu release (e.g. precise): defaults to host release on ubuntu, otherwise uses latest LTS
bindhome: bind <user>'s home into the container
          The ubuntu user will not be created, and <user> will have
          sudo access.
arch: the container architecture (e.g. amd64): defaults to host arch
auth-key: SSH Public key file to inject into container
packages: list of packages to add comma separated
mirror,security-mirror: mirror for download and /etc/apt/sources.list

Связанный контент