Você está na página 1de 10

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

OpenLDAP com suporte ao MySQL


Autor: Cristiano NiX <cristianolinux at gmail.com> Data: 13/08/2009 Introduo OpenLDAP um software livre que implementa o protocolo LDAP. Ele usado para centralizar informaes de forma hierrquica, por exemplo, centralizar senhas de usurios de diversos servidores em uma nica base. Tambm usado para centralizar aplicativos de servidores como (proxy, samba, ftp, emails, lista de endereos), entre outros. O LDAP permite a centralizao de informaes sobre usurios, senhas, diretrios home etc, em um nico lugar na rede. LDAP - Protocolo Leve de Acesso a Diretrios (tuttle 2003). Afirma que o LDAP um padro aberto capaz de facilitar, de forma flexvel, o compartilhamento, a manuteno e o gerenciamento de grandes volumes de informaes, definindo um mtodo-padro de acesso e atualizao de informaes dentro de um diretrio. O que um diretrio? Diretrio literalmente significa "algo usado para indicar direes", ou seja, algo que indica um caminho para se chegar quilo que se procura. Exemplo disso: a lista telefnica, que voc utiliza para pegar o endereo, telefone e tudo mais, caso queira comprar um lanche ou algo do tipo. Qualquer aplicao que tiver suporte ao protocolo LDAP poder se conectar a sua base e obter as informaes necessrias. A procura do LDAP funciona entrando na raiz e vai percorrendo os ns filhos at achar a informao desejada, de forma organizada, orientada a objetos. No se usa mais a rvore de diretrios do estilo X.500, usado agora estilo DNS. O objetivo dessa documentao a integrao do OpenLDAP com banco de dados MySQL, ao invs de usar o Berkeley DB. No caso muito usado quando queremos fazer o OpenLDAP se adequar em alguma aplicao

1 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

proprietria ou software livre que j tenha sua base de usurios e senhas cadastradas do banco de dado MySQL. A compilao foi feita usando Debian5 em uma mquina virtual, 256 de RAM, 10 GB HD.

Ambiente de teste - preparao Vamos compilar o OpenLDAP com suporte ao Berkeley DB, logs (syslog), SQL. Uma partio do HD ser reservada apenas para o ponto de montagem /opt, onde ficaro todos os aplicativos compilados. Logue-se como root no sistema Linux e agora mo na massa! # cd /usr/src

Baixando o cdigo-fonte dos aplicativos


Instalando os softwares necessrios para compilao dos cdigos-fonte: # apt-get install g++ make Bibliotecas necessrias para o OpenLDAP: # apt-get install autotools-dev libltdl3 libltdl3-dev libtool Berkeley DB ltima verso estvel: # wget http://ftp.momo-i.org/pub/other/db-4.7.25.tar.gz OpenLDAP ltima verso estvel: # wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.16.tgz Alm da compilao do OpenLDAP com suporte SQL, preciso compilar o ODBC e instalar o driver pr-compilado do MySQL (libmyodbc) por apt-get. # wget http://www.iodbc.org/downloads/iODBC/libiodbc-3.52.6.tar.gz # apt-get install libmyodbc MySQL 5.0 (banco de dados): # apt-get install mysql-server-5.0

2 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Configurando cdigo-fonte e instalando BerkelyDB e OpenLDAP Vamos agora parte de configurao do cdigo-fonte e instalao aos respectivos caminhos corretos. 1) Configurando e compilando cdigo-fonte do Berkeley DB (Base de Dados da Berkeley). Entrando no diretrio padro, onde sero feitas as compilaes e configuraes: # cd /usr/src/ Descompactando o cdigo-fonte do Berkeley DB: # tar zxvf db-4.7.25.tar.gz Entrando no diretrio descompactado: # cd db-4.7.25/build_unix Configurando o cdigo-fonte do Berkeley DB: # ../dist/configure --prefix=/opt/db4725 Compilando o cdigo-fonte e instalando o aplicativo no seguinte diretrio /opt/db4725: # make && make install 2) Configurando e compilando cdigo-fonte do ODBC Entrando no diretrio padro, onde sero feitas as compilaes e configuraes. # cd /usr/src/ Descompactando o cdigo-fonte do libiodbc: # tar zxvf libiodbc-3.52.6.tar.gz Entrando no diretrio descompactado: # cd libiodbc-3.52.6 Configurando o cdigo-fonte do libiodbc: # ./configure --prefix=/opt/odbc --with-pthreads Compilando o cdigo-fonte e instalando o aplicativo no diretrio /opt/odbc:

