以下を比較してください

以下を比較してください

だからこの問題これは以前に要求されましたが、それに対する答えは環境変数の問題を解決しませんでした。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_profilesu

ベストアンサー1

答えは、モジュールが実行され、変数が設定されていることを確認するloginのではなく、単に使用することです。 Giacomoが指摘したように、1人のユーザーだけが(複数のユーザーが作成されたサブプロセスシナリオのように)その中でファイルを変更できることを確認してください。環境。supam_systemdsu

リスクは、以下を使用して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/bashsystemd-logind.servicepam_systemd.mod

おすすめ記事