Precisei configurar o Samba+LDAP no Alferes Linux (distribuição da Polícia Militar de Minas Gerais) e como só encontrei poucas e confusas informações na internet, resolvi escrever este artigo.
A distribuição Alferes Linux é baseada no Knoppix, que como vocês sabem, é da descendência do Debian.
Vamos começar pelos pacotes a serem instalados:
slapd-2.2.26
ldap-utils.2.2.26
db4.2-util
libldap-2.2.26
libldap2-2.1.30
libnss-ldap
libpam-ldap
Depois dos pacotes instalados, você deve editar o arquivo de
configuração do daemon LDAP, o caminho do arquivo é
/etc/ldap/slapd.conf:
# A linha abaixo habilita suporte a versão 2 da libldap
allow bind_v2
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
# Para o funcionamento do Samba+ldap é necessário a inclusão da
# linha abaixo, o arquivo samba.schema pode ser encontrado nos fontes
# do Samba.
include /etc/ldap/schema/samba.schema
schemacheck on
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd.args
loglevel 256
modulepath /usr/lib/ldap
moduleload back_bdb
backend bdb
checkpoint 512 30
database bdb
# Na linha abaixo deve ser especificado o nome do domínio, usei o
# domínio seudominio.com.br, repare que no lugar de cada . entra
# um ,dc=
suffix "dc=seudominio,dc=com,dc=br"
# Aqui é especificado o nome do root, usei como exemplo "admin"
rootdn "cn=admin,dc=seudominio,dc=com,dc=br"
# Na linha abaixo você deve colocar a chave gerada com o seguinte
# comando:
slappasswd -h {SSHA} -s suasenhaderoot
rootpw {SSHA}a3RkMdmTUeNdaNxwk5UaA6A0740ZY8mJ
directory "/var/lib/ldap"
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUID,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
lastmod on
access to
attrs=userPassword,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=seudominio,dc=com,dc=br" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=seudominio,dc=com,dc=br" write
by * read
Depois de concluída a edição do arquivo, você pode inicializar o
serviço slapd com o seguinte comando:
[2] Comentário enviado por agk em 14/12/2005 - 13:53h
Nossa, muito bom esse artigo, explica quase tudo o que eu precisava saber, só faltou explicar como adicionar/modificar/excluir os usuários na base LDAP.
[ ]'s.
[5] Comentário enviado por agk em 15/12/2005 - 15:25h
Olá. eu li o artigo do nosso colega francisco, mas ele é bem técnico no que tange a manipulação da base ldap. O que eu quis dizer quando me referi a manupulação da base ldap foi utilizar algum utilitário como o phpadmin que eu já testei, mas que possui muitas opções e para que está iniciando é bastante complicado entender quais os objetos e classes que se deve inserir para criar os usuários, grupos, nomes de máquinas no caso de máquinas com windows autenticando com samba + ldap.
A questão é bastante complexa, mas com certeza pode-se aprender muito ainda com ldap, pois de forma alguma este ou o artigo do nosso colega Francisco enceram o assunto, mas com certeza cada um deles dá sua parcela de contribuição para tornar mais fácil o entendimento do LDAP.
[ ]'s.
[6] Comentário enviado por 1c3roger em 21/12/2005 - 03:34h
Muito bom o seu artigo, parabens.
Estou fazendo alguns testes com LDAP e SAMBA e seu artigo ajudou muito. Só estou com um "pequeno" problema....Quando dou aquele comando getent para verificar se foram criados os grupos/usuários do Linux quando é feita a "população" do LDAP ele não me traz novas entradas.
O smbldap-tools deveria fazer isso ou não? Aqui não funciona e sem incluir tais grupos e usuários do /etc/passwd e no /etc/group o Samba não autentica os usuários.
[7] Comentário enviado por geovannyjs em 21/12/2005 - 12:51h
Olá, aparentemente o problema está na configuração do cliente, os nomes dos pacotes rpm são diferentes dos do debian, para ser sincero eu nunca implementei o samba+ldap em sistemas baseados em red hat.
[9] Comentário enviado por locolinux em 30/01/2006 - 14:56h
Bom dia,
Estou com esse erro:
# smbldap-populate
Using workgroup name from sambaUnixIdPooldn (smbldap.conf): sambaDomainName=linuxnewmedia
Using builtin directory structure
Use of uninitialized value in string ne at /usr/sbin/smbldap-populate line 169.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-populate line 173.
erreur LDAP: Can't contact master ldap server (IO::Socket::INET: connect: Conexão recusada) at /usr/share/perl5/smbldap_tools.pm line 160.
[11] Comentário enviado por NCC1701A em 14/02/2006 - 17:27h
Senhores,
Debian 3.1r1 apenas pacotes estaveis
Estou com uma dificuldade em integrar o LDAP e o SAMBA, de pois de tudo instalado e funcionado, domínio ativo e maquinas Windows logando perfeitamente no SAMBA+LDAP, aparece o seguinte problema.. A conta ROOT local para deixa funcionar em quase todos os aplicativos (gnome e etc) apenas o terminal local e o SSH continua funcionar.
Parando o SLAPD volta ao normail
Isso acontece apos o comando smbldap-populate , que não apresenta nenhum erro.
adding new entry: dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 2.
adding new entry: ou=Usuarios,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 3.
adding new entry: ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 4.
adding new entry: ou=Computadores,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 5.
adding new entry: ou=Idmap,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 6.
adding new entry: uid=root,ou=Usuarios,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 7.
adding new entry: uid=nobody,ou=Usuarios,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 8.
adding new entry: cn=Domain Admins,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 9.
adding new entry: cn=Domain Users,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 10.
adding new entry: cn=Domain Guests,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 11.
adding new entry: cn=Domain Computers,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 12.
adding new entry: cn=Administrators,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 16.
adding new entry: cn=Account Operators,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 18.
adding new entry: cn=Print Operators,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 19.
adding new entry: cn=Backup Operators,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 20.
adding new entry: cn=Replicators,ou=Grupos,dc=net
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 471, <GEN1> line 21.
adding new entry: sambaDomainName=webxcorp.net,dc=net
failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 471, <GEN1> line 21.
Please provide a password for the domain root:
No such object at /usr/share/perl5/smbldap_tools.pm line 341, <DATA> line 283.
[13] Comentário enviado por mritto em 20/04/2006 - 14:41h
Caros,
Estou com aplicando o ldap+samba no ubuntu mas qdo faço as alterações no slapd e tento startar ele apresenta o seguinte erro:
sudo /etc/init.d/slapd start
Starting OpenLDAP: running BDB recovery, slapd - failed:
/etc/ldap/slapd.conf: line 76: index attribute "sambaSID" undefined
[14] Comentário enviado por agk em 24/04/2006 - 09:02h
Caro colega mritto,
"Starting OpenLDAP: running BDB recovery, slapd - failed:"
Se refere ao pacote db4.2-util que você não tem instalado, instale-o.
"/etc/ldap/slapd.conf: line 76: index attribute "sambaSID" undefined"
Refere-se aos índices, aqui podem ocorrer algumas situações, talvez você não tenha definido o schema do samba na seção schemas ou não tenha copiado o schema do samba para o diretório de schemas.
Lembre-se que toda vez que você for mexer nos índices, para o servidor ldap e reindexar, pois senão você vai começar a ter erros de param_index failed. Para reindexar é só usar o slapindex.
[ ]'s.
[16] Comentário enviado por agk em 27/04/2006 - 15:42h
A sim, desculpe, para usar o slapindex é só você dar um stop na base e depois rodar o comando slapindex como root.
Se você tiver mais que uma base você tem que especificar a base para rodar o slapindex, se for apenas uma é só slapindex mesmo.
[ ]'s.
[17] Comentário enviado por eltonaugusto em 01/06/2006 - 15:48h
blz, funcionou direitinho!!! a base ldap com os usuários cadastrados esta perfeito, so que o windows não loga no servidor... nem o squid autentica os usuarios cadastrados, que pode ter acontecido hein???
[18] Comentário enviado por marceferreira em 21/06/2006 - 12:32h
Alguem pode me ajudar, segui a dica acima o erro eh no smbldap-populate:
Using workgroup name from sambaUnixIdPooldn (smbldap.conf): sambaDomainName=3cta.eb.mil.br
Using builtin directory structure
Use of uninitialized value in string ne at /usr/sbin/smbldap-populate line 169.
Use of uninitialized value in concatenation (.) or string at /usr/sbin/smbldap-populate line 173.
adding new entry: dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 2.
adding new entry: ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 3.
adding new entry: ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 4.
adding new entry: ou=Computadores,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 5.
adding new entry: ou=Idmap,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 6.
adding new entry: sambaDomainName=3cta.eb.mil.br,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 7.
adding new entry: uid=Administrator,ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 8.
adding new entry: uid=nobody,ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 9.
adding new entry: cn=Domain Admins,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 10.
adding new entry: cn=Domain Users,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 11.
adding new entry: cn=Domain Guests,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 12.
adding new entry: cn=Domain Computers,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 13.
adding new entry: cn=Administrators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 19.
adding new entry: cn=Print Operators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 20.
adding new entry: cn=Backup Operators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 21.
adding new entry: cn=Replicators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 460, <GEN1> line 21.
[23] Comentário enviado por citelli em 26/07/2006 - 02:41h
Alguém sabe algum script utilizando o smbldap-useradd onde eu consiga cadastrar contas no samba e no ldap em lote, tipo puxando um arquivo de texto com os seguintes parametros:
Nome o Usuario- login -RG ou CPF
nomedousuario|matricula|senha
Já tentei um script que tenho aqui mas ele sempre pede a senha, lembrando que não estou usando o comando normal para adicionar o usuario no Samba ( smbpasswd -a user senha ) pra mim não dá tem que ser usando o smbldap-passwd!! por favor me ajudem galera! Abraço a todos!
[24] Comentário enviado por rguidolini em 16/08/2006 - 10:29h
Ola pessoal, estou tentando configurar um cliente ldap no ubuntu 5.10, fiz todos os passos que encontrei num bom artigo mas tenho problemas e não consigo falar com o autor, então eu achei este artigo ( também muito bom ) mas não consegui resolver os prablemas ainda. Acontece o seguinte: eu tenho acesso ao banco de dados do ldap pois quando tento criar um usuário que sei que já existe no ldap o sistema me informa que ele já existe, mas se uso o comando su <usuario> a mensssagen retornada é: su: Authentication service cannot retrieve authentication info.
Outro problema é que se edito o arquivo /etc/pam.d/gdm como manda o artigo e reinicio o pc, o gdm não funciona e nem loga mais em modo texto.
Algue pode me ajudar?
[25] Comentário enviado por joao.claudio em 09/10/2006 - 18:15h
Ai galera, quem puder me ajuda!!! Fiquei o dia todo mas não consegui fazer o LDAP rodar, segue o log:
Oct 9 21:10:44 localhost slapd[1253]: @(#) $OpenLDAP: slapd 2.2.23 (May 30 2005 08:52:42) $ ^I@pulsar:/home/torsten/packages/openldap/openldap2.2-2.2.23/debian/build/servers/slapd
Oct 9 21:10:44 localhost slapd[1253]: daemon: IPv6 socket() failed errno=97 (Address family not supported by protocol)
Oct 9 21:10:44 localhost slapd[1253]: bdb_db_init: Initializing BDB database
Oct 9 21:10:44 localhost slapd[1253]: /etc/ldap/slapd.conf: line 57: rootpw can only be set when rootdn is under suffix
Oct 9 21:10:44 localhost slapd[1253]: slapd stopped.
Oct 9 21:10:44 localhost slapd[1253]: connections_destroy: nothing to destroy.
adding new entry: dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 2.
adding new entry: ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 3.
adding new entry: ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 4.
adding new entry: ou=Computadores,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 5.
adding new entry: ou=Idmap,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 6.
adding new entry: uid=root,ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 7.
adding new entry: uid=nobody,ou=Usuarios,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 8.
adding new entry: cn=Domain Admins,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 9.
adding new entry: cn=Domain Users,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 10.
adding new entry: cn=Domain Guests,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 11.
adding new entry: cn=Domain Computers,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 12.
adding new entry: cn=Administrators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 16.
adding new entry: cn=Account Operators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 18.
adding new entry: cn=Print Operators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 19.
adding new entry: cn=Backup Operators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 20.
adding new entry: cn=Replicators,ou=Grupos,dc=dal
failed to add entry: no global superior knowledge at /usr/sbin/smbldap-populate line 495, <GEN1> line 21.
adding new entry: sambaDomainName=labinf,dc=dal
failed to add entry: invalid DN at /usr/sbin/smbldap-populate line 495, <GEN1> line 21.
Please provide a password for the domain root:
No such object at /usr/share/perl5/smbldap_tools.pm line 353.
[27] Comentário enviado por joao.claudio em 01/11/2006 - 11:19h
Galera quando executo o coamando net getlocalsid
Dá o seguinte erro:
[2006/11/01 14:07:07, 0] lib/smbldap.c:smbldap_search_suffix(1176)
smbldap_search_suffix: Problem during the LDAP search: (No such object)
Acredito que seja algum objeto faltando, porém como instalo esse objeto?
[28] Comentário enviado por ernanimarx em 21/02/2007 - 23:04h
server:~# smbldap-populate
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 17.
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 18.
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 51.
Populating LDAP directory for domain eca (S-1-5-21-1586721280-2504631117-330380434)
(using builtin directory structure)
Please provide a password for the domain root:
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 17.
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 18.
Use of uninitialized value in substitution (s///) at /usr/share/perl5/smbldap_tools.pm line 140, <CONFIGFILE> line 51.
Changing UNIX and samba passwords for root
New password:
Retype new password:
server:~#
galera ta dando isso no meu populate... o q deve seR?
[29] Comentário enviado por lipecys em 11/09/2007 - 14:00h
E aí pessoal, muito bom artigo.
Só estou com uma dúvida, depois que configurar o Cliente LDAP, tem a conf do SAMBA, essa configuração tem que ser feita nos dois PC's? Tanto no servidor quanto no cliente?
[31] Comentário enviado por Joao Tacone em 19/02/2009 - 18:45h
Estou com um problema,
quando eu crio o usuário com o comando smbldap-useradd, ele não autentica no samba, acredito que não esteja sendo criado no samba, porque no ldap ele cria corretamente...