XDG_RUNTIME_DIR
est nécessaire pour systemctl --user
travailler.
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 -i
ou même su - $user
, l'environnement n'a pas XDG_RUNTIME_DIR
défini, empêchant systemctl --user
de fonctionner. Cependant, quand je suis ssh
directement dans cet utilisateur, il est correctement défini.
Si je comprends bien la documentation, cela doit être défini libpam-systemd
lors de la création de la session utilisateur. La tranche utilisateur est démarrée correctement, car le répertoire vers lequel XDG_RUNTIME_DIR
doit pointer ( /run/users/$uid
) existe. J'hésite à le coder en dur, disons, .bash_profile
parce que cela semble hacky (bien que fonctionnel), quand pam devrait s'en occuper.
Je peux, bien sûr, ajouter XDG_RUNTIME_DIR
à env_keep
dans 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 su
ou sudo -i
?
XDG_RUNTIME_DIR
pour lessudo
sessions par conception? Je suppose que le réglage~/.profile
n'est pas aussi hacky que je le pensais.https://github.com/systemd/systemd/issues/7451#issuecomment-346787237
la source