로그인 시도가 실패하면 스크립트를 실행하시겠습니까?

로그인 시도가 실패하면 스크립트를 실행하시겠습니까?

최근에 등록 시도가 실패할 때 웹캠 사진을 캡처하는 Bash 스크립트를 만들려고 했습니다. 먼저 이와 관련된 가이드 2개(마지막 링크)를 찾았는데, 스크립트 작성 방법 등을 설명했습니다. 내 시스템(Archlinux, 새로 설치)에 PAM에 대한 공통 인증 파일이 없다는 것을 알기 전까지는 모든 것이 잘 진행되었습니다. 전체 디렉토리를 검사했지만 /etc/pam.d/여전히 파일이나 동일한 내용이 포함된 파일을 찾을 수 없습니다.

지금까지 내 스크립트는 다음과 같습니다.

#!/bin/bash

# Let's watch our thief's face n.n


ts=$(date +"%m_%d_%Y_%H_%M_%S")

ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /home/haoa2/Logins-Fail/login-$ts.jpg

exit 0

/etc/pam.d/디렉토리 내용:

chage, chfn, chgpasswd, chpasswd, chsh, groupadd, , , , groupdel, , , , , , , , , , , , , , , , , , , , 그리고 groupmemsgroupmodloginnewusersotherpasswdpolkit-1rloginrshshadowslimsusudosu-lsystem-authsystemd-usersystem-local-loginsystem-loginsystem-remote-loginsystem-servicesuseradduserdelusermod

원래 답변,그리고튜토리얼 같은 답변.

(참고: 관련 답변이 있다는 것을 알고 있지만 이 질문은 스크립트보다는 PAM 파일에 관한 것입니다.)

답변1

첫 번째, 파일이 누락되었다고 해서 해당 파일을 생성해서는 안 된다는 의미는 아닙니다. 데비안에서 사용할 수 있는 파일은 common-*일반 PAM 구성 파일이지만 이를 필요로 하는 다른 파일과 함께 포함되어 있습니다. 예를 들어 Debian에서는 파일 끝에서 다음을 su찾을 수 있습니다.

@include common-auth
@include common-account
@include common-session

이러한 파일이 없기 때문에 이러한 include 지시문이 존재하지 않는다고 생각합니다. 아치의 철학은 사용자가 커스터마이징할 수 있는 최소한의 배포판을 제공하는 것이기 때문에 이러한 common-*파일을 완벽하게 생성하고 이를 사용할 것으로 예상되는 파일에 포함시킬 수 있습니다.

하지만 당신의 경우에는, 로그인할 때 사용되는 PAM 프로필을 대상으로 지정하는 것이 좋습니다. (귀하가 원하는 것은아니요common로그인 시 기본 요소 만 대상으로 하기 때문에 작업 입니다 auth. /etc/pam.d/login새 PAM 규칙을 포함하도록 검토 하고 수정하세요.

제 경우에는 파일이 다음 링크로 login끝납니다 . @include common-auth파일 끝에서 이와 같은 내용을 찾아야 합니다 login.

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

passwd기본적으로 이는 기본 UNIX 메커니즘(및 )을 기반으로 인증을 시도합니다 shadow. 성공하면 success=1PAM은 다음 규칙으로 이동합니다. 이 경우 pam_deny무시되며 pam_permit.so자동으로 사용자에게 연락하여 액세스를 허용합니다.

반면, pam_unix실패하면 점프가 이루어지지 않고 사용자에게 직접 전송됩니다 pam_deny. 이는 필수 규칙이므로 다음에 무슨 일이 일어나더라도 사용자의 액세스가 거부됩니다.

마지막으로 pam_cap로그인 프로세스에 실제로 참여하지 않는 선택적 규칙이 있습니다. 그러나 무슨 일이 일어나더라도 실행됩니다(로깅에 유용할 수 있음). 귀하의 경우 다음과 같이 할 수 있습니다 ...

# Jump two rules if login succeeds.
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    optional                        pam_exec.so [your cam script]
auth    requisite                       pam_deny.so
# User gets here if authentication is successful. No denying, no cam module.
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

PAM 내부에 익숙하지 않다면 다음을 권장합니다.이 페이지PAM 논리를 설정할 때 이것이 매우 유용하다는 것을 알았습니다. 이 페이지를 살펴보면 PAM의 작동 방식과 로직이 정확히 어디에 구현되는지 이해하는 데 확실히 도움이 될 것입니다.

또 다른 사항: 스크립트를 실행하기 전에 카메라가 작업에 적합한지 확인하고 싶을 수도 있습니다. 커널 비디오 모듈이 로드되었는지 확인하십시오.

관련 정보