3 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

# make && make install 3) Configurando e compilando cdigo-fonte do OpenLDAP com: Suporte a criptografia (crypt, plaintext) Suporte ao banco de dados (bdb, hdb, sql, ODBC para suporte a outros banco de dados) Suporte a rplica Suporte a sistema de logs (syslog) Entrando no diretrio padro, onde sero feitas as compilaes e configuraes: # cd /usr/src/ Descompactando o cdigo-fonte do OpenLDAP: # tar zxvf openldap-2.4.16.tgz Entrando no diretrio descompactado: # cd /usr/src/openldap-2.4.16 Exportando as variveis de ambiente necessrias para ter uma instalao com sucesso: # export CPPFLAGS="-I/opt/odbc/include -I/usr/include/ -I/opt/db4725/include" # export LDFLAGS="-L/opt/odbc/lib -L/opt/db4725/lib" # export LD_LIBRARY_PATH="/opt/db4725/lib" Setando o caminho das libs de cada aplicao, no arquivo central de bibliotecas do sistema Linux: # echo "/opt/db4725/lib" >> /etc/ld.so.conf # echo "/opt/odbc/lib" >> /etc/ld.so.conf Atualizando bibliotecas do sistemas: # ldconfig Configurando o cdigo-fonte do OpenLDAP: # ./configure --prefix=/opt/ldap --sysconfdir=/opt/ldap/etc --enable-crypt=yes --enablemodules=yes --enable-syslog=auto --enable-slurpd=yes --enable-bdb --enable-sql=yes Conferindo se faltou alguma dependncia do OpenLDAP: # make depend Compilando o cdigo-fonte e instalando o aplicativo no diretrio /opt/ldap: # make && make install

4 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Setando os binrios no PATH e setando o OpenLDAP na inicializao Colocando todos os caminhos de binrios de aplicativos no PATH do Linux. Use seu editor predileto, no caso usei o vim: # vi /etc/profile Tecle "i" para inserir os caminhos. Modificar o PATH atual de: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Para: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/db4725/bin:/opt/odbc/bin: /opt/ldap/bin:/opt/ldap/libexec:/opt/ldap/sbin" Agora vamos salvar e sair do arquivo. ESC :x Agora vamos reler o arquivo de variveis de ambiente e setar o PATH novo: # source /etc/profile Pronto, agora voc estar habilitado para acessar todas as ferramentas de administrao dos aplicativos a partir de qualquer lugar, sem precisar o caminho de localizao do arquivo. Colocando o OpenLDAP rodar na inicializao do sistema Linux: # vi /etc/rc.local Adicionar a seguinte linha antes de "exit 0": /opt/ldap/libexec/slapd ESC :x Pronto! Feito isso, tudo ok.

Configurando o OpenLDAP para acesso ao MySQL (parte1) Nesse estudo de caso no abordarei sobre configuraes do MySQL. Ento mo na massa!

5 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Como administrador do sistema Linux, vamos criar a base de dados chamada "ldap". # mysqladmin -u root -p create ldap Agora vamos alterar o arquivo de configurar slapd.conf para se utilizar do modo SQL. Seguem as instrues abaixo. Use seu editor predileto, no caso usei vim. # vi /opt/ldap/etc/openldap/slapd.conf allow bind_v2 # Schema and objectClass definitions include /opt/ldap/etc/openldap/schema/core.schema include /opt/ldap/etc/openldap/schema/cosine.schema include /opt/ldap/etc/openldap/schema/inetorgperson.schema pidfile /opt/ldap/var/run/slapd.pid argsfile /opt/ldap/var/run/slapd.args loglevel 256 moduleload back_sql database sql suffix "dc=dominio,dc=com" rootdn "cn=admin,dc=dominio,dc=com" # Pode-se utilizar o tipo de criptografia CRYPT, estou usando plaintext apenas para fins didticos. # Coloque a senha de administrador do openldap. #rootpw {CRYPT}yrvhRwDhTj rootpw senha dbname ldap dbuser root dbpasswd senha subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)" insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)" has_ldapinfo_dn_ru no Salve e saia do arquivo: ESC :x

