web-dev-qa-db-ja.com

16.04サーバー:LDAP認証を有効にするとsystemd-logindが失敗する

私はここで困惑しています、明らかな何かを見逃している場合は申し訳ありません。前回アップデートを実行したときに機能しなくなったLDAPに対する16.04サーバー認証があり、クリーンな16.04サーバーをゼロから構築し、標準アップデートを実行しましたが、LDAP認証を有効にするまで正常に動作します。 LDAPを無効にすると、再び機能します。

me@myserver:/etc# systemctl status systemd-logind.service
● systemd-logind.service - Login Service
   Loaded: loaded (/lib/systemd/system/systemd-logind.service; static; vendor preset: enabled)
   Active: activating (start) since Tue 2016-07-12 15:13:07 EDT; 19s ago
     Docs: man:systemd-logind.service(8)
           man:logind.conf(5)
           http://www.freedesktop.org/wiki/Software/systemd/logind
           http://www.freedesktop.org/wiki/Software/systemd/multiseat
 Main PID: 2106 (systemd-logind)
    Tasks: 1
   Memory: 228.0K
      CPU: 2ms
   CGroup: /system.slice/systemd-logind.service
           └─2106 /lib/systemd/systemd-logind

Jul 12 15:13:07 myserver systemd[1]: Starting Login Service...

それはしばらくの間動揺し、失敗し、そして無限ループで再び開始しようとします。ローカルアカウントにログインできますが、時間がかかります。

me@myserver:/etc# systemd-analyze blame
Bootup is not yet finished. Please try again later.

一方、journalctl -xeはより詳細なループを返します。

me@myserver:/etc# journalctl -xe
-- Subject: Unit systemd-logind.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-logind.service has failed.
-- 
-- The result is failed.
Jul 12 15:16:27 myserver systemd[1]: systemd-logind.service: Unit entered failed state.
Jul 12 15:16:27 myserver systemd[1]: systemd-logind.service: Failed with result 'exit-code'.
Jul 12 15:16:27 myserver systemd[1]: systemd-logind.service: Service has no hold-off time, scheduling restart.
Jul 12 15:16:27 myserver systemd[1]: Stopped Login Service.
-- Subject: Unit systemd-logind.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-logind.service has finished shutting down.
Jul 12 15:16:27 myserver systemd[1]: Starting Login Service...
-- Subject: Unit systemd-logind.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-logind.service has begun starting up.
Jul 12 15:16:52 myserver systemd-logind[2134]: Failed to enable subscription: Connection timed out
Jul 12 15:16:52 myserver systemd-logind[2134]: Failed to fully start up daemon: Connection timed out
Jul 12 15:16:52 myserver dbus[1012]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out
Jul 12 15:16:52 myserver systemd[1]: systemd-logind.service: Main process exited, code=exited, status=1/FAILURE
Jul 12 15:16:52 myserver systemd[1]: Failed to start Login Service.

同じ構成でLDAPを使用して正常に動作している14.04サーバーが20個ほどあります。

Systemd-logindを手動で再起動しようとしましたが、失敗します。

何か案は? TIA。

(ETA:14.04にまったく同じシステムを構築したところ、LDAP認証は正常に機能します。)

Dpkg.log情報の追加:このファイルには多くのノイズがありますので、関連性があり有用なものはわかりませんが、関連するパッケージの処理の最終行は次のようになります。

2016-07-11 13:52:08 status installed libldap-2.4-2:AMD64 2.4.42+dfsg-2ubuntu3
2016-07-11 14:11:40 status installed libldap-2.4-2:AMD64 2.4.42+dfsg-2ubuntu3.1
2016-07-11 15:02:45 status installed libnss-ldap:AMD64 265-3ubuntu2
2016-07-11 15:02:45 status installed ldap-auth-client:all 0.5.3
2016-07-11 15:02:45 status installed ldap-auth-config:all 0.5.3
2016-07-11 15:02:45 status installed libpam-ldap:AMD64 184-8.7ubuntu1
2016-07-11 15:04:12 status installed ldap-utils:AMD64 2.4.42+dfsg-2ubuntu3.1

LDAPサーバーは他の場所にあります。このサーバーは、クライアントとして認証するだけで済みます。 /etc/ldap.confおよび/etc/ldap/ldap.confの構成ファイルは同一であり、14.04と16.04の間で変更されていないようです。

LDAP認証は機能していませんが、LDAPサーバーに対してldapsearchクエリを正常に実行できることに注意してください。

7
oxtoe

16.04デスクトップクライアントでも同じ問題が発生しました。

最後に、libnss-ldapパッケージをlibnss-ldapdに置き換えて解決しました。

このバグレポートと同じ問題のようです: https://bugs.launchpad.net/ubuntu/+source/libnss-ldap/+bug/1024475

EDITDebian wiki :からこれらのパッケージに関する詳細情報

現在、LDAPを介したNSSルックアップの設定に使用できるパッケージは、libnss-ldapパッケージとlibnss-ldapdパッケージの2つです。どちらを選択するかは、ニーズによって異なります。一般に、libnss-ldapdはよりシンプルですが、より新しく、libnss-ldapはより成熟していますが、より複雑です。また、libnss-ldapには、ホスト情報の提供とブート中のルックアップに関する既知の問題がいくつかあり、libnss-ldapdで対処する必要があります。さらに、LDAP + SSLを使用すると、libnss-ldapはsetuidプログラム(su、Sudo)を中断します

4
barotto

この問題を回避する方法は、nss_initgroups_ignoreusersパラメーター(/etc/ldap.conf(またはシステムによっては/etc/libnss-ldap.conf))に/etc/passwdのすべての(ローカル)ユーザーが入力されていることを確認することです。

NSS_IGNOREUSERS="$(cut -d: -f1 /etc/passwd | sort | tr '\n' ',' | sed 's|,$||')"
sed -i "s|^nss_initgroups_ignoreusers.*|nss_initgroups_ignoreusers ${NSS_IGNOREUSERS}|" /etc/ldap.conf

この方法では、システムが起動し、ユーザー/グループネームサービスがローカルサービスを開始するために照会されると、「nss_ldap:LDAPサーバーに接続できません」は発行されません(対応するローカルユーザー/グループはNSS LDAPによって無視されるため) 。

(この問題はsystemdとは独立して何年も続いています)

2
Cédric Dufour