Conectamos o pendrive e testamos a autenticação do usuário "prometeu" no terminal tty4:
Ubuntu 8.10 prometeu-laptop tty4
prometeu-laptop login:
prometeu <ENTER>
*pam-usb v0.4.2
*Authentication request for user "prometeu" (login)
*Device "Kingston" is connected (good).
*Performing one time pad verifications...
*Access granted.
Last login: Sun Jun 7 00:22:32 BRT 2009 on tty3
prometeu@prometeu-laptop:~$
Podemos acrescentar o módulo
pamusb para qualquer serviço a ser autenticado. Verificamos a modificação do serviço "su", antes e depois da inclusão do módulo pamusb na sua pilha de autenticação:
su
senha:************** <ENTER>
root@prometeu-laptop:/home/prometeu#
# vi /etc/pam.d/su
auth sufficient pam_rootok.so
auth sufficient pam_usb.so
# exit
su
*pam-usb v0.4.2
*Authentication request for user "root" (su)
*Device "Kingston" is connected (good).
*Performing one time pad verifications...
*Access granted.
root@prometeu-laptop:/home/prometeu#
Algumas questões relativas à segurança no uso de autenticação via hardware USB estão desenvolvidas na FAQ do módulo pamusb:
- A cópia dos dados do dispositivo não garante que um usuário possa autenticar-se com as credenciais de outro, pois a sincronização entre o dispositivo e o sistema operacional ocorre a cada evento, tornando a cópia inválida;
- A perda ou quebra do dispositivo não é impeditiva para a autenticação, pois os outros módulos da pilha permitem a continuidade do processo de autenticação.
Por fim, mas não por último, podemos utilizar a ferramenta
pamusb-agent para ativar ações, mediante a conexão ou desconexão do dispositivo. Utilizaremos o bloqueio do console, conforme sugestão da documentação do módulo.
Devemos editar o arquivo
/etc/pamusb.conf, acrescentando a configuração do serviço de bloqueio do console, inserindo as linhas que se seguem na seção referente a serviços:
<user id="prometeu">
<device>kingston</device>
<option name="quiet">true</option>
<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>
</user>
Após a edição do arquivo realizaremos duas operações: configurar a proteção de tela (Sistema/Preferencias/Proteção de Tela), habilitando a proteção de tela; e adicionar o
pamusb-agent como programa gerenciador de sessão (Sistema / Preferências / Sessões / Adicionar). Podemos observar que a partir desse momento, a retirada do pendrive provoca o bloqueio do console e a inserção destrava.
Podemos acompanhar a ação do pamusb-agent no terminal virtual:
pamusb-agent
pamusb-agent[18329]: pamusb-agent up and running.
pamusb-agent[18329]: Watching device "Kingston" for user "prometeu"
pamusb-agent[18329]: Device "Kingston" has been removed, locking down user
"scox"...
pamusb-agent[18329]: Running "gnome-screensaver-command --lock"
pamusb-agent[18329]: Locked.
pamusb-agent[18329]: Device "Kingston" has been inserted. Performing
verification...
pamusb-agent[18329]: Executing "/usr/bin/pamusb-check --quiet
--config=/etc/pamusb.conf --service=pamusb-agent scox"
pamusb-agent[18329]: Authentication succeeded. Unlocking user "prometeu"...
pamusb-agent[18329]: Running "gnome-screensaver-command --deactivate"
pamusb-agent[18329]: Unlocked.
Outros eventos podem ser acionados pelo pamusb-agent.
Boa sorte.