Configurando o OpenLDAP para acesso ao MySQL (parte2)

6 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Configurando o ODBC
Confirme a opo para adicionar o MySQL automaticamente como um driver ODBC. Modifique o arquivo /etc/odbcinst.ini deixando-o assim: [MySQL] Description = MySQL driver Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so CPTimeout = CPReuse = UsageCount = 1 # dpkg-reconfigure libmyodbc Agora o arquivo /etc/odbc.ini que ficar desse jeito, configurado com os dados do servidor MySQL: [ODBC Data Sources] ldap = MySQL LDAP DSN [ldap] Driver = /usr/lib/odbc/libmyodbc.so Description = MySQL LDAP DSN Server = localhost Port = 3306 User = root Password = senha Database = ldap # Coloque o caminho correto do socket do mysql Socket = /var/run/mysqld/mysqld.sock # Coloque o caminho de onde voc compilou o libiodbc [ODBC] InstallDir = /opt/odbc/lib/ Agora com ODBC e OpenLDAP configurados e instalados, vamos testar a conexo entre o ODBC e o MySQL antes de iniciar o servio do OpenLDAP.

Configurando o OpenLDAP para acesso ao MySQL (parte3)

7 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Testar conexo ODBC: Vamos digitar "?" para ver todas as conexes. # iodbctest
iODBC Demonstration program This program shows an interactive SQL processor Driver Manager: 03.52.0607.1008 Enter ODBC connect string (? shows list): ?

DSN | Driver ----------------------------ldap | MySQL LDAP DSN Enter ODBC connect string (? shows list):

Testando comunicao entre ODBC e MySQL: # iodbctest


iODBC Demonstration program This program shows an interactive SQL processor Driver Manager: 03.52.0607.1008 Enter ODBC connect string (? shows list): ? DSN | Driver ------------------------------ldap | MySQL LDAP DSN

Configurando o OpenLDAP para acesso ao MySQL (parte4) Testando integrao do ODBC com MySQL. Acessando ODBC: # iodbctest Enter ODBC connect string (? shows list): DSN=ldap Caso ocorra algum erro, revise as configuraes do /etc/odbc.ini e my.cnf. Se estiver tudo ok, aparecer a seguinte mensagem: Enter ODBC connect string (? shows list): DSN=ldap Driver: 03.51.15 (libmyodbc3.so) SQL>

8 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

Para testar digite: SQL> show databases;


Database -------------------------------------------information_schema ldap mysql result set 1 returned 3 rows.

SQL> Pronto, est tudo funcionando!

Fazendo o OpenLDAP trabalhar com MySQL (final) Agora com ambos funcionando, necessrio importar algumas tabelas que vm com o cdigo-fonte do OpenLDAP. Entrando no diretrio MySQL, que contm as tabelas necessrias para o funcionamento do OpenLDAP com o MySQL: # cd /usr/src/openldap-2.4.16/servers/slapd/back-sql/rdbms_depend/mysql/ Criando todas as tabelas e inserindo informaes de exemplos: # mysql -u root -p ldap < backsql_create.sql # mysql -u root -p ldap < testdb_data.sql # mysql -u root -p ldap < testdb_metadata.sql Bom, a partir de agora toda a estrutura necessria para funcionar o OpenLDAP com MySQL est pronta. Depois, utilizando o phpmyadmin, altere as informaes de acordo com o seu domnio cadastrado no LDAP. Pronto, vamos inicializar o OpenLDAP em modo debug para testar seno aparecer nenhum erro: # slapd -d5 Caso contrrio aparecer umas mensagens de conexo MySQL mostrando que est tudo funcionando corretamente. Para iniciar sem o debug (processo normal), apenas digite:

9 of 10

06/12/2011 21:42

OpenLDAP com suporte ao MySQL [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=10166

# slapd Tudo pronto, valeu a pena o trabalho de compilar.

Agradecimentos
Quero agradecer ao meus amigos Clodonil Honrio, que escreveu o livro OpenLDAP, uma abordagem integrada, Nielsen Alves Pereira, meu amigo de Linux h muito tempo e de trabalho agora. Valeu por tudo a!

http://www.vivaolinux.com.br/artigo/OpenLDAP-com-suporte-ao-MySQL Voltar para o site

10 of 10

06/12/2011 21:42

Você também pode gostar