PAM에서 옵션이 무시됨에도 불구하고 왜 사용합니까?

PAM에서 옵션이 무시됨에도 불구하고 왜 사용합니까?

우리는 optionalPAM 구성 파일의 제어 값 중 하나라는 것을 알고 있습니다.

~에서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를 사용 하면 optionalcryptsetup이 종료 코드로 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.

관련 정보