Установка состоит из одного 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.