0%

910实验室服务器配置-非特权LXC容器

创建非特权LXC容器

对于特权容器来说,虽然创建过程比较方便,但存在进程权限的问题,隐形容器的安全性。
为了确保服务器用户的误操作不会导致服务器崩溃,经过实验,决定使用非特权容器来进行隔离。

非特权LXC

对于非特权的LXC容器来说,容器中实际执行的0号用户ID,并不对应服务器的0号用户ID,从而确保服务器上的内容不会出现问题。

LXC采用uid映射的方法,将容器中的UID映射到非特权服务器用户的UID空间。

因为服务器需要挂载一些设备,而只有服务器真实的特权用户可以对设备进行操作,容器内的用户是无法完成这一操作的。

检查现有的UID/GID映射表

通过检查 /etc/subuid 及 /etc/subgid ,得到映射范围。

默认的映射规则为,对于第一个用户

1
2
uid:100000:65536
gid:100000:65536

设定网卡上限

设置LXC的配置文件 /etc/lxc/lxc-usernet

添加类似于”user_name veth lxcbr0 XX”

的记录,即可将用户”user_name”通过网桥”lxcbr0”创建虚拟网卡的最大数量,限定为”XX”

修改LXC配置

以上工作完成后,需要进行配置文件的修改。

检查文件夹

如果目录 “/.config/lxc”和”/.local/share/lxc”如果不存在,执行下面两条命令,创建目录

1
2
mkdir -p ~/.config/lxc
mkdir -p ~/.local/share/lxc

其中,”/.local/share/lxc”即为创建好的容器存储位置,”/.config/lxc”是容器的配置文件存储位置。

设定配置文件

将LXC的默认配置文件 “/etc/lxc/default.conf” 复制到 “~/.config/lxc/default.conf”

并在最后添加两条配置

1
2
lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536

需要注意的是,配置中的数字,均应和subuid及sungid对应起来,否则会出现错误。

重启或重新登陆

配置完以上内容后,建议重启,或者重新登陆,确保配置生效。

创建并配置容器

创建容器

对于非特权容器,默认类型必须是”download”

1
lxc-create -t download -n XXXX -- --server mirrors6.tuna.tsinghua.edu.cn/lxc-images

新创建的LXC容器名即为”XXXX”,通过清华大学的IPv6镜像服务器下载。

创建过程中,可以选择操作系统类型、版本、架构

配置容器

首先开启容器

1
lxc-start -n XXXX -d

-d表示以后台模式运行,”XXXX”即为创建的容器名

之后可以查看容器的状态

1
lxc-info -n XXXX

如果查看结果显示容器正在运行,说明配置及安装正确。

** 需要注意的是,非特权容器的用户密码并未设定 **
需要由宿主机进行设定

1
lxc-attach -n XXXX

即可以root身份登入到”XXXX”容器中

然后就可以给默认用户设置密码、更改用户权限,LXC容器内的用户即可执行sudo等权限。