如何检查 LXD 容器是否以非特权运行?

如何检查 LXD 容器是否以非特权运行?

我是配置我的 LXD 容器以非特权身份运行

我如何检查它们确实如此运行?

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

相关内容