Назад | Перейти на главную страницу

FreeIPA в контейнерах LXD / LXC - нельзя переключить пользователя

Установка состоит из одного FreeIPA-сервера и одного клиента, которые находятся в непривилегированных LXD-контейнерах на одном и том же хосте. Оба контейнера и хост-машина работают под управлением Ubuntu 16.04. Все настройки в основном являются значениями по умолчанию FreeIPA, сгенерированными ipa-server-install или ipa-client-installсоответственно.

Невозможно переключиться на пользователя, который был создан в каталоге FreeIPA:

# 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

(root находится в sudoers и может выполнять указанную выше команду с локальными пользователями.)

тестовый пользователь является действующим пользователем в Царстве, может kinit, а также распознается обеими системами: # id testuser uid=161200001(testuser) gid=161200001(testuser) groups=161200001(testuser)

sudo, похоже, не создает каких-либо соответствующих записей в auth.log, однако su делает:

su [1887]: Успешно завершено su для тестового пользователя root

su [1887]: + ??? корень: testuser

su [1887]: неверный идентификатор группы `161200001 'для пользователя` testuser': недопустимый аргумент

Поиск в Google вызывал проблемы cygwin + sshd только из-за ошибки недопустимого аргумента, что казалось неподходящим. Диапазон идентификаторов, выбранный FreeIPA, находится под лимитом UID Linux 2 ^ 32, даже при смещении контейнера 100000. В чем может быть проблема? Есть идеи куда копать дальше?

Изменить 1: Одна и та же комбинация Сервер / Клиент отлично работает на двух VirtualBox-машинах.

Изменить 2: Я думаю, что сузил причину до клиента IPA в контейнере, проблема сохраняется при работе с сервером IPA за пределами LXD.

Решено! Поделитесь решением, на случай, если кто-то еще с той же проблемой наткнется на эту ветку.

В конфигурации по умолчанию LXD / Host-System не выделяет достаточное количество UID / GID для своих контейнеров, поэтому вы не можете эффективно стать пользователем с таким высоким идентификатором, который был выбран FreeIPA случайным образом.

Файлы /etc/subuid и /etc/subgid есть записи, которые читаются root:100000:65536, в которых указаны идентификаторы, которые LXD будет эффективно использовать на момент написания. UID / GID хоста в диапазоне 100000-165536 сопоставляются с идентификаторами контейнеров от 0 до 65536. Контейнер, пытающийся использовать в моем случае ID 161200001, находится далеко за этой границей.

На основе этой статьи https://insights.ubuntu.com/2015/10/30/nested-containers-in-lxd/ , Я изменил сопоставленные идентификаторы и указал, какие идентификаторы может использовать FreeIPA. Изменения в sub * id-файлах могут работать только до инициализации контейнера.

В частности, этот конфиг работал:

Хост LXD:

/etc/subuid: корень: 5000000: 2500000

/etc/subgid: корень: 5000000: 2500000

Контейнер LXD с FreeIPA-сервером:

инициализировать сервер с помощью ipa-server-install --idstart=1000000 --idmax=2000000

Здесь идентификаторы каталогов находятся в диапазоне от 1.000.000 до 2.000.000, тогда как у клиента есть 2.500.000 доступных идентификаторов. Из-за смещения 5.000.000 хост также может присоединиться к этому каталогу FreeIPA. Отрегулируйте числа по желанию, YMMV.