시스템 사용자 세션이 "su"에 의해 시작되지 않는 이유는 무엇입니까?

시스템 사용자 세션이 "su"에 의해 시작되지 않는 이유는 무엇입니까?

SSH를 사용하여 서버에 루트로 로그인하면 이렇게 하라는 지시가 있기 때문에 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해당 프로세스에 대한 세션을 생성합니다. 프로세스가 세션으로 이동되면 임시 범위는 비어 있고 삭제됩니다.

유일한 문제는 현재 사용자가 시스템 수준에서 범위를 생성할 수 있는 권한이 있어야 하며 두 번 인증해야 한다는 것입니다. 한 번은 범위 생성을 인증하기 위해 현재 사용자로 인증하고, 그런 다음 세션을 생성하는 사용자로 다시 인증해야 합니다. 을 위한 .

관련 정보