Recentemente precisei implantar Samba como PDC autenticando em uma base LDAP. Encontrei muito material na internet, porém alguns muito complexos, outros incompletos. A questão é que deve-se saber muito bem o que está fazendo antes de um projeto como esse. Ainda mais levando em conta que a base LDAP irá autenticar outros serviços, como squid e aplicações internas. Costumo aplicar a filosofia KISS (Keep It Simple, Stupid), pois quanto mais complexo for, mais fácil é de dar problemas e mais demorado é para solucioná-los. Tudo isso tive que levar em conta, afinal não quero perder meu emprego.
Após ler vários manuais e fazer inúmeros testes, fiz a implantação do Samba + OpenLdap + Squid. Este é um passo-a-passo que criei enquanto fazia a implantação.
Tutorial: Samba como PDC + OpenLdap + Squid no Debian Etch.
Instalar o Samba: aptitude install samba samba-doc winbind
Arquivo exemplo de configuração do smb.conf: smb.conf
Instalar o OpenLDAP: aptitude install openssl db4.2-util sasl2-bin libsasl2-modules libsasl2-modules-ldap slapd ldap-utils
Copiar o schema do samba para o ldap:
cd /usr/share/doc/samba-doc/examples/LDAP/
gunzip samba.schema.gz
cp samba.schema /etc/ldap/schema/
cd /etc/ldap
Arquivo exemplo de configuração do slapd.conf: slapd.conf
descomentar a linha: allow bind_v2
Adicionar o schema do samba(no final da lista):
include /etc/ldap/schema/samba.schema
suffix “dc=empresa,dc=com,dc=br”
password-hash {MD5}
rootdn “cn=admin,dc=empresa,dc=com,dc=br”
rootpw (senha MD5)
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
by dn=”cn=admin,dc=empresa,dc=com,dc=br” write
Comando para criar senha: slaplasswd -h {MD5} -s senha
reiniciar openldap: etc/init.d/slapd restart
verificar se está online: netstat -lnt |grep 389
ps aux |grep slapd
Instalar smbldap-tools:aptitude install smbldap-tools
Editar os arquivos em /etc/smbldap.conf:
Pegar o SID do samba: net getlocalsid
Passar a senha do admin do openldap para o samba: smbpasswd -w senha_adm_ldap
Popular a base: smbldap-populate
Inserir usuário root na base ldap: smbpasswd -a root (caso dê erro, popule a base novamente)
Instalar nss: aptitude install libnss-ldap
editar /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
editar /etc/libnss-ldap.conf
bind policy soft (remover logs na inicialização do servidor)
Verifique se o sistema está reconhecendo os usuários da base com o comando: getent passwd
Por indicação do pessoal da lista debian-br estou utilizando a ferramenta LAM (LDAP Account Manager) para gerenciar minha base LDAP. Realmente é uma excelente opção para gerenciamento de um PDC.
instalar dependências: aptitude install apache2 apache2-ssl php5 php5-ldap php5-mhash php-fpdf
site oficial: http://sourceforge.net/projects/lam
wget http://ufpr.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.2.0-1_all.deb
dpkg -i ldap-account-manager_2.2.0-1_all.deb
Configurar a memória do apache:
editar o arquivo /etc/php5/apache2/php.ini
Alterar o parâmetro memory_limit para 64M
Acessar o endereço: http://seu_ip/lam
Para configurar o squid para acessar a base ldap basta utilizar a autenticação ldap_auth:
auth_param basic program /usr/lib/squid/ldap_auth -b “ou=users,dc=empresa,dc=com,dc=br” -h ip_do_servidor_ldap -v 3
No meu próximo post, abordarei backup e réplica da base LDAP.
Henrique Bueno é Administrador de Redes, especialista em tecnologias de código aberto e participante ativo em diversas comunidades. É desenvolvedor do projeto

Olá, meus parebéns. Muito bom seu tutorial. Facial e sucinto.
Mas Acho que pode ser melhorado. Tem algumas coisas que não são obvias e eu tive e ainda estou quebrando a cabeça. Posso passar algumas sugestões para seu correio. o que acha disso? Só falta uma pequena duvida: Eu tenho que criar o Dominio dentro do LAM, ele não achou as informações do Dominio. Será que eu fiz alguma coisa errada?
Ola Bruno. Muito bom o seu tutorial.
Estou com o seguinte problema, gostaria de saber se voce saberia a solucao.
O meu proxy ainda autentica no antigo dominio windows. Gostaria de migrar a autenticacao para o LDAP tb.
Hoje, os parametros do squid sao
/usr/local/squid/libexec/squid_ldap_group -R -b dc=meudominio,dc=com,dc=br” -D “cn=proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br” -w “*****” -f “(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=Internet,dc=dominioveltrac,dc=com,dc=br))” -h 192.168.0.1
jah criei esses objetos e grupos (proxy_user e os grupos) no ldap. o object class na linha de comando creio q tenha q colocar como inetOrgPerson (como esta listado no ldap), mas mesmo assim nao funciona. a autenticacao da maneira que eh feita hoje eh dividida em grupos (um permite download de executaveis e outro nao). agradeco se puder me responder
Fiz um tuto para isto cara…
http://discipulosdopinguim.com.br/blog/2009/08/01/debian-5-0-lenny-squid-autenticando-em-openldap/
veja ai funciona perfeito.. valeu!
Fiz todos os passos porém o samba não conseguia acessar o ldap mesmo com o serviço up, escutando na porta 389, ao verificar o /var/log/syslog a seguinte mensagem era exibida:
failed to bind to server ldap://127.0.0.1 with dn=”cn=admin,dc=xxxx,dc=xxx,dc=xx” Error: Can’t contact LDAP server
Solução:
Defini a porta do ldap na config do samba /etc/samba/smb.com
passdb backend = ldapsam:ldap://127.0.0.1:389
Alterei a config do /etc/ldap/ldap.conf
BASE dc=xxxx, dc=xxx, dc=xx
URI ldap://127.0.0.1:389
Eu estou tendo o mesmo problema, já verifiquei as suas dicas, mas ainda continua.
root@ubuntu:/etc/ldap# net getlocalsid xxxxxx.RJ
[2009/01/08 14:55:31, 0] lib/smbldap.c:smbldap_connect_system(992)
failed to bind to server ldap://127.0.0.1 with dn=”cn=admin,dc=xxxxxx,dc=RJ” Error: Invalid credentials
(unknown)
SID for domain xxxxxx.RJ is: S-1-5-21-3795218145-456597293-1763196476
Quer dizer… o OpenLdap está funcionando e o samba também, mas um não está se comunicando com o outro…
Henrique ,segui os passos do tutorial mas quando eu mando popular eu tenho o seguinte erro:
failed to add entry: attribute ’sambaNextRid’ not allowed at /usr/sbin/smbldap-populate line 499, line 237.
voce tem idéia o que pode ser isso .
obs: Utilizo o debian lenny