PAMセッションはシステムユーザーサービスにどのように適用されますか?

PAMセッションはシステムユーザーサービスにどのように適用されますか?

ユーザーとしてログインするたびに、新しいPAMセッションが作成されます。たとえば、私は人々がpam_group次のことに慣れていると思います。特定のデバイスにアクセスするには、セッションのプロセスをグループに追加します。、ローカル端末にログインする場合。

pam_systemdsystemd --userすべてのユーザーのログインセッションで共有されているインスタンスを起動します。たとえば、Fedora 26では、最近すべてのgnome端末プロセスが実際にsystemd --user。端末コマンドが実行される場所です。個々のログインごとに作成されたシステムセッションの範囲内では実行されません。

PAMセッションは、systemd --user個々のインスタンスとインスタンスが作成するプロセスにどのような影響を与えますか?

答え1

systemd --userpam_systemdは起動に使用するために文書化されています[email protected]

[email protected]PAMName=専用PAMセッションで実行するために使用されます。pam_systemd特別な場合があり、スタートアップがPAMName=systemd-user無限に繰り返さ[email protected]れたり、デッドロックに陥ることはありません。 (また、このプロセスは新しいセッション範囲単位には含まれません。)

$ systemctl cat user@
# /usr/lib/systemd/system/[email protected]

[Unit]
Description=User Manager for UID %i
After=systemd-user-sessions.service

[Service]
User=%i
PAMName=systemd-user
Type=notify
ExecStart=-/usr/lib/systemd/systemd --user
Slice=user-%i.slice
KillMode=mixed
Delegate=yes
TasksMax=infinity
TimeoutStopSec=120s

pam_systemd は、実際には TTY に依存する PAM セッション関連機能を使用しません。代わりにlogindACLを使用してログイン権限を付与してください。ユーザー特定のデバイスにアクセスします。 PAMセッションが開いている限り、どのそのUIDを持つプロセスはそのUIDにアクセスできます。

Logindには、このユーザープロセスがX Windowsなどのディスプレイサーバー用の特定のデバイスを開くことを可能にするDBusインターフェースもあります。 VTと複数の「座席」(デバイスグループ)の切り替えを処理するコードがあります。

関連情報