pam_usb é um módulo PAM que fornece autenticação de hardware para Linux usando unidades flash USB comuns, cartões SD, MMC, etc.
Com isso, você poderá fazer o login sem uma senha, bastando conectar um stick USB ou cartão de memória ao computador. Esta autenticação USB também funciona ao executar comandos de terminal que requerem superusuário - você não será solicitado a fornecer uma senha ao usar sudo, por exemplo.
pam_usb funciona com qualquer aplicativo que suporte PAM, como gerenciadores de login (GDM, Lightdm, etc.) e su/sudo.
Para autenticação, o pam_usb usa o número de série, modelo e fornecedor da unidade flash USB/cartão de memória, bem como One Time Pads opcionais (OTP). Quando One Time Pads está habilitado (isso é habilitado por padrão, mas você pode desabilitá-lo), o arquivo de teclado de usuário público é armazenado no USB/cartão de memória em uma pasta oculta chamada .pamusb
, enquanto a chave privada é armazenada em uma pasta oculta com o mesmo nome, armazenado no diretório inicial do usuário.
O desenvolvedor original desta ferramenta parece ter abandonado, não recebendo novos commits desde abril de 2016, e sem novos lançamentos desde 2011. Algumas melhorias foram feitas desde então, em vários repositórios. Para continuar melhorando o pam_usb, a ferramenta foi bifurcada, enquanto também incluía o trabalho que era feito anteriormente em outros repositórios (que incluem melhorias como a porta UDisk2).
Recursos pam_usb:
Existem 3 ferramentas fornecidas com o pam_usb: pamusb-agent
que podem ser usadas para acionar ações na autenticação ou remoção do dispositivo (por exemplo, você pode usar um comando para bloquear a tela se o dispositivo for removido), pamusb-conf
que torna a configuração do pam_usb mais fácil e pamusb-check
que é usado para integrar o mecanismo de autenticação do pam_usb em scripts ou aplicativos.
pam_usb atualmente não suporta a adição de mais de um dispositivo por usuário. Por enquanto, pamusb-conf
não adiciona dispositivos para usuários que já estão configurados. Você pode acompanhar esse problema aqui.
É importante notar que pam_usb é usado apenas para fazer login, e não para desbloquear o GNOME Keyring ou descriptografar pastas privadas. O GNOME Keyring não parece oferecer suporte ao desbloqueio por qualquer outra coisa que não seja a senha. Portanto, mesmo que você se conecte automaticamente ao usar o pam_usb e a unidade flash USB emparelhada esteja conectada, a caixa de diálogo de desbloqueio do GNOME Keyring ainda será exibida, solicitando que você digite sua senha para desbloqueá-la. O mesmo acontece ao usar a autenticação de impressão digital, por exemplo.
Eu tentei isso com GDM e LightDM. Em ambos os casos, na tela de login, tive que clicar no meu nome de usuário e pressionar a tecla Enter para fazer o login, sem precisar inserir a senha da conta.
Você também pode gostar de: KDE Connect/GSConnect: Como bloquear/desbloquear sua área de trabalho Linux usando um dispositivo Android
Este fork pam_usb não foi empacotado nos repositórios oficiais de nenhuma distribuição Linux. A antiga versão 0.5.0 (que usa Python2 e Udisks1) está disponível para algumas distribuições Linux, mas está faltando na maioria.
O desenvolvedor do fork do pam_usb empacotou esta versão do pam_usb para as versões recentes do Debian e do Ubuntu (bem como do Linux Mint, Pop!_OS e outras distribuições do Linux baseadas no Debian ou Ubuntu), e você pode baixá-lo daqui (você só precisará do pacote libpam-usb a partir daí).
O repositório de fork pam_usb também tem um Arch Linux/Manjaro PKGBUILD disponível.
Para outras distribuições Linux, você precisará compilá-lo a partir da fonte.
Se você estiver instalando pam_usb (fork) do pacote Debian fornecido por seu desenvolvedor, durante a instalação você será solicitado a selecionar o dispositivo e o usuário:
Se esse não for o seu caso ou se você quiser fazer isso manualmente mais tarde, pode configurar o pam_usb assim. Conecte uma unidade flash USB ou cartão de memória e execute o seguinte comando para adicionar seu novo dispositivo como um Método de autenticação:
sudo pamusb-conf --add-device NOME_DO_DISPOSITIVO
Onde NOME_DO_DISPOSITIVO
pode ser qualquer coisa você quer.
Em seguida, você precisará adicionar seu usuário à configuração pam_usb, usando:
sudo pamusb-conf --add-user NOMEDEUSUARIO
Onde NOMEDEUSUARIO
é o usuário para o qual você deseja habilitar a autenticação baseada em USB/cartão de memória.
O nome de usuário e as informações do dispositivo são salvos no arquivo /etc/security/pam_usb.conf
.
Agora você pode verificar a configuração para ver se tudo está correto usando:
pamusb-check NOMEDEUSUARIO
É importante observar que usando o DEB pacotes fornecidos por seu desenvolvedor, você não precisa configurar mais nada. Mas se você instalou o pam_usb da fonte, você precisará adicionar o pam_usb ao processo de autenticação do sistema, conforme explicado aqui.
Para outras opções de configuração do pam_usb, consulte sua página wiki de configuração.
pam_usb pode executar comandos quando o stick USB/cartão de memória é conectado ou removido, com a ajuda de pamusb-agent.
O wiki pam_usb tem um exemplo de uma configuração para bloquear a tela quando o stick USB/cartão de memória for removido e desbloqueá-lo quando for conectado novamente. Esse exemplo não funciona mais no Gnome (mas deveria funcionar em outros ambientes de desktop, substituindo gnome-screensaver-command
por cinnamon-screensaver-command
para Cinnamon desktop, mate-screensaver-command
para MATE desktop, etc.). [[Atualização]] Você também pode substituir xdg-screensaver
(parte do pacote xdg-utils
; por exemplo, xdg-screensaver lock
para bloquear a tela e xdg-screensaver reset
para desbloqueá-la).
Para fazer o pam_usb bloquear a tela se o stick USB/cartão de memória for removido, e desbloquear assim que o dispositivo for conectado novamente, em distribuições Linux usando systemd (eu só testei no Gnome) Estou usando a seguinte configuração:
<user id="NOMEDEUSUARIO">
<device>NOME_DO_DISPOSITIVO</device>
<!-- When the user "NOMEDEUSUARIO" removes the usb device, lock the screen -->
<agent event="lock">
<cmd>/usr/local/bin/screensaver-lock</cmd>
</agent>
<!-- Resume operations when the usb device is plugged back and authenticated -->
<agent event="unlock">
<cmd>/usr/local/bin/screensaver-unlock</cmd>
</agent>
</user>
Dois scripts são usados para fazer este trabalho. /usr/local/bin/screensaver-lock
é usado para bloquear a tela e /usr/local/bin/screensaver-unlock
para desbloquear a tela. Aqui estão seus conteúdos.
/usr/local/bin/screensaver-lock
:
#!/bin/sh
SESSION=`loginctl list-sessions | grep NOMEDEUSUARIO | awk \'{print $1}\'`
if [ -n $SESSION ]; then
loginctl lock-session $SESSION
fi
/usr/local/bin/screensaver-unlock
:
#!/bin/sh
SESSION=`loginctl list-sessions | grep USERNAME | awk \'{print $1}\'`
if [ -n $SESSION ]; then
loginctl unlock-session $SESSION
fi
Em ambos, substitua NOMEDEUSUARIO
pelo seu nome de usuário.
Relacionado a USB: Crie uma unidade USB inicializável simplesmente copiando o ISO para o USB com Ventoy (Linux e Windows)
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Login With A USB Flash Drive Instead Of A Password On Linux Using pam_usb (Fork)