Défaillances du service utilisateur systemd

Il se peut que l’une des erreurs suivantes s’affiche lors de la mise à niveau ou de l’exécution de la commande initialize-tsm au cours d’une nouvelle installation :

  • « Failed to get D-Bus connection : No such file or directory » (Impossible d’obtenir la connexion D-Bus : Pas de fichier ou répertoire de ce type)
  • « $XDG-RUNTIME-DIR not found » ($XDG-RUNTIME-DIR introuvable)
  • « systemd unit user@<userID> is not running. Consultez /var/log/messages ou /var/log/syslog."

Contexte

En date de la version 2018.1, Tableau Server utilise le service utilisateur systemd pour gérer les processus. Cela signifie qu’un processus systemd s’exécute en tant qu’utilisateur non privilégié. Par défaut, le programme d’installation de Tableau Server crée un compte non privilégié nommé tableau. Les processus Tableau Server sont engendrés à partir du processus systemd et non du processus systemd à l’échelle du système, qui fonctionne comme racine.

Important : cette note de résolution des problèmes s’applique principalement aux distributions RHEL 7. Cependant, si vous voyez l’une de ces erreurs, il est possible que les mêmes problèmes se posent sur les distributions Ubuntu.

Le service d’utilisateur systemd n’est pas utilisé aussi couramment que le gestionnaire de processus systemd normal. Red Hat a désactivé le service utilisateur systemd dans RHEL 7 (et donc toutes les distributions issues de RHEL, comme CentOS, Oracle Linux 7, Amazon Linux 2). Cependant, RedHat a assuré à Tableau que l’exécution du service utilisateur systemd était prise en charge tant que le service était réactivé.

Mise à niveau depuis Tableau Server sur Linux 10.5

Si vous effectuez une mise à niveau depuis Tableau Server 10.5, vérifiez que l’utilisateur non privilégié a un interpréteur de commandes et un annuaire de base valides. Dans Tableau Server 10.5, Tableau a délibérément créé l’utilisateur non privilégié avec l’interpréteur de commandes défini sur /sbin/nologin et l’annuaire de base « / ». Si l’utilisateur non privilégié a été créé par initialize-tsm, lors de la mise à niveau à 2018.1, Tableau met à jour l’interpréteur de commandes et l’annuaire de base.

Toutefois, si vous avez créé l’utilisateur non privilégié lors de l’installation initiale de 10.5, vous obtiendrez une erreur lors d’une tentative de mise à niveau.

Pour résoudre ce problème, vous devez définir l’interpréteur de commandes sur /sbin/nologin et l’annuaire de base « / », puis exécuter à nouveau la mise à niveau.

Résolution des erreurs de la nouvelle installation

Vérifiez que le service de licence systemd est en cours d’exécution.

Vérifiez en exécutant la commande ps -fww $(pgrep -f "systemd --user")

Si le service utilisateur systemd n’est pas en cours d’exécution, cela signifie que quelque chose l’a empêché de démarrer.

Suivez cette liste pour résoudre le problème :

  • Vérifiez les fichiers journaux dans /var/log/messages

  • Exécutez journalctl

  • Vérifiez que toutes les personnalisations que vous avez pu apporter à votre configuration PAM n’ont pas supprimé pam_systemd.so.

    S’il manque la ligne suivante /etc/pam.d/system-auth dans le fichier RHEL 7 PAM :

    -session optional pam_systemd.so

    Elle doit être alors être rajoutée pour que Tableau Server fonctionne.

  • Si -session optional pam_systemd.so est présent dans votre configuration PAM, le service utilisateur ne peut pas démarrer, et le message d’erreur $XDG_RUNTIME_DIR not found s’affiche dans /var/log/messages. Ne tentez pas de définir la variable d’environnement. Dans ce scénario, l’erreur n’est pas exacte.

    La véritable erreur est que le module PAM pam_systemd.so est incapable d’allouer la session utilisateur. La configuration par défaut supprime les messages d’erreur de pam_systemd.so. Pour faire apparaître les messages d’erreur et dégoguer les messages, modifiez la ligne /etc/pam.d/system-auth de -session optional pam_systemd.so en session optional pam_systemd.so debug. (Supprimer le trait d’union principal fera apparaître les messages d’erreur, et l’ajout de debug fera apparaître un enregistrement plus détaillé.)

    Vous pouvez désormais consulter les fichiers /var/log/messages, /var/log/secure et /var/log/audit/audit.log pour voir les messages d’erreur.

Exemple

Le message d’erreur suivant peut s’afficher :

systemd-logind: Failed to mount per-user tmpfs directory /run/user/0: Permission denied

Dans ce cas, la recherche de l’erreur en ligne conduit à l’article de la base de connaissances de Redhat, https://access.redhat.com/solutions/2460611(Le lien s’ouvre dans une nouvelle fenêtre).

L’article recommande de mettre à jour le paquet selinux-policy en exécutant sudo yum update selinux-policy.

Dans certains cas, la mise à niveau de la version 3.12.X à la version 3.13.X résout un problème $XDG_RUNTIME_DIR not found. Assurez-vous d’exécuter sudo reboot après la mise à jour du paquet.