Sao chép bài đăng này khi hỏi Ubuntu bởi gertvdijk , được chỉ ra bởi mazs trong các bình luận. Trong nỗ lực đóng câu hỏi này.
Dựa trên bài đăng này trên Ubuntuforums của BkkBonanza .
Đây là một cách tiếp cận sử dụng PAM và sẽ hoạt động cho tất cả các lần đăng nhập thất bại. Sử dụng SSH, thiết bị đầu cuối ảo hoặc thông qua màn hình đăng nhập thông thường, điều đó không thành vấn đề vì cuối cùng mọi thứ đều được xử lý bởi PAM.
Cài đặt ffmpeg , chúng tôi sẽ sử dụng điều này như một cách dòng lệnh để lấy hình ảnh webcam. Cập nhật: ffmpeg bị xóa khi bạn nâng cấp lên Ubuntu 14.04. Chúng ta có thể sử dụng avconv thay cho ffmpeg trong đoạn script dưới đây. Không cần phải cài đặt bất cứ thứ gì riêng biệt.
Tạo một tập lệnh nhỏ ở đâu đó, ví dụ /usr/local/bin/grabpicture
với nội dung sau
#!/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
Thay đổi / dev / video0 bằng thiết bị video thực tế của webcam của bạn và chọn đường dẫn lưu ảnh - tôi chỉ chọn /tmp
. Trong phiên bản mới hơn của Ubuntu, sử dụng avconv
thay vì ffmpeg
( sudo apt-get install libav-tools
).
Làm cho nó thực thi, ví dụ chmod +x /usr/local/bin/grabpicture
.
Kiểm tra nó, bằng cách chỉ gọi nó : /usr/local/bin/grabpicture
. Kiểm tra nếu bạn thấy các tập tin xuất hiện trong /tmp/vid....jpg
.
Định cấu hình PAM để gọi điều này trong mọi lần thử thất bại.
Lưu ý: thực hiện việc này một cách cẩn thận - nếu điều này không thành công, bạn sẽ không thể truy cập lại vào hệ thống của mình một cách thường xuyên.
- Mở một cửa sổ đầu cuối với quyền truy cập root (sudo -i) và để nó mở - chỉ trong trường hợp bạn làm hỏng các bước tiếp theo.
Mở /etc/pam.d/common-auth
trong trình soạn thảo yêu thích của bạn, ví dụ bằng cách làm gksudo gedit /etc/pam.d/common-auth
. Hãy ghi nhớ các bước sau đây theo thứ tự các dòng trong tệp này.
Xác định vị trí dòng bên dưới. Theo mặc định, có một dòng trước một với pam_deny.so
. Trên hệ thống 12.04 của tôi, nó trông như thế này:
auth [success=1 default=ignore] pam_unix.so nullok_secure
Trong dòng này, thay đổi thành công = 1 thành thành công = 2 để bỏ qua tập lệnh của chúng tôi về thành công. Đây là một bước quan trọng.
Ngay bên dưới đó, thêm một cái mới để gọi kịch bản thực tế:
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
Lưu và đóng tập tin. Không cần phải khởi động lại bất cứ điều gì.
Kiểm tra nó
- Trong cửa sổ terminal mới, với tư cách là người dùng thông thường, hãy thử
su -l username
đăng nhập với tư cách người dùng khác bằng tên người dùng username
(dĩ nhiên thay đổi với một người dùng thực tế). Cố tình nhập sai mật khẩu. Kiểm tra nếu kết quả này trong một hình ảnh mới.
- Giống như trên, nhưng bây giờ nhập mật khẩu chính xác. Kiểm tra nếu bạn đăng nhập và nó không dẫn đến một bức ảnh được chụp.
Nếu các thử nghiệm đã thành công, bạn có thể đăng xuất khỏi DE (Unity / KDE / ...) và bạn sẽ thấy điều tương tự khi nhập sai mật khẩu từ màn hình đăng nhập.