XDG_RUNTIME_DIR
jest niezbędny systemctl --user
do 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 -i
lub nawet su - $user
, środowisko nie ma XDG_RUNTIME_DIR
ustawionego, uniemożliwiającego systemctl --user
działanie. Jednak po przejściu ssh
bezpośrednio do tego użytkownika jest ono ustawione poprawnie.
Jeśli dobrze rozumiem dokumentację, należy ją ustawić libpam-systemd
podczas tworzenia sesji użytkownika. Wycinek użytkownika jest uruchamiany poprawnie, ponieważ istnieje katalog, do którego XDG_RUNTIME_DIR
należy point ( /run/users/$uid
). Waham się, żeby po prostu zakodować go, powiedzmy, .bash_profile
ponieważ wydaje się to hack (choć działa), kiedy pam powinien się tym zająć.
Mogę oczywiście dodać XDG_RUNTIME_DIR
do env_keep
w 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 su
lub sudo -i
?
XDG_RUNTIME_DIR
nasudo
sesji przez projekt? Myślę, że wtedy ustawienie tego~/.profile
nie jest tak hackerskie, jak myślałem.https://github.com/systemd/systemd/issues/7451#issuecomment-346787237
źródło