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.
Para usar o Samba com LDAP usei os seguintes pacotes:
samba-3.0.14
smbldap-tools-0.9.2
Depois de instalados, vamos a configuração do /etc/samba/smb.conf,
que deve ter as seguintes linhas:
[global]
workgroup = seudominio
server string = Servidor de Rede
netbios name =servidor
printcap name = /etc/printcap
load printers = yes
printing = lprng
logon script = %G.bat
guest account=nobody
log file = /var/log/samba/log.%m
max log size = 50
security = user
encrypt passwords=yes
smb passwd file=/etc/samba/smbpasswd
passwd program=/usr/bin/passwd %u
passwd chat = *New*password* %n
*Retype*new*password* %n
*passwd:*all*authentication*t
okens*updated*successfully*
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = yes
os level = 65
domain master = yes
preferred master = yes
domain logons = yes
wins support = yes
wins proxy = yes
dns proxy = yes
time server = yes
name resolve order = bcast wins lmhosts
ldap ssl = no
# Na linha abaixo especifique o IP do servidor Slapd
passdb backend = ldapsam:ldap://127.0.0.1
ldap passwd sync = yes
ldap delete dn = Yes
# Especifique o seu domínio
ldap admin dn = cn=admin,dc=seudominio,dc=com,dc=br
ldap suffix = dc=seudominio,dc=com,dc=br
ldap machine suffix = ou=Computadores
ldap user suffix = ou=Usuarios
ldap group suffix = ou=Grupos
ldap idmap suffix = ou=Idmap
# Novamente o IP do servidor Slapd
idmap backend = ldap:ldap://127.0.0.1
idmap uid = 10000-20000
idmap gid = 10000-20000
# Nas linhas abaixo é necessário especificar corretamente a path dos
# utilitários para gerenciamento de usuários e grupos para samba+ldap
# estes utilitários são do pacote smbldap-tools
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
delete user script = /usr/local/sbin/smbldap-userdel "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/local/sbin/smbldap-groupdel "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script =
/usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
Depois de ter alterado o smb.conf, é necessário definir a senha do
administrador LDAP para o Samba. Primeiro apague o arquivo "secrets.tdb",
também seria legal apagar os logs antigos:
# Esta primeira linha você deve especificar o SID da rede, para isso
# use o comando: net getlocalsid
SID="S-1-5-21-2238445359-3023380572-354343709"
# Especifique o workgroup do samba
sambaDomain="seudominio"
# Ip do servidor Slapd
slaveLDAP="127.0.0.1"
slavePort="389"
# Ip do servidor Slapd
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify=""
cafile=""
clientcert=""
clientkey=""
suffix="dc=dal"
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Computadores,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=seudominio,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format=""
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome="\SERVIDOR\%U"
userProfile="\SERVIDORprofiles\%U"
userHomeDrive="H:"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
Feito isso é hora de criar os grupos no slapd, o pessoal costuma
dizer "Vamos popular o Slapd", para isso deve-se usar o comando:
# smbldap-populate
Depois disso teste tudo com o comando:
# getent group
Se tiver aparecido novos grupos "Domain Users", "Guests", etc, quer
dizer que está tudo funcionando.
Para adicionar usuários ao domínio, use o utilitário smbldap-useradd:
# smbldap-useradd -a -m -c "nomedousuario" nomedousuario
Para definir senha para o usuário:
# smbldap-passwd nomedousuario
E para expirar a senha do usuário e pedir senha nova no primeiro logon:
[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...