XDG_RUNTIME_DIRsystemctl --user働くために必要です。
systemdユーザーセッションを実行するために、ubuntuサーバー16.04をセットアップしました。さて、それらを管理しようとすると、sudo -u $user -iまたはを介してユーザーを変更するsu - $userと、環境がXDG_RUNTIME_DIR設定されず、動作しなくなることがわかりsystemctl --userました。ただし、sshそのユーザーに直接アクセスすると、正しく設定されます。
ドキュメントを正しく理解していればlibpam-systemd、ユーザーセッションの作成時に設定する必要があります。XDG_RUNTIME_DIRpoint(/run/users/$uid)を指定するディレクトリが存在するため、ユーザースライスは正しく開始されます。たとえば、.bash_profileでハードコードするのはためらいます。なぜなら、PAMがそれを処理する必要があるとき、それは(動作しているとしても)ハッキーだと思われるからです。
もちろん、in に追加XDG_RUNTIME_DIRすることもできますが、それはsudoingユーザーの環境を維持するだけで、それは私が望んでいるものではありません。私がしたいターゲットユーザーの環境を。env_keepsudoers
しかし、私が本当に不思議に思っているのは、どうしてセッションがで正しく設定されsshているのsuか、ではなく、またはであるのsudo -iか?
XDG_RUNTIME_DIRれませんsudoか?それから私はそれを設定すること~/.profileは私が思ったほどハッキーではなかったと思います。