Copiei este post no ask Ubuntu por gertvdijk , apontado por mazs nos comentários. No esforço de encerrar esta questão.
Baseado neste post no Ubuntuforums do BkkBonanza .
Essa é uma abordagem usando o PAM e funcionará para todas as tentativas de login com falha. Usando o SSH, um terminal virtual ou através da tela de login normal, não importa, pois tudo é tratado pelo PAM no final.
Instale o ffmpeg , vamos usar isso como uma forma de linha de comando para capturar as imagens da webcam. Atualização: o ffmpeg é removido quando você atualiza para o Ubuntu 14.04. Podemos usar o avconv no lugar do ffmpeg no script abaixo. Não é necessário instalar nada separadamente.
Crie um pequeno script em algum lugar, por exemplo, /usr/local/bin/grabpicture
com o seguinte conteúdo
#!/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
Mude o / dev / video0 com o dispositivo de vídeo real da sua webcam e escolha um caminho onde as fotos serão salvas - eu apenas escolhi /tmp
. Na versão mais recente do Ubuntu, use em avconv
vez de ffmpeg
( sudo apt-get install libav-tools
).
Torne executável, por exemplo chmod +x /usr/local/bin/grabpicture
.
Testá-lo, por apenas chamando-o: /usr/local/bin/grabpicture
. Verifique se você vê os arquivos aparecendo /tmp/vid....jpg
.
Configure o PAM para chamar isso em todas as tentativas com falha.
Nota: faça isso com cuidado - se isso falhar, você não poderá obter acesso ao seu sistema novamente de maneira regular.
- Abra uma janela do terminal com acesso root (sudo -i) e deixe-a aberta - caso você estrague as próximas etapas.
Abra /etc/pam.d/common-auth
no seu editor favorito, por exemplo, fazendo gksudo gedit /etc/pam.d/common-auth
. Lembre-se das etapas a seguir que importam a ordem das linhas neste arquivo.
Localize a linha abaixo. Por padrão, há uma linha antes da linha com pam_deny.so
. No meu sistema 12.04, fica assim:
auth [success=1 default=ignore] pam_unix.so nullok_secure
Nesta linha, mude o sucesso = 1 para o sucesso = 2 para que ele pule o script com sucesso. Este é um passo importante.
Logo abaixo, adicione um novo para chamar o script real:
auth [default=ignore] pam_exec.so seteuid /usr/local/bin/grabpicture
Salve e feche o arquivo. Não há necessidade de reiniciar nada.
Teste-o.
- Em uma nova janela do terminal, como usuário comum, tente
su -l username
fazer login como outro usuário com nome de usuário username
(mude com o nome real, é claro). Digite deliberadamente a senha errada. Verifique se isso resulta em uma nova imagem.
- O mesmo que acima, mas agora digite a senha correta. Verifique se você faz login e isso não resulta em uma foto sendo tirada.
Se os testes foram bem-sucedidos, você pode sair do seu DE (Unity / KDE / ...) e verá o mesmo ao digitar uma senha errada na tela de login.