XDG_RUNTIME_DIRjest niezbędny systemctl --userdo pracy.
Skonfigurowałem serwer Ubuntu 16.04 do uruchamiania sesji użytkownika systemd. Teraz, kiedy próbuję nimi zarządzać, stwierdzam, że kiedy zmieniam użytkownika za pośrednictwem sudo -u $user -ilub nawet su - $user, środowisko nie ma XDG_RUNTIME_DIRustawionego, uniemożliwiającego systemctl --userdziałanie. Jednak po przejściu sshbezpośrednio do tego użytkownika jest ono ustawione poprawnie.
Jeśli dobrze rozumiem dokumentację, należy ją ustawić libpam-systemdpodczas tworzenia sesji użytkownika. Wycinek użytkownika jest uruchamiany poprawnie, ponieważ istnieje katalog, do którego XDG_RUNTIME_DIRnależy point ( /run/users/$uid). Waham się, żeby po prostu zakodować go, powiedzmy, .bash_profileponieważ wydaje się to hack (choć działa), kiedy pam powinien się tym zająć.
Mogę oczywiście dodać XDG_RUNTIME_DIRdo env_keepw sudoers, ale to po prostu zachować środowisko użytkownika sudoing, która nie jest to, co chcę. Chcę środowiska docelowego użytkownika.
Zastanawiam się jednak, dlaczego sesja jest poprawnie skonfigurowana z ssh, ale nie z sulub sudo -i?
XDG_RUNTIME_DIRnasudosesji przez projekt? Myślę, że wtedy ustawienie tego~/.profilenie jest tak hackerskie, jak myślałem.