Blog Linux Avante

Como fazer login com uma unidade flash USB em vez de uma senha no Linux usando pam_usb (Fork)

8 de fevereiro de 2021

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:

  • Autenticação sem senha (cartão de memória/USB). Basta conectar o stick USB/cartão de memória que você configurou com pam_usb para fazer o login
  • Suporta unidades flash USB, cartões SD, MMC, etc.
  • Sondagem automática do dispositivo. pam_usb não requer que a unidade flash USB seja montada; ele pode localizar o dispositivo USB e acessar seus dados diretamente, usando UDisks
  • Não é necessário reformatar a unidade flash USB
  • Número de série USB, modelo e verificação do fornecedor
  • Suporta autenticação One Time Pads (OTP)
  • Pode ser usado como autenticação de dois fatores, exigindo o stick USB e a senha para fazer o login no sistema Linux
  • Você pode usar o mesmo cartão de memória/pen drive USB em várias máquinas

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.

Instale e configure pam_usb (fork)

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:

configuração libpam-usb

configuração libpam-usb

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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

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.

Configure pam_usb para bloquear a tela se o pen drive/cartão de memória for removido (e desbloqueie-o assim que for conectado novamente)

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.

via wiki.ubuntuusers.de

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.
Propaganda