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 및 여러 "좌석"(장치 그룹) 전환을 처리하는 코드가 있습니다.

관련 정보