Скопіював цю публікацію на запит 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 / ...), і ви повинні побачити те саме, ввівши неправильний пароль з екрана входу.