LXD / LXC容器中的FreeIPA – 不能切换用户

安装程序由一个FreeIPA服务器和一个客户端组成,这两个客户端都驻留在同一主机上的非特权LXD容器中。 容器和主机都运行Ubuntu 16.04。 所有设置基本上都是FreeIPA默认值,分别由ipa-server-installipa-client-install

切换到在FreeIPA目录中创build的用户是不可能的:

# su testuser setgid: Invalid argument

# sudo -s -u testuser sudo: unable to change to runas gid: Invalid argument sudo: unable to change to runas gid: Invalid argument root is not in the sudoers file. This incident will be reported

(根目录是sudoers,可以和本地用户一起执行上面的命令。)

testuser是Realm内的有效用户,能够kinit ,并且也被两个系统识别: # id testuser uid=161200001(testuser) gid=161200001(testuser) groups=161200001(testuser)

sudo似乎没有在auth.log中产生任何相关的条目,然而,

su [1887]:root用户成功为testuserinputsu

苏[1887]:+ ??? 根:TESTUSER

su [1887]:用户testuser的坏组ID“161200001”:无效的参数

谷歌search只提出了cygwin + sshd问题的无效参数错误,这似乎不合格。 FreeIPAselect的ID范围在Linux的UID限制2 ^ 32下,即使容器偏移量为100.000。 这里可能是什么问题? 任何想法,进一步挖掘?

编辑1:相同的服务器/客户端星座在两个VirtualBox机器中工作正常。

编辑2:我认为我缩小了原因到一个容器中的IPA客户端,这个问题在LXD以外的IPA服务器上运行时依然存在。

解决了! 共享解决scheme,以防其他人有同样的问题在这个线程上绊倒。

在默认configuration中,LXD /主机系统不会为其容器分配足够的UID / GID,因此您无法有效成为FreeIPA随机挑选的ID高的用户。

文件/etc/subuid/etc/subgid具有读取root:100000:65536条目,它logging了LXD在编写时将有效使用的ID。 100000-165536范围内的主机UID / GID映射到0-65536的容器ID。 在我的情况下,试图使用ID 161200001的容器远远超过了这个边界。

基于这篇文章https://insights.ubuntu.com/2015/10/30/nested-containers-in-lxd/ ,我修改了映射的ID,并指定了FreeIPA可能使用的ID。 只有在初始化容器之前,对sub * id文件的更改才有效。

具体来说,这个configuration工作:

LXD主机:

/etc/subuid: root:5000000: /etc/subuid:

/etc/subgid: root:5000000: /etc/subgid:

LXD容器与FreeIPA服务器:

ipa-server-install --idstart=1000000 --idmax=2000000初始化服务器ipa-server-install --idstart=1000000 --idmax=2000000

在这里,目录ID范围从1.000.000 – 2.000.000,而客户端有2.500.000可用的ID。 由于5.000.000的偏移量,主机也可以joinFreeIPA目录。 根据需要调整数字,YMMV。