우리는 optional
PAM 구성 파일의 제어 값 중 하나라는 것을 알고 있습니다.
~에서linux-pam.org:
임의로 선택할 수 있는:
이 모듈의 성공 또는 실패는 이 서비스+유형과 연결된 스택의 유일한 모듈인 경우에만 중요합니다.
혼란스러워요.
이것은 /etc/pam.d/login
:
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
optional
나는 통제와 공정한 행동이라는 두 가지 규칙을 봅니다 .
나는 우리가 optional
인증되지 않은 목적으로만 규칙을 사용하고 있다고 가정합니다. 맞아?
답변1
중요: 선택적 모듈은 무시되지 않으며 처리됩니다.결과무시됩니다. 즉, 실패하더라도 인증 프로세스가 중단되지 않습니다.
많은 경우 인증 중에 특정 작업(실행할 모듈)을 수행하고 싶지만, 인증 프로세스가 실패하더라도 인증 프로세스가 중단되는 것을 원하지 않을 수 있습니다.
실제 예는 pam을 사용하여 사용자 비밀번호와 동일한 비밀번호를 사용하여 로그인 중에 dm-crypt 암호화된 장치를 자동으로 열려는 경우입니다.
auth optional pam_exec.so expose_authtok quiet /usr/sbin/cryptsetup --allow-discards open UUID=... /home/username
required
여기에서 대신 if를 사용 하면 optional
cryptsetup이 종료 코드로 0을 반환하기 때문에 첫 번째 로그인이 성공하지만, 사용자가 로그아웃했다가 다시 로그인하면 장치가 이미 켜져 있고 cryptsetup이 반환하기 때문에 로그인이 실패합니다. 0이 아닌 종료 코드. 그러나 이 경우에도 로그인이 성공하기를 원합니다.
이것은 실제로 사용하고 나서 생각나는 예일 뿐입니다. 즉, 이론적인 상황은 아니지만, 실패한 모듈이 인증 프로세스를 중단하지 않기를 바라는 많은 상황 중 하나입니다.
답변2
이 외에도 다른 실용적인 용도가 있습니다.마르셀로의 대답:
$ grep 'auth.*optional' /etc/pam.d -R
/etc/pam.d/lightdm:auth optional pam_gnome_keyring.so
/etc/pam.d/lightdm:auth optional pam_kwallet.so
/etc/pam.d/lightdm:auth optional pam_kwallet5.so
/etc/pam.d/gnome-screensaver:auth optional pam_gnome_keyring.so
/etc/pam.d/login:auth optional pam_faildelay.so delay=3000000
/etc/pam.d/login:auth optional pam_group.so
/etc/pam.d/lightdm-greeter:auth optional pam_gnome_keyring.so
/etc/pam.d/lightdm-greeter:auth optional pam_kwallet.so
/etc/pam.d/lightdm-greeter:auth optional pam_kwallet5.so
/etc/pam.d/unity:auth optional pam_gnome_keyring.so
이것들은 모두 Ubuntu 16.04 VM에서 가져온 것이며 PAM 구성을 건드린 적이 없습니다(이 pam_kwallet*
줄의 출처가 의심되는 설치한 패키지를 제외하고).
- GNOME 키링 및 KDE 지갑 모듈은 이해하기 쉽습니다. SSH 및 GPG 키와 브라우저 비밀번호를 보관할 수 있는 로그인 키링을 잠금 해제합니다.
pam_faildelay.so
즉각적이고 명확한 피드백을 제공하는 무시된 모듈의 좋은 예를 제공합니다. 즉, 잘못된 비밀번호를 입력한 경우 기다리게 만듭니다.optional
성공이나 실패는 별로 중요하지 않기 때문에 이것은 일반적으로 사용하는 모듈입니다 . 하지만!pam_faildelay.so
만 지원auth
하므로어느그냥 평소대로 사용하세요auth optional
.