セットアップは、1つのFreeIPAサーバーと1つのクライアントで構成され、どちらも同じホスト上の非特権LXDコンテナーに存在します。コンテナとホストマシンの両方がUbuntu16.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にあり、ローカルユーザーで上記のコマンドを実行できます。)
testuserはレルム内の有効なユーザーであり、kinit
を実行でき、両方のシステムで認識されます:# id testuser uid=161200001(testuser) gid=161200001(testuser) groups=161200001(testuser)
Sudoはauth.logに関連するエントリを生成していないようですが、suは次のように生成します。
su [1887]:rootによるテストユーザーの成功したsu
su [1887]:+ ??? root:testuser
su [1887]:ユーザー `testuser 'の不正なグループID`161200001':引数が無効です
Google検索では、無効な引数エラーに対してcygwin + sshdの問題が発生しただけで、これは不適切と思われました。 FreeIPAによって選択されたID範囲は、コンテナオフセットが100.000であっても、LinuxのUID制限である2 ^ 32を下回っています。ここで何が問題になる可能性がありますか?さらに掘り下げるアイデアはありますか?
編集1: 2つのVirtualBoxマシンで同じサーバー/クライアントコンステレーションが正常に機能します。
編集2:原因をコンテナ内のIPAクライアントに絞り込んだと思いますが、LXD外のIPAサーバーに対して実行しても問題は解決しません。
解決しました!同じ問題を抱えている他の誰かがこのスレッドに遭遇した場合に備えて、ソリューションを共有します。
デフォルトの構成では、LXD /ホストシステムはコンテナーに十分なUID/GIDを割り当てないため、FreeIPAによってランダムに選択されたIDを持つユーザーになることはできません。
ファイル/etc/subuid
および/etc/subgid
には、root:100000:65536
を読み取るエントリがあります。これは、書き込み時に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-filesへの変更は、コンテナーを初期化する前にのみ機能する可能性があります。
具体的には、この構成は機能しました。
LXDホスト:
/etc/subuid:
root:5000000:2500000
/etc/subgid:
root:5000000:2500000FreeIPAサーバーを備えたLXDコンテナ:
ipa-server-install --idstart=1000000 --idmax=2000000
でサーバーを初期化します
ここで、ディレクトリIDの範囲は1.000.000〜2.000.000ですが、クライアントでは2.500.000IDを使用できます。 5.000.000のオフセットにより、ホストはそのFreeIPAディレクトリに参加することもできます。必要に応じて数値を調整します、YMMV。