Mudança de hábito: autenticando usuários em base de dados MySQL
O cadastro de novos usuários ocupa uma parte importante do tempo do administrador. Mas nem sempre é possível manter atualizada a lista de usuários cadastrados para acesso aos servidores da organização. O módulo pam_mysql permite autenticar usuários com o uso de uma base local centralizada, facilitando a gestão de pessoal.
Parte 4: Entrando em cena
Para não haver falhas na autenticação dos usuários: todos precisam possuir um shell válido, mas não devem ter senha definida no sistema.
# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
klog:x:102:103::/home/klog:/bin/false
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
avahi-autoipd:x:104:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
gdm:x:105:113:Gnome Display Manager:/var/lib/gdm:/bin/false
avahi:x:110:121:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
haldaemon:x:111:122:Hardware abstraction layer,,,:/var/run/hald:/bin/false
prometeu:x:1000:1000:prometeu,,,:/home/prometeu:/bin/bash
mysql:x:112:125:MySQL Server,,,:/var/lib/mysql:/bin/false
estagiario1:x:1021:1010:,,,:/home/estagiario1:/bin/bash
estagiario2:x:1022:1011:,,,:/home/estagiario2:/bin/bash
Podemos testar a autenticação dos usuários cadastrados no banco de autenticação:
Ubuntu 8.10 prometeu-laptop tty2
prometeu-laptop login: estagiario2
Password: ******
Login incorrect
sudo tail /var/log/auth.log
Jul 17 10:21:15 ctadebian login[4475]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=tty2 ruser= rhost= user=estagiario2
Jul 17 10:21:17 ctadebian login[4475]: FAILED LOGIN (1) on 'tty2' FOR `estagiario2', Authentication failure
Jul 17 10:22:01 ctadebian CRON[5426]: (pam_unix) session opened for user root by (uid=0)
Jul 17 10:22:01 ctadebian CRON[5426]: (pam_unix) session closed for user root
Ubuntu 8.10 prometeu-laptop tty2
prometeu-laptop login: estagiario2
Password: ******
estagiario2@prometeu-laptop :~ $
Essa configuração pode ser utilizada para qualquer serviço com suporte ao uso do PAM: login, Squid, sudo, su, Apache2 etc, devendo ser ajustado o módulo libpam-* que corresponda ao serviço que desejarmos autenticar através da base MySQL.
Abraços a todos.
# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
klog:x:102:103::/home/klog:/bin/false
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
avahi-autoipd:x:104:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
gdm:x:105:113:Gnome Display Manager:/var/lib/gdm:/bin/false
avahi:x:110:121:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
haldaemon:x:111:122:Hardware abstraction layer,,,:/var/run/hald:/bin/false
prometeu:x:1000:1000:prometeu,,,:/home/prometeu:/bin/bash
mysql:x:112:125:MySQL Server,,,:/var/lib/mysql:/bin/false
estagiario1:x:1021:1010:,,,:/home/estagiario1:/bin/bash
estagiario2:x:1022:1011:,,,:/home/estagiario2:/bin/bash
Podemos testar a autenticação dos usuários cadastrados no banco de autenticação:
Ubuntu 8.10 prometeu-laptop tty2
prometeu-laptop login: estagiario2
Password: ******
Login incorrect
sudo tail /var/log/auth.log
Jul 17 10:21:15 ctadebian login[4475]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=tty2 ruser= rhost= user=estagiario2
Jul 17 10:21:17 ctadebian login[4475]: FAILED LOGIN (1) on 'tty2' FOR `estagiario2', Authentication failure
Jul 17 10:22:01 ctadebian CRON[5426]: (pam_unix) session opened for user root by (uid=0)
Jul 17 10:22:01 ctadebian CRON[5426]: (pam_unix) session closed for user root
Ubuntu 8.10 prometeu-laptop tty2
prometeu-laptop login: estagiario2
Password: ******
estagiario2@prometeu-laptop :~ $
Essa configuração pode ser utilizada para qualquer serviço com suporte ao uso do PAM: login, Squid, sudo, su, Apache2 etc, devendo ser ajustado o módulo libpam-* que corresponda ao serviço que desejarmos autenticar através da base MySQL.
Abraços a todos.
Interessante ...
Artigo bem explicado naum me recordo de ver um artigo aqui na vol descrito dessa forma bem simples. Uma boa alternativa para o LDAP. Aguardando suas diferenças e funções.É claro !!!
Parabens.
Lucas Rocha