web-dev-qa-db-fra.com

Serveur 16.04: l'activation de l'authentification LDAP entraîne l'échec de systemd-logind

Je suis perplexe ici, désolé si je manque quelque chose d'évident. J'avais un serveur 16.04 authentifié par rapport à LDAP qui ne fonctionnait plus la dernière fois que j'ai exécuté des mises à jour, et j'ai construit un serveur 16.04 vierge à partir de rien, des mises à jour standard et tout fonctionne bien jusqu'à l'activation de l'authentification LDAP. Je peux désactiver LDAP, puis cela fonctionne à nouveau.

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...

Il va tourner pendant un moment, échouer, puis essayer de recommencer dans des boucles sans fin. Je peux me connecter à un compte local mais cela prend beaucoup de temps.

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

En attendant, journalctl -xe renvoie sa propre boucle plus détaillée:

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.

J'ai environ deux douzaines de serveurs 14.04 qui fonctionnent bien avec LDAP, même configuration.

J'ai essayé de redémarrer manuellement systemd-logind mais cela a échoué.

Des idées? TIA.

(ETA: vient de construire exactement le même système que 14.04 et l'authentification LDAP fonctionne correctement.)

Ajout de l'info dpkg.log: Il y a beaucoup de bruit dans ce fichier, donc vous ne savez pas vraiment ce qui est pertinent et utile, mais voici ce qui semble être les lignes de traitement du terminal pour les paquets associés:

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

Mon serveur LDAP est ailleurs. ce serveur n'a qu'à s'authentifier auprès de lui en tant que client. Les fichiers de configuration situés dans /etc/ldap.conf et /etc/ldap/ldap.conf sont identiques et semblent ne pas avoir changé entre 14.04 et 16.04.

Il convient de noter que bien que l’authentification LDAP ne fonctionne pas, je peux effectuer avec succès une requête ldapsearch sur le serveur LDAP.

7
oxtoe

Avait le même problème avec mes clients de bureau 16.04.

Enfin résolu de remplacer le paquetage libnss-ldap par libnss-ldapd .

Semble le même problème que dans ce rapport de bogue: https://bugs.launchpad.net/ubuntu/+source/libnss-ldap/+bug/1024475

EDIT: plus d’informations sur ces paquets à partir de wiki Debian :

Il existe actuellement deux packages disponibles pour configurer des recherches NSS via LDAP: le package libnss-ldap et le package libnss-ldapd. Lequel choisir dépend des besoins. En général, libnss-ldapd est plus simple mais plus récent et libnss-ldap est plus mature mais plus complexe. De plus, libnss-ldap présente des problèmes connus relatifs à la fourniture d'informations et de recherches d'hôte au démarrage, problèmes qui doivent être résolus dans libnss-ldapd . De plus, libnss-ldap rompt les programmes setuid (su, Sudo) lors de l’utilisation de LDAP + SSL.

4
barotto

Un moyen d'éviter ce problème est de vous assurer que le paramètre nss_initgroups_ignoreusers - dans /etc/ldap.conf (ou /etc/libnss-ldap.conf, en fonction de votre système) - est rempli avec tous les utilisateurs (locaux) dans /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

De cette façon, lorsque le système démarre et que les services de noms d'utilisateurs/groupes sont interrogés pour démarrer les services locaux, le message 'nss_ldap: impossible de contacter le serveur LDAP' ne sera plus émis (puisque l'utilisateur/groupe local correspondant est ignoré par NSS LDAP) .

(ce problème existe depuis des années, indépendamment de systemd)

2
Cédric Dufour