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
не так глупо, как я думал.https://github.com/systemd/systemd/issues/7451#issuecomment-346787237
источник