我如何检查它们确实如此运行?
ps -ef
在主机上显示容器中运行的所有进程都遵循模板就足够了吗
165536 5284 1104 0 12:19 ? 00:00:00 /usr/sbin/sshd -D
(第一个元素是 uid)
或者是否存在lxc
显示容器“特权级别”的参数?
答案1
是的,您足以看到,对于在容器中运行的进程,您的 UID 与 root 和主机中的其他用户不同。(setuid/setgid 映射魔法)
答案2
您链接到的页面描述的是 lxc 而不是 lxd。lxd 本质上是一个守护进程,它以更高级/更方便的方式提供对 lxc 功能的访问。我认为 lxd 的答案是:
$ lxc config get your-container-name security.privileged
如果显示“真”,则该容器具有特权,否则则不具有特权。
每stgraber 的帖子您还可以通过运行以下命令查询特权容器集:
$ lxc list security.privileged=true
答案3
还可以通过以下方式检查 LXD 容器内部容器是否无特权:
/proc/self/uid_map
/proc/self/gid_map
其中将显示类似内容(根0
映射到用户1000000
):
# cat /proc/self/gid_map
0 1000000 1000000000
# cat /proc/self/uid_map
0 1000000 1000000000
(假设/etc/subuid
&/etc/subgid
在容器主机上正确配置)
root
非特权用户可以读取这些值。
答案4
与此同时,您可以利用它lxc-ls
来获得一个列表,告诉您哪些容器以非特权方式运行,哪些容器不是:
# lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
container-name RUNNING 0 - - - true