A instalação das bibliotecas e das ferramentas de gerenciamento dos
dispositivos bluetooth cria os arquivos necessários ao gerenciamento do
módulo pam_blue.
# ls -l /etc/bluetooth
total 20
-rw-r--r-- 1 root root 819 2008-10-26 21:27 audio.conf
-rw-r--r-- 1 root root 262 2008-10-26 21:27 input.conf
-rw-r--r-- 1 root root 912 2008-10-26 21:27 main.conf
-rw-r--r-- 1 root root 751 2008-10-26 21:27 network.conf
-rw-r--r-- 1 root root 297 2008-10-26 21:27 rfcomm.conf
As ferramentas de configuração proporcionam as informações necessárias para a configuração dos arquivos. Utilizamos as ferramentas '
hcitool' e '
hciconfig' para identificar os dispositivos existentes e para verificar as possibilidades de uso desses dispositivos. Como veremos em seguida:
# hcitool scan
Scanning ...
00:23:45:99:F4:F8 T303
# hciconfig
hci0: Type: USB
BD Address: 00:09:DD:50:6F:23 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING
RX bytes:8218 acl:24 sco:0 events:711 errors:0
TX bytes:4037 acl:24 sco:0 commands:657 errors:0
# hciconfig -a hci0
hci0: Type: USB
BD Address: 00:09:DD:50:6F:23 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING
RX bytes:7095 acl:24 sco:0 events:614 errors:0
TX bytes:3558 acl:24 sco:0 commands:560 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'prometeu-laptop-0'
Class: 0x0a010c
Service Classes: Networking, Capturing
Device Class: Computer, Laptop
HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
Manufacturer: Cambridge Silicon Radio (10)
# /etc/init.d/dbus restart
# /etc/init.d/bluetooth restart
É fundamental lembrar de realizar o pareamento entre os dispositivos. O smartphone ou o celular dispõe do menu configurações (configurações / conectividade / bluetooth), variando um pouco conforme a marca e o modelo. Nesse menu devemos efetuar o pareamento entre o dispositivo móvel e o PC, inserindo uma senha a ser compartilhada pelos dispositivos e autorizando o PC a manter-se conectado, para que não seja necessário digitar a senha compartilhada a cada acesso.
O arquivo principal de autenticação (
/etc/bluetooth/main.cf) inclui parâmetros genéricos para identificação de dispositivos, como podemos observar através da edição do mesmo:
# vi /etc/bluetooth/main.conf
1 [General]
2
3 # List of plugins that should not be loaded on bluetoothd startup
4 #DisablePlugins = network,input
5
6 # Default adapter name
7 # %h - substituted for hostname
8 # %d - substituted for adapter id
9 Name = %h-%d
10
11 # Default device class. Only the major and minor device class bits are
12 # considered
13 Class = 0x000100
14
15 # How long to stay in discoverable mode before going back to non-discoverable
16 # The value is in seconds. Default is 180, i.e. 3 minutes.
17 # 0 = disable timer, i.e. stay discoverable forever
18 DiscoverableTimeout = 0
19
20 # Use some other page timeout than the controller default one
21 # (16384 = 10 seconds)
22 PageTimeout = 8192
23
24 # Behaviour for Adapter.SetProperty("mode", "off")
25 # Possible values: "DevDown", "NoScan" (default)
26 OffMode = NoScan
27
28 # Discover scheduler interval used in Adapter.DiscoverDevices
29 # The value is in seconds. Defaults is 0 to use controller scheduler
30 DiscoverSchedulerInterval = 0
Os valores de configuração padrão podem ser modificados a partir do uso das ferramentas de verificação de dispositivos, mas normalmente atendem ao correto funcionamento.
O arquivo de configuração da comunicação serial (
/etc/bluetooth.conf) pode ser editado com os valores correspondentes ao dispositivo bluetooth com o qual se deseje comunicar e, somente nesse caso, nós deveremos editá-lo com os valores retornados pelas ferramentas de configuração. Vejamos a configuração original do referido arquivo:
# vi /etc/bluetooth/rfcomm.conf
#
# RFCOMM configuration file.
#
#rfcomm0 {
# # Automatically bind the device at startup
# bind no;
#
# # Bluetooth address of the device
# device 11:22:33:44:55:66;
#
# # RFCOMM channel for the connection
# channel 1;
#
# # Description of the connection
# comment "Example Bluetooth device";
#}
# rfcomm1 {
# bind yes;
# device 00:07:E0:18:9A:02;
# channel 1;
# comment "treo";
#}
Esse arquivo não necessita sofrer alteração se o que se deseja é realizar somente autenticação via hardware, pois a comunicação serial é necessária nos casos em que a autenticação seja feita através de aplicação que necessite contato entre o servidor e o cliente bluetooth, ou no uso de sincronizadores entre o dispositivo móvel e o PC (aplicativo java, kmobile).
Utilizaremos o arquivo de configuração do módulo do pam_blue (
/etc/security/bluescan.conf), no qual inseriremos as informações para a identificação do dispositivo e uma entrada para cada um dos usuários que realizarão autenticação:
# vi /etc/security/bluescan.conf
#
# sample bluescan.conf configuration file
# $Id: sample.conf 3 2004-04-18 23:32:18Z pfeifer $
#
general {
# the normal timeout for scanning
# watch out for a to tiny timeslot for scanning
# values between 3 and 15 seconds are valid
timeout = 3;
}
# configuration for user korzendorfer
# korzendorfer = {
#
# bluetooth device name
# name = tux;
#
# bluetooth mac address
# bluemac = 54:34:34:34:34:34;
#
# a seaparate timeout
# timeout = 10;
#}
# pfeifer = {
# name = AIRBUS;
# bluemac = 00:0E:07:3B:96:02;
#}
#@users = {
# name = AirbusA412;
# bluemac = 54:34:34:34:34:34;
# timeout = 10;
#}
# gast = {
# bluemac = 54:34:34:34:34:34;
#}
@herois = {
bluemac = 00:23:45:99:F4:F8;
name = T303;
timeout = 5;
}
prometeu = {
bluemac = 00:23:45:99:F4:F8;
name = T303;
timeout = 5;
}
felipe = {
bluemac = 00:23:45:99:F4:F8;
name = T303;
timeout = 5;
}
O arquivo de configuração do
módulo pam_blue trabalha com as variáveis necessários para habililitar os dispositivos de autenticação:
- bluemac = endereço do dispositivo;
- name = nome do dispositivo;
- timeout = tempo de conexão;
- @users e @herois = grupos criados no sistema e nos quais podemos incluir usuários para que possam se autenticar via bluetooth.
É importante lembrar que a conta com a qual o usuário vai acessar o sistema deve possuir um shell válido, do contrário não será possível o acesso.