XDG_RUNTIME_DIRнеобходимо для systemctl --userработы.
Я настроил Ubuntu Server 16.04 для запуска пользовательских сессий systemd. Теперь, когда я пытаюсь их администрировать, я обнаруживаю, что при смене пользователя через sudo -u $user -iили даже su - $userсреду не XDG_RUNTIME_DIRустанавливают, мешая systemctl --userработать. Тем не менее, когда я sshпрямо в этом пользователе, он установлен правильно.
Если я правильно понимаю документацию, это должно быть установлено libpam-systemdпри создании сеанса пользователя. Пользовательский фрагмент запускается правильно, так как каталог, на который XDG_RUNTIME_DIRдолжен указывать ( /run/users/$uid), существует. Я не решаюсь просто сказать это жестко, скажем, .bash_profileпотому что это кажется хакерским (хотя и работает), когда Пэм должен позаботиться об этом.
Я могу, конечно, добавить XDG_RUNTIME_DIRк env_keepв sudoers, но это было бы просто сохранить окружающую среду пользователя sudoing, которая является не то , что я хочу. Я хочу среду целевого пользователя.
Что меня действительно интересует, так это то, почему сессия настроена правильно ssh, а не с suили sudo -i?
XDG_RUNTIME_DIRдляsudoсессий по замыслу? Полагаю, тогда я установил это~/.profileне так глупо, как я думал.