Скопировал этот пост на Ask 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 для вызова этого при каждой неудачной попытке.
Примечание: делайте это осторожно - если это не удастся, вы не сможете снова получить доступ к вашей системе.
- Откройте окно терминала с root-доступом (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 / ...), и вы должны увидеть то же самое при вводе неверного пароля с экрана входа в систему.