pam_systemd.so는 무엇을 합니까?

pam_systemd.so는 무엇을 합니까?

SD 카드를 빠른 RaspberryPi 4에서 RaspberryPi 2로 전환했습니다. 이제 로그인하는데 ssh -vv약 3분 정도 걸리고 막힙니다 pledge: network. 이것질문session optional pam_systemd.so이 동작은 논의되었으며 내 해결책은 /etc/pam.d/common-session.

하지만 이것이 실제로 무엇을 하는지 알고 싶습니다. 사용자 세션을 여는 것과 관련이 있다는 것을 알고 있지만 그것이 왜 중요한지는 잘 모르겠습니다.

내 것은 journalctl | grep pam이것을 보여줍니다 :

Dec 29 15:59:07 RPi4 sshd[1392]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Dec 29 15:59:08 RPi4 systemd: pam_unix(systemd-user:session): session opened for user admin by (uid=0)
Dec 29 16:02:01 RPi4 sudo: pam_unix(sudo:session): session opened for user root by admin(uid=0)
Dec 29 16:02:01 RPi4 sudo: pam_unix(sudo:session): session closed for user root
Dec 29 16:02:23 RPi4 sudo: pam_unix(sudo:session): session opened for user root by admin(uid=0)

답변1

pam_systemdsystemd클래식(사전 시스템) 로그인 프로세스와 인식 로그인 프로세스를 구별하는 플러그인입니다 .

이것이 없으면 로그인 프로세스는 SysVinit을 사용할 때와 동일하게 작동합니다. 사용자 프로세스가 데몬화되면(즉, 표준 입력, 출력 및 오류 스트림을 두 번 닫고 분기) 하위 프로세스가 종료되어 손자 프로세스가 고아가 되고 parent 프로세스는 커널에 의해 UID #1로 재설정되며 해당 프로세스가 속한 세션을 추적할 수 없습니다. 전체 로그인 세션과 모든 하위 세션을 단일 세션으로 안정적으로 캡슐화하는 대신대조군, 모든 프로세스가 공통 힙에 들어갑니다. 세션별 ​​리소스 제한을 적용할 수 있는 방법도 없습니다.

/run/user/<UID>/또한 사용자 런타임 디렉터리가 생성되지 않아 일부 데스크톱 환경의 특정 기능은 물론 GnuPG 에이전트와 같은 다중 세션 친화적 기능을 시도할 수 없습니다. 마지막으로 중요한 점은 user@<UID>.service시스템 서비스와 시스템 서비스가 관리하는 사용자별 systemd서비스가 시작되지 않는다는 것입니다. 해당 사용자/세션에 대한 세션 D-Bus도 없고 Pulseaudio도 없습니다. systemctl --user(유효한 사용자별 서비스가 있는 시스템에서 )을 참조하세요 systemd.

로그아웃 시 pam_systemd로그아웃 프로세스는 세션이 끝날 때 사용자 세션의 모든 프로세스를 명시적으로 지우도록 완전히 강제할 수는 없습니다(시스템 관리자가 원하는 경우, 참고자료 참조 KillUserProcesses=) logind.conf(5).

또한 사용자 로그인/로그아웃과 같은 이벤트에 루트가 아닌 작업을 삽입하거나 마운트된 파일 시스템이나 핫 플러그 ​​가능한 네트워크/스토리지/블루투스/기타 장치 등의 유무에 따라 조건부로 삽입하는 쉬운 방법도 잃게 됩니다. 작업은 나중에 로그인 세션 중에 발생합니다.

귀하의 목표가 간단하고 단순한 단일 작업 기계라면 불필요한 많은 것들을 성공적으로 절단했다고 생각할 수도 있지만 목표에 따라 그렇지 않을 수도 있습니다.

어쨌든, 당신이 언급한 질문은 문제가 다음으로 인해 발생할 수 있음을 시사합니다.체계D-Bus를 다시 시작하면 다시 시작해야 하며 systemd-logind시스템 D-Bus에 의존하는 다른 시스템 서비스를 다시 시작해야 할 수도 있습니다.

느린 로그인 문제의 근본 원인은 Pulseaudio가 여전히 RasPi 4 하드웨어를 예상하도록 구성되어 있지만 이를 찾지 못해 혼란스럽기 때문일 수도 있습니다.

배경:

다음을 기반으로 설치 하는 systemd경우: 사용자 세션당 최소 2개의 관련 D-Bus 인스턴스가 있을 수 있습니다.체계구성된 대로 시스템 전체의 상태 정보 및 제어를 선택적으로 전달할 수 있는 D- polkitBus회의사용자 수준의 작업을 위한 D-Bus. 일부 GUI 데스크탑 환경은 접근성 및/또는 국제화(중국어/일본어/한국어 문자 및 유사한 입력 방법)를 처리하기 위해 하나 또는 두 개의 추가 작은 D-Bus 인스턴스를 시작할 수 있습니다.

관련 정보