คัดลอกโพสต์นี้ไปที่ถาม Ubuntu โดยgertvdijk , ชี้ให้เห็นโดยmazsในความคิดเห็น ในความพยายามที่จะปิดคำถามนี้
ขึ้นอยู่กับการโพสต์นี้บน Ubuntuforums โดยBkkBonanza
นี่เป็นวิธีการใช้ PAM และจะใช้งานได้สำหรับการพยายามลงชื่อเข้าใช้ทั้งหมดที่ล้มเหลว การใช้ SSH, เทอร์มินัลเสมือนหรือผ่านหน้าจอเข้าสู่ระบบปกติมันไม่สำคัญว่าทุกอย่างจะถูกจัดการโดย PAM ในท้ายที่สุด
ติดตั้งffmpegเราจะใช้สิ่งนี้เป็นวิธีการจับภาพเว็บแคม อัปเดต: ffmpeg จะถูกลบเมื่อคุณอัปเกรดเป็น Ubuntu 14.04 เราสามารถใช้ avconv แทน ffmpeg ในสคริปต์ด้านล่าง ไม่จำเป็นต้องติดตั้งอะไรแยกต่างหาก
สร้างสคริปต์เล็ก ๆ ที่ใดที่หนึ่งเช่น/usr/local/bin/grabpicture
ด้วยเนื้อหาต่อไปนี้
#!/bin/bash
ts=`date +%s`
ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
exit 0 #important - has to exit with status 0
เปลี่ยน / dev / video0 กับอุปกรณ์วิดีโอที่แท้จริงของเว็บแคมของคุณและเลือกเส้นทางที่ภาพจะถูกบันทึกไว้ - /tmp
ฉันเพียงแค่เลือก ใน Ubuntu รุ่นที่ใหม่กว่าใช้avconv
แทนffmpeg
( sudo apt-get install libav-tools
)
chmod +x /usr/local/bin/grabpicture
ทำให้ปฏิบัติการเช่น
/usr/local/bin/grabpicture
ทดสอบโดยเพียงแค่เรียกมันว่า: ตรวจสอบว่าคุณเห็นไฟล์ที่ปรากฏ/tmp/vid....jpg
หรือไม่
กำหนดค่า PAM เพื่อเรียกสิ่งนี้ในทุกความพยายามที่ล้มเหลว
หมายเหตุ: ทำอย่างระมัดระวัง - หากล้มเหลวคุณจะไม่สามารถเข้าถึงระบบของคุณได้อีกในทางปกติ
- เปิดหน้าต่างเทอร์มินัลด้วยการเข้าถึงรูท (sudo -i) และเปิดทิ้งไว้ - ในกรณีที่คุณพลาดในขั้นตอนถัดไป
เปิด/etc/pam.d/common-auth
ในเครื่องมือแก้ไขรายการโปรดของคุณเช่นเปิดgksudo gedit /etc/pam.d/common-auth
ไฟล์ โปรดทราบสำหรับขั้นตอนต่อไปนี้ที่ลำดับของบรรทัดในไฟล์นี้มีความสำคัญ
ค้นหาบรรทัดด้านล่าง pam_deny.so
โดยค่าเริ่มต้นมีหนึ่งเส้นก่อนที่หนึ่งด้วย ในระบบ 12.04 ของฉันดูเหมือนว่า:
auth [success=1 default=ignore] pam_unix.so nullok_secure
ในบรรทัดนี้เปลี่ยนความสำเร็จ = 1 เป็นความสำเร็จ = 2 เพื่อให้มันข้ามสคริปต์ของเราเกี่ยวกับการประสบความสำเร็จ นี่เป็นขั้นตอนสำคัญ
ด้านล่างตรงนั้นเพิ่มใหม่เพื่อเรียกสคริปต์จริง:
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
บันทึกและปิดไฟล์ ไม่จำเป็นต้องรีสตาร์ทอะไร
ทดสอบมัน
- ในหน้าต่างเทอร์มินัลใหม่ในฐานะผู้ใช้ทั่วไปให้ลอง
su -l username
ลงชื่อเข้าใช้ด้วยชื่อผู้ใช้อื่นusername
(เปลี่ยนด้วยชื่อจริง) จงใจป้อนรหัสผ่านผิด ตรวจสอบว่าผลลัพธ์นี้เป็นภาพใหม่หรือไม่
- เหมือนกับด้านบน แต่ตอนนี้ป้อนรหัสผ่านที่ถูกต้อง ตรวจสอบว่าคุณเข้าสู่ระบบและจะไม่ส่งผลให้ภาพถูกถ่าย
หากการทดสอบประสบความสำเร็จคุณสามารถออกจากระบบ DE (Unity / KDE / ... ) และคุณจะเห็นเหมือนกันเมื่อป้อนรหัสผ่านผิดจากหน้าจอเข้าสู่ระบบ