XDG_RUNTIME_DIRest nécessaire pour systemctl --usertravailler.
J'ai configuré le serveur Ubuntu 16.04 pour exécuter les sessions utilisateur systemd. Maintenant, lorsque j'essaie de les administrer, je trouve que lorsque vous changez un utilisateur via sudo -u $user -iou même su - $user, l'environnement n'a pas XDG_RUNTIME_DIRdéfini, empêchant systemctl --userde fonctionner. Cependant, quand je suis sshdirectement dans cet utilisateur, il est correctement défini.
Si je comprends bien la documentation, cela doit être défini libpam-systemdlors de la création de la session utilisateur. La tranche utilisateur est démarrée correctement, car le répertoire vers lequel XDG_RUNTIME_DIRdoit pointer ( /run/users/$uid) existe. J'hésite à le coder en dur, disons, .bash_profileparce que cela semble hacky (bien que fonctionnel), quand pam devrait s'en occuper.
Je peux, bien sûr, ajouter XDG_RUNTIME_DIRà env_keepdans sudoers, mais ce serait tout simplement préserver l'environnement de l'utilisateur sudoing, ce qui est pas ce que je veux. Je veux l' environnement de l'utilisateur cible .
Ce que je me demande vraiment, cependant, c'est comment se fait-il que la session soit correctement configurée avec ssh, mais pas avec suou sudo -i?
XDG_RUNTIME_DIRpour lessudosessions par conception? Je suppose que le réglage~/.profilen'est pas aussi hacky que je le pensais.