Autenticação via hardware: o módulo pam_usb
O módulo de autenticação pamusb permite a criação de tokens de baixo custo e a ampliação da pilha de autenticação do sistema operacional, tornando-a mais flexível.
Parte 2: Verificando usuário cadastrado e arquivo de configuração
Verificando usuário cadastrado
Utilizamos as ferramentas de gerenciamento para verificar os usuários e o dispositivo de autenticação:# pamusb-check --dump root
Configuration dump for user root (service: pamusb-check):
enable: true
debug: false
quiet: false
color_log: true
pad_expiration: 3600 seconds
hostname: prometeu-laptop
system_pad_directory: .pamusb
device_pad_directory: .pamusb
# pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Device "Kingston" is connected (good).
* Performing one time pad verification...
Aviso: o dispositivo /dev/sdb1 já é tratado pelo arquivo /etc/fstab, por isso o rótulo fornecido é ignorado.
* Regeneratin new pads...
* Access granted.
# pamusb-check prometeu * No device configured for user "prometeu".
# pamusb-conf --add-user=prometeu
Which device would you like to use for authentication?
* Using "Kingston" (only option)
User: prometeu
Device: Kingston
Save to /etc/pamusb.conf?
[Y/n] Y
Done.
# pamusb-check prometeu
* Authentication request for user "prometeu" (pamusb-check)
* Device "Kingston" is connected (good).
* Performing one time pad verification...
* Regeneratin new pads...
* Access granted.
Verificando o arquivo de configuração
As operações de adição de dispositivo e cadastro de usuários criam entradas no arquivo de configuração do módulo pam-usb. Observamos as modificações acrescentadas nas seções de device e user:# vi /etc/pamusb.conf
<?xml version="1.0" ?><!--
pamusb.conf: Configuration file for pam_usb.
See http://www.pamusb.org/doc/configuring
-->
<configuration>
<!-- Default options -->
<defaults>
<!-- Example:
<option name="debug">true</option>
-->
</defaults>
<!-- Device settings -->
<devices>
<device id="kingston">
<vendor>
Kingston
</vendor>
<model>
DataTraveler 2.0
</model>
<serial>
Kingston_DataTraveler_2.0_89900000000000006CB02BF4-0:0
</serial>
<volume_uuid>
2C8E-0B1A
</volume_uuid>
</device>
</devices>
<!-- User settings -->
<users>
<!-- Note: Use pamusb-conf to add a user, then you can tweak
manually the configuration here if needed.
-->
<user id="root">
<device>
kingston
</device>
</user>
<user id="prometeu">
<device>
kingston
</device>
</user>
</users>
<!-- Services settings (e.g. gdm, su, sudo...) -->
<services>
pamusb.conf: Configuration file for pam_usb.
See http://www.pamusb.org/doc/configuring
-->
<configuration>
<!-- Default options -->
<defaults>
<!-- Example:
<option name="debug">true</option>
-->
</defaults>
<!-- Device settings -->
<devices>
<device id="kingston">
<vendor>
Kingston
</vendor>
<model>
DataTraveler 2.0
</model>
<serial>
Kingston_DataTraveler_2.0_89900000000000006CB02BF4-0:0
</serial>
<volume_uuid>
2C8E-0B1A
</volume_uuid>
</device>
</devices>
<!-- User settings -->
<users>
<!-- Note: Use pamusb-conf to add a user, then you can tweak
manually the configuration here if needed.
-->
<user id="root">
<device>
kingston
</device>
</user>
<user id="prometeu">
<device>
kingston
</device>
</user>
</users>
<!-- Services settings (e.g. gdm, su, sudo...) -->
<services>
O arquivo de configuração, no formato xml, possui seções.
<!-- Example: Speed up hotplugging by disabling one time pads -->
<!--
<service id="pamusb-agent">
<option name="one_time_pad">false</option>
</service>
-->
<!-- Disable output for 'su' (needed for gksu) -->
<!--
<service id="su">
<option name="quiet">true</option>
</service>
-->
</services>
</configuration>
<!--
<service id="pamusb-agent">
<option name="one_time_pad">false</option>
</service>
-->
<!-- Disable output for 'su' (needed for gksu) -->
<!--
<service id="su">
<option name="quiet">true</option>
</service>
-->
</services>
</configuration>
O arquivo de configuração está estruturado no formato xml. Ele possui quatro seções de gerenciamento, com tags que abrem e fecham cada seção:
- <defaults></defaults>
- <devices></devices>
- <users></users>
- <services></services>
e possui uma tag especial para comentários: <!-- -->
As configurações de aplicação geral devem ser incluídas na seção defaults e cada dispositivo, usuário ou serviço deve ser cadastrado na seção correspondente, mediante o uso das ferramentas ou por edição do arquivo.
[s]
Vagner