최근에 등록 시도가 실패할 때 웹캠 사진을 캡처하는 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
, , , , , , , , , , , , , , , , , , , , 그리고
groupmems
groupmod
login
newusers
other
passwd
polkit-1
rlogin
rsh
shadow
slim
su
sudo
su-l
system-auth
systemd-user
system-local-login
system-login
system-remote-login
system-services
useradd
userdel
usermod
원래 답변,그리고튜토리얼 같은 답변.
(참고: 관련 답변이 있다는 것을 알고 있지만 이 질문은 스크립트보다는 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=1
PAM은 다음 규칙으로 이동합니다. 이 경우 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의 작동 방식과 로직이 정확히 어디에 구현되는지 이해하는 데 확실히 도움이 될 것입니다.
또 다른 사항: 스크립트를 실행하기 전에 카메라가 작업에 적합한지 확인하고 싶을 수도 있습니다. 커널 비디오 모듈이 로드되었는지 확인하십시오.