[FUG-BR] Samba com PAM-MYSQL

Rafael Henrique Faria rafaelhfaria em cenadigital.com.br
Quinta Setembro 11 12:25:04 BRT 2008


Boa tarde lista.

Eu estou tentando configurar o PAM para autenticar no MySQL. Mas
completamente sem sucesso.

Eu estou utilizando um FreeBSD 7.0, com o PAM-MySQL instalado do ports.

Eu tentei configurar o /etc/pam.d/login, para autenticar com o
PAM-MySQL, sem sucesso.
O mesmo com o /etc/pam.d/sshd, e novamente com o Samba (que é o que eu quero).

O q acontece é o seguinte erro:

Esse ocorre com a senha invalida: ---
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - SELECT password FROM
users WHERE login = 'rfaria'
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql -
pam_mysql_check_passwd() returning 6.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_sql_log() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_sql_log()
returning 0.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_converse() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_open_db() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql -
pam_mysql_check_passwd() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql -
pam_mysql_format_string() called
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql -
pam_mysql_quick_escape() called.

Esse ocorre com a senha valida: ---
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - SELECT password FROM
users WHERE login = 'rfaria'
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql -
pam_mysql_check_passwd() returning 0.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_sql_log() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_sql_log()
returning 0.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_sm_authenticate()
returning 0.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_release_ctx() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_destroy_ctx() called.
Sep 11 11:58:45 rousseau swat[1800]: pam_mysql - pam_mysql_close_db() called.

O que eu reparei, foi a linha:
pam_mysql - pam_mysql_check_passwd() returning x.

Onde quando a senha é valida fica: "0", e quando a senha é invalida, fica "6".

Mas mesmo quando a senha é valida, eu não consigo autenticar... e esse
mesmo erro ocorre para o "login", e para o "ssh".

E quando eu autentico pelos usuarios do passwd retorna isso:

-- Com a senha valida:
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - SELECT password FROM
users WHERE login = 'paramount'
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - SELECT returned no result.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql -
pam_mysql_check_passwd() returning 1.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_mysql_sql_log() called.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_mysql_sql_log()
returning 0.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_sm_authenticate()
returning 13.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_mysql_release_ctx() called.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_mysql_destroy_ctx() called.
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_mysql_close_db() called.


Na linha:
Sep 11 12:11:44 rousseau swat[1849]: pam_mysql - pam_sm_authenticate()
returning 13.

Reparei que ele retorna "13" quando o usuario e a senha são validos, e
"0" quando não confere.


Alguém já passou por isso?

Ou conhecem alguma forma de fazer o PAM-MySQL funcionar para
autenticação dos usuários?

Eu queria autenticar via Login, SSH, Samba, FTP. Tudo via PAM-MySQL.

O meu /etc/pam.d/samba é esse:
auth            sufficient      pam_mysql.so
config_file=/etc/security/pam_mysql.conf
auth		required	pam_unix.so		no_warn try_first_pass
account		required	pam_nologin.so
account		required	pam_unix.so
session		required	pam_permit.so
password	required	pam_unix.so		no_warn try_first_pass


O do SSH e do Login estão bem parecidos.

E o meu /etc/security/pam_mysql.conf é esse:
users.host=192.160.0.20:3306;
users.database=banco;
users.db_user=usuario;
users.db_passwd=senha;
users.table=users;
users.user_column=login;
users.password_column=password;
users.password_crypt=1;
users.disconnect_every_operation=false;
verbose=1;


----

Eu já tentei com a senha em PLAIN, (usando crypt=0), com a senha via
CRYPT() - (com crypt=1) e com a senha via MD5(), com (crypt=2).
Tudo sem sucesso.


Agradeço qualquer ajuda.


-- 
Rafael Henrique da Silva Faria
# Grupo Cena Digital
# (16) 9229-8928
# www.cenadigital.com.br


Mais detalhes sobre a lista de discussão freebsd