使用非默认用户的 lxc-create

使用非默认用户的 lxc-create

使用“lxc-create -t​​ ubuntu”时,如何指定新容器的用户?我不想使用默认的 ubuntu:ubuntu,而是指定我自己的唯一用户名和密码。

我在 ubuntu 14.04 上使用 lxc 1.0.0~beta3。

答案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、variant=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

相关内容