システムユーザーセッションが「su」によって開始されないのはなぜですか?

システムユーザーセッションが「su」によって開始されないのはなぜですか?

SSHを使用してサーバーにrootとしてログインすると、これを行うように指示があるため、0エントリが作成されます。これは、uid 0 に対するユーザーセッションが開始されたことを示します。/var/run/userpam_systemdsystemd-logind

その後、実行すると、su jackまだ0/var/run/userこの会議のエントリはありません。

ただし、journalctlPAMセッションが開いていて追加されたものが/etc/pam.d/su含まれていることを示しています。それで、ユーザーセッションを作成する必要があると思います。common-sessionsession optional pam_systemd.so

suユーザーセッションを作成する方法は?

関連があればDebian 11を使用しています。

答え1

現在のプロセスがすでに既存のセッションのメンバーである場合、PAMモジュールはセッションを作成しません。既存のセッションからセッションを作成する次の回避策が見つかりました。

systemd-run --system --scope \
    su -l

デフォルトでは、現在のユーザーセッションの一部ではなくシステム全体のsu -l範囲で実行されているため、PAMモジュールはsu -lそのプロセスのセッションを作成します。プロセスがセッションに移動すると、一時範囲は空で削除されます。

唯一の問題は、現在のユーザーがシステムレベルでスコープを作成する権限を持っている必要があり、2回認証する必要があることです。一度は、スコープ作成を認証するために現在のユーザーとして認証し、次にセッションを作成するユーザーとして再認証する必要があります。のための。

関連情報