だからこの問題これは以前に要求されましたが、それに対する答えは環境変数の問題を解決しませんでした。pam-systemd
すべての自動XDG環境変数が呼び出され、設定されるようにユーザーを完全に切り替える方法はありますか?
以下を比較してください
次のオプションは、まず電源がオフになっているコンピュータの電源を入れます。
オプション1ルートとしてログインします。シェルに次のように入力します。
su -l username
echo $XDG_RUNTIME_ENV
オプション2ユーザー名でログインしてください。シェルに次のように入力します。
echo $XDG_RUNTIME_ENV
違いがあることがわかります。/run/user/0
使用されたユーザーが変更su
(ユーザー切り替え)されているにもかかわらず、pam_systemd
切り替え中にモジュールが呼び出されなかったため、オプション1は引き続き発生します。オプション2の収益率は/run/user/$(id -u)
予想と一致しています。exit
必要なユーザーとして再度ログインするように求められるまで、ログアウトを入力するだけです。別の方法がありますか?sudo
代わりに使用してもsu
役に立ちません。
実装されているecho "XDG_RUNTIME_DIR=$(id -u) >> .bash_profile"
ように、これは正しいことですか?.bash_profile
su
ベストアンサー1
答えは、モジュールが実行され、変数が設定されていることを確認するlogin
のではなく、単に使用することです。 Giacomoが指摘したように、1人のユーザーだけが(複数のユーザーが作成されたサブプロセスシナリオのように)その中でファイルを変更できることを確認してください。環境。su
pam_systemd
su
リスクは、以下を使用してsu
システムに視覚的に表示できます。systemd
使用su
root -systemd
root -login # calls pam_systemd and sets XDG_RUNTIME_DIR among others
user1 -bash
user1 -su
user2 -bash # user1 has access to spawned subprocesses?
使用login
root -systemd
root -login # calls pam_systemd and sets XDG_RUNTIME_DIR among others
user2 -bash
子プロセスによってカプセル化されたユーザーは、によって登録されたことがないためloginctl
登録されません。su/bash
systemd-logind.service
pam_systemd.mod