You are here: Wiki-SL>PSLGO Web>LdapSambaPessoal (14 Feb 2012, MarioSilva?)EditAttach

Autenticação com OpenLdap e Samba (Personalizado para você)

Sabemos que diversos artigos na internet mostram como configurar um servidor GNU/Linux para atuar como PDC com Samba e Ldap.

Porém, a maioria deles não oferece uma forma de você entrar com suas informações e obter os seus arquivos de configuração. Sempre é necessário alterar alguns campos, variáveis, etc para colocar em funcionamento para sua empresa.

Isso, às vezes, pode ser um "ponto de falha" para alguns administradores com menos experiência, pois a edição desses arquivos pode causar erros, dando uma sensação de fracasso das ferramentas, ou mesmo, achar que o tutorial não funciona corretamente.

Objetivando simplificar ainda mais esse processo de configuração, fiz este tutorial personalizado para auxiliar no processo de gerar os arquivos de configuração já prontos para sua instalação na sua empresa. Basta que você faça um copiar e colar dos arquivos personalizados.

ALERT! Atenção:

ALERT! Atenção: Para que esse tutorial personalizado funcione corretamente siga os passos abaixo:

1) Formulário de Personalização

Preencha o formulário e clique em Vá ao passo 2.

IP do LDAP Master IP do Servidor Master LDAP.
Ex.: 10.76.0.206
NetBios Name Nome do servidor visto pelas estações Windows.
Ex.: LXGOD001
Domínio Samba Os usuários Windows irão se logar neste domínio.
Ex.: PREV-GO
Comentário Samba Comentário visto pelos usuários Windows ao navegar pela rede.
Ex.: PREVIDENCIA SOCIAL-GO-DATAPREV - GNU/Linux SMB
Sufixo Ldap É a raiz do LDAP onde todos os objetos ficarão.
Ex.: dc=go,dc=previdencia
Root LDAP É o root do LDAP.
Ex.: root ou Manager"
NEW Não é mais necessário *repetir
o Sufixo Ldap
Password Root Ldap É a senha do Root DN para o LDAP. Não é a senha do root do GNU/Linux.
Ex.: senha-em-modo-texto

2) Variáveis fornecidas no formulário

Variável Valor Escolhido
IP Ldap Master vazio
Netbios Name vazio
Domínio Samba vazio
Comentário Samba vazio
Sufixo Ldap vazio
Root LDAP vazio
Password Root Ldap vazio
Root DN DONE cn=,

3) Introdução ao LDAP e Samba

Veja uma breve Introdução ao Ldap e Samba

4) Instalação dos pacotes

Veja uma simples instalação dos pacotes.

5) Arquivos de configuração

Especialmente para você [ 54.92.180.46 ] às [ 22 Jul 2017 - 23:54 ]

Remedio LDAP

5.1) Configurando o Servidor OpenLdap

O arquivo principal de configuração do servidor LDAP é o /etc/openldap/slapd.conf, mostrado abaixo.

## Modificação: Jarbas - 18-07-2005
## Baseado na documentação do IDEALX.ORG

# ===== Bibliotecas SCHEMA que o LDAP irá utilizar =====
include /usr/share/openldap/schema/core.schema
include /usr/share/openldap/schema/cosine.schema
include /usr/share/openldap/schema/inetorgperson.schema
include /usr/share/openldap/schema/nis.schema
include /usr/share/openldap/schema/samba.schema

schemacheck on

# ===== Habilita a versão 2 do protocolo LDAP =====
# É necessário para algumas versões antigas do mozilla poderem acessar o catálogo de endereços ldap
allow bind_v2

# Para permitir conexões criptografadas, criar /etc/ssl/openldap/ldap.pem
# através do /usr/share/openldap/gencert.sh
TLSRandFile            /dev/random
TLSCipherSuite         HIGH:MEDIUM:+SSLv2
TLSCertificateFile      /etc/ssl/openldap/ldap.pem
TLSCertificateKeyFile   /etc/ssl/openldap/ldap.pem
#TLSCACertificatePath   /etc/ssl/openldap/
#TLSCACertificateFile    /etc/ssl/cacert.pem
TLSCACertificateFile    /etc/ssl/openldap/ldap.pem
#TLSVerifyClient never # ([never]|allow|try|demand)

# ===== ACLs - Lista de Controle de Acesso =====
# Usuários autenticados podem trocar suas senhas
access to attrs=sambaLMPassword,sambaNTPassword,userPassword,sambaPasswordHistory,sambaPwdLastSet
        by self write
        by anonymous auth
        by * none
# Todos outros atributos são lidos por todos
access to *
        by * read

# ===== Estrutura da Base =====

database        ldbm
suffix          ""
rootdn          "cn=,"
# Senha criptografada. Deve ser gerada através do comando abaixo:
#
#      [root@jarbelix ~]# slappasswd -h {SSHA} -s 
#      {SSHA}7eLKstWsAMLJ9D03vHS9NOtVzjyiCv4+
#
# A geração automática dessa senha não foi possível de ser preparada automaticamente
# Substitua os XXXXXXXXXX pelo resultado do comando acima
rootpw          {SSHA}XXXXXXXXXX

# O diretório da base de dados que DEVE existir antes de rodar o slapd e DEVE
# somente ser acessível às ferramentas slapd. Modo 700 é recomendado.
directory       /var/lib/ldap

# ===== Ajustes para melhorar performance =====
# Lastmod off
lastmod off

# ===== Habilita a geracao de log's =====
# Quando em producao colocar 0 se nao precisar de log
loglevel 256

# ===== Estruturas de Índices =====
index   objectClass,uidNumber,gidNumber                 eq
index   cn,sn,uid,displayName                           pres,sub,eq
index   memberUID,mail,givenname                        eq,subinitial
index   sambaSID,sambaPrimaryGroupSID,sambaDomainName   eq

#===================================
# Implementar o "BDC" do LDAP
#
# No ldap: PDC=MASTER e BDC=SLAVEs
#===================================

# Configuração para Replicar Ldap
# Se este servidor é um Slave descomente as linhas abaixo
#========================================================
#updatedn        "cn=,"
#updateref       "ldaps://"

# Se este servidor é um Master desomente as linhas abaixo
# e coloque os IP corretos dos slaves
#========================================================
# Diretório onde estão os LOGs das replicas
#replogfile /var/log/ldap/replog

#replica uri=ldaps://ip-do-ldap-slave-1:636
#        binddn="cn=,"
#        bindmethod=simple
#        credentials=""
#
#replica uri=ldaps://ip-do-ldap-slave-2:636
#        binddn="cn=,"
#        bindmethod=simple
#        credentials=""
#
# ...
#
#replica uri=ldaps://ip-do-ldap-slave-n:636
#        binddn="cn=,"
#        bindmethod=simple
#        credentials=""

5.1.1) Protegendo o LDAP

É melhor que os dados do LDAP que circulem pela rede sejam criptografados para impedir que sniffers tenham acesso a eles.

Se formos utilizar TLS com certificados auto-assinados apenas três campos no arquivo /etc/openldap/slapd.conf são responsáveis pela certificação: TLSCACertificateFile, TLSCertificateFile e TLSCertificateKeyFile. Note que nesse arquivo temos o os três campos apontam para o mesmo arquivo /etc/ssl/openldap/ldap.pem que foi gerado automaticamente quando instalamos o pacote openldap-servers.

Vamos agora gerar nosso próprio certificado através do comando abaixo:

[root@jarbelix ~]# /usr/share/openldap/gencert.sh
----------------------------------------------------------------------
Create self-signed test certificate

Christian Zoffoli 
Version 0.2 - 20010501
______________________________________________________________________

Will create ldap.pem in /root

Generating Certificate
______________________________________________________________________

Generating a 1024 bit RSA private key
..........++++++
.++++++
writing new private key to 'ldap.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
1. Country Name             (2 letter code) [US]:BR
2. State or Province Name   (full name)     []:Autoridade Certificadora Regional Goias
3. Locality Name            (eg, city)      []:Goiania
4. Organization Name        (eg, company)   [LDAP Server]:Dataprev Regional Goias
5. Organizational Unit Name (eg, section)   [For testing purposes only]:Regional Goias
6. Common Name              (eg, CA name)   [jarbelix.prevnet]:  <=== DEVE ser o nome do HOST (# uname -n)
7. Email Address            (eg, name@FQDN) []:jarbas.junior@gmail.com
Certificate creation done!

Depois de gerado nosso certificado digital devemos mover o arquivo ldap.pem para o local informado em nosso /etc/openldap/slapd.conf, ou seja,

[root@jarbelix ~]# mv ldap.pem /etc/ssl/openldap/ldap.pem

5.1.2) Testando o serviço LDAP

Para testar nosso ldap vamos primeiramente startar nosso servidor.
[root@jarbelix ~]# service ldap start
Iniciando slapd (ldap + ldaps):                                 [  OK  ]

Depois de startado o servidor ldap, você pode testá-lo com a seguinte consulta:

[root@jarbelix ldap]# ldapsearch -x -b '' -s base "(ObjectClass=*)"
# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (ObjectClass=*)
# requesting: ALL
#

#
dn:
objectClass: top
objectClass: OpenLDAProotDSE

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Se você ver algo semelhante ao mostrado acima, ldap está instalado e funcionando corretamente. Se não, então volte e tenha certeza que você não cometeu algum erro.

Bom, agora temos o servidor LDAP rodando mas não temos nada cadastrado (ainda smile ). Para termos certeza que o serviço ldap estará sendo iniciado a cada boot, faça:

[root@jarbelix ~]# chkconfig ldap on

5.2) Configurando o Linux para usar o LDAP

ALERT! Atenção: Tanto o servidor, quanto outras máquinas Linux que irão utilizar o LDAP devem ter seus arquivos de configuração principal, NSS e PAM conforme abaixo.

Porém no Mandriva existe um utilitário drakauth de linha de comando que facilita (e muito) a configuração das estações Linux que irão se autenticar no servidor LDAP, pois apenas é necessário informar que se deseja autenticar via LDAP, o IP do servidor LDAP e o Sufixo Ldap.

As configurações abaixo dizem respeito aos clientes que irão utilizar o servidor ldap para se autenticarem.

ALERT! Atenção: No servidor devemos criar o arquivo /etc/ldap.secret contendo a Password Root DN como texto puro, ou seja, apenas uma linha com "" - sem as aspas é claro!.

Isso facilitará o administrador do LDAP via linha de comando, pois não será necessário informar a senha toda vez que se fizer alguma alteração na base LDAP. Mas tome cuidado com esse arquivo, pois ninguém que estiver logado no servidor poderá lê-lo. Por isso faça um

# chmod 600 /etc/ldap.secret.

5.2.1) Configuração principal

Embora esse servidor já esteja configurado, é necessário configurar a parte cliente dele para que acesse o próprio servidor ldap. Isso é feito no arquivo /etc/ldap.conf conforme abaixo.


# O acesso ao seu servidor LDAP tem que ser resolvido sem usar LDAP.
# De preferência coloque o IP ou tenha certeza que o DNS resolve o nome.
host 127.0.0.1

# O nome distinto da base de procura.
base 

# A identificacao do root do Ldap, ou seja o "Root Password DN"
# A senha deve ser armazenada no arquivo /etc/ldap.secret (mode 600)
rootbinddn cn=,

# Contexto para pesquisa no LDAP (RFC2307bis)
# Nos usaremos ?sub (e nao o default ?one) porque separamos
# sambaAccounts no ou=Computer,
# e usuarios em ou=Usuarios,
nss_base_passwd         ?sub
nss_base_shadow         ?sub
nss_base_group          ou=Grupos,?one

# Opcoes de seguranca
ssl no
pam_password crypt


5.2.2) Configuração do NSS

Necessitamos agora configurar o NSS (Name Service Swith) para usar LDAP através do arquivo /etc/nsswitch.conf conforme abaixo:

passwd:     files ldap
shadow:     files ldap
group:      files ldap

hosts:      files nisplus nis dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus


5.2.3) Configuração do PAM

O PAM (Plugabe Autentication Module) para usar LDAP tem sua configuração através do arquivo /etc/pam.d/system-auth conforme abaixo:

# Módulo "pam_ldap.so" para conecções pelo ldap
# Isso não afeta se os usuários existem localmente em /etc/passwd
#%PAM-1.0

auth        required      pam_env.so
auth        sufficient    pam_succeed_if.so use_uid user ingroup wheel
auth        sufficient    pam_unix.so likeauth nullok
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     sufficient    pam_unix.so
# Usar o ldap antes de arquivos locais
account     sufficient    pam_ldap.so use_first_pass
account     required      pam_deny.so

password    required      pam_cracklib.so retry=3 minlen=2  dcredit=0  ucredit=0
password    sufficient    pam_unix.so nullok use_authtok md5 shadow
# Aceitar o ldap para checar usuário/senha
password    sufficient    pam_ldap.so
password    required      pam_deny.so

# Criar diretório local no momento em que o usuário se loga no Desktop
session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     required      pam_limits.so
session     required      pam_unix.so


5.2.4) Testando tudo até agora

O Teste pode ser feito com a ferramenta getent da seguinte forma:

[root@jarbelix ~]# getent passwd

[root@jarbelix ~]# getent shadow

[root@jarbelix ~]# getent group

Se você ver o conteúdo igual aos arquivos locais (/etc/passwd, /etc/shadow, /etc/group) é porque não há nenhuma informação extra no ldap, ou seja, o ldap não possui a base de dados migrada.

5.3) Configurando o SERVIDOR samba

A configuração do samba para funcionar integrado com o ldap é talvez a parte mais trabalhosa de ser feita, pois envolve algumas alterações profundas no /etc/samba/smb.conf. Sem mistérios vamos ao seu conteúdo:

# Parâmetros Globais
[global]

   # Dominio, Nome e Descricao
        workgroup = 
        netbios name = 
        server string = 

   # Disponibilizar impressora no Linux para Windows
        printcap name = cups
        load printers = yes
        printing = cups
        # printcap cache time, so samba will automatically load new cups printers
        printcap cache time = 60

   # Nao mostrar no servidor o Wizard "Adicionar Impressora"
        show add printer wizard = No

   # Quais interfaces de rede utilizar
        interfaces = lo, eth0
        bind interfaces only = Yes

   # Nivel de Mensagens
        log level = 1
        log file = /var/log/samba/%m.log
        max log size = 0
        debug level = 1
        syslog = 0

   # Atuar como um PDC
        security = user
        domain logons = yes
        preferred master = yes
        domain master = yes
        os level = 65

   # Tratamento das senhas
        encrypt passwords = yes

   # Equivalencia de usuarios Windows X Linux
        username map = /etc/samba/smbusers

   # Evitar o perfil ambulante do Windows NT/XP
        logon path =
        logon drive =
        logon home =

   # Script de logon em rede (deve ficar no compartilhamento netlogon - em formato DOS)
        logon script = .BAT

   # Configuracoes para o LDAP
        passdb backend = ldapsam:ldaps://127.0.0.1
        ldap passwd sync = yes
        ldap delete dn = Yes
        ldap admin dn = cn=,
        ldap suffix = 
        ldap machine suffix = ou=Computadores
        ldap user suffix = ou=Usuarios
        ldap group suffix = ou=Grupos
        ldap idmap suffix = sambaDomainName=
        idmap backend = ldap:ldaps://127.0.0.1
        idmap uid = 10000-20000
        idmap gid = 10000-20000
   # Permitir que usuarios do grupo "Administradores do Dominio" possam ingressar maquinas
   # WinXP/Win2000 ao dominio samba
   # to the domain
        enable privileges = yes

   # Scrips utilizados para Gerenciar Usuários da M$
   # adiconar/remover Usuarios
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        delete user script = /usr/sbin/smbldap-userdel "%u"
   # adiconar/remover Grupos
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        delete group script = /usr/sbin/smbldap-groupdel "%g"
   # Scripts para adiconar/remover Usuarios nos Grupos
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
   # Script para definir o grupo primario do usuario
        set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
   # Script par adicionar maquina Win NT/XP ingressar no Dominio
        add machine script = /usr/sbin/smbldap-useradd -w "%u"

   # Otimizacoes recomendadas em
        smb ports = 445 139
        name resolve order = wins bcast hosts
        utmp = Yes
        time server = Yes
        template shell = /bin/false
        winbind use default domain = no
        map acl inherit = Yes
        strict locking = Yes

   # Como o cliente ira' se comunicar com o servidor
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

   # Servidor Wins da Rede
   # Quando já tiver um servidor Wins na rede
   # descomente a linha abaixo e acerte o IP do Wins
#      wins server = 10.0.134.223
   # Quando ainda não tiver um servidor Wins na rede
   # descomente a linha abaixo
       wins support = Yes
   

   # Ativar a internacionalizacao: permitir caracteres acentuados pelo Windows
        dos charset = CP850
        unix charset = ISO8859-1

   # Nao tentar fazer um lock nestes arquivos
        veto files = /*.eml/*.nws/*.{*}/
        veto oplock files = /*.doc/*.xls/*.mdb/

   # Tratar os arquivos que comecam com "." como ocultos para maquinas Windows
        hidedotfiles = yes

   # Simular a Lixeira do Windows
        recycle:repository = .lixeira
        recycle:keeptree = True
        recycle:touch = True
        recycle:versions = True
        recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.$$$
        recycle:excludedir = /tmp|/temp|/trash
        recycle:noversions = .doc|.xls|.ppt|.dbf|.nsx|.idx|.dbt
        recycle:maxsize = 0

#=============================
#===== Compartilhamentos =====
#=============================

[netlogon]
        comment = Servico de Logon em Rede [ .BAT ]
        path = /home/samba/netlogon
        browseable = Yes
        read only = Yes

[home]
        comment = Diretorio Pessoal de Cada Usuario [ U:\ ]
        path = /home/usr/%u
        browseable = no
        writeable = Yes
        create mask = 0600
        directory mask = 0700
#        vfs objects = recycle

[dados]
        comment = Sistemas e Dados de Usuarios [ F:\ ]
        path = /home/samba/dados
        writeable = Yes
        force create mode = 0660
        force directory mode = 02770
        vfs objects = recycle

[temp]
        comment = Dados Temporarios [ T:\ ]
        path = /home/samba/temp
        writeable = Yes
        force create mode = 0666
        force directory mode = 02777

[printers]
   comment = Spool de Impressao SMB
   path = /var/spool/samba
   browseable = No
   guest ok = Yes
   writeable = No
   printable = Yes
   create mode = 0700
   use client driver = yes

# This share is used for Windows NT-style point-and-print support.
# To be able to install drivers, you need to be either root, or listed
# in the printer admin parameter above. Note that you also need write access
# to the directory and share definition to be able to upload the drivers.
# For more information on this, please see the Printing Support Section of
# /usr/share/doc/samba-/docs/Samba-HOWTO-Collection.pdf
#
# A special case is using the CUPS Windows Postscript driver, which allows
# all features available via CUPS on the client, by publishing the ppd file
# and the cups driver by using the 'cupsaddsmb' tool. This requires the
# installation of the CUPS driver (http://www.cups.org/windows.php)
# on the server, but doesn't require you to use Windows at all :-).
[print$]
   path = /var/lib/samba/printers
   browseable = yes
   write list = @"Operadores de Impressao" root
   guest ok = yes
   inherit permissions = yes


Com o samba configurado, agora é hora de levantar o serviço smb.

Para certificarmos que não há nenhuma informação armazenada no samba devemos fazer:

[root@jarbelix ~]# rm -rf /etc/samba/secrets.tdb /var/log/samba/*

ALERT! Atenção: O samba agora necessita da senha definida no /etc/openldap/slapd.conf. Sem essa senha o samba fica indefinidamente tentando startar e não levanta. Esse procedimento deve ser realizado apenas uma única vez, pois a senha fica armazenada no arquivo /etc/samba/secrets.tdb.

O procedimento para definirmos a senha que o samba irá utilizar é:

[root@jarbelix ~]# smbpasswd -w 
Setting stored password for "cn=," in secrets.tdb

Agora sim podemos levantar o samba normalmente com:

root@jarbelix ~]# service smb start
Iniciando os serviços SMB:                                      [  OK  ]
Iniciando os serviços NMB:                                      [  OK  ]

Para certificarmos que o samba está rodando normalmente podemos checar através do seguinte comando:

[root@jarbelix ~]# smbclient -L 127.0.0.1 -U%
Domain=[] OS=[Unix] Server=[Samba 3.0.13]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      Servico de Logon em Rede [ .BAT ]
        dados           Disk      Sistemas e Dados de Usuarios [ F:\ ]
        temp            Disk      Dados Temporarios [ T:\ ]
        print$          Disk
        IPC$            IPC       IPC Service ()
        ADMIN$          IPC       IPC Service ()
        HP-LaserJet     Printer   HP LaserJet 4P
        HP-GALENO       Printer   HP DeskJet 680C

Domain=[] OS=[Unix] Server=[Samba 3.0.13]
        Server               Comment
        ---------            -------
                  

        Workgroup            Master
        ---------            -------
                  

ALERT! Atenção: Antes de prosseguirmos devemos preparar o terreno, isto é, criar os diretórios onde os mapeamentos do samba serão feitos. Como fazer isso?

[root@jarbelix ~]# mkdir -p /home/samba/dados /home/samba/netlogon /home/samba/temp
[root@jarbelix ~]# chmod 2770 /home/samba/dados/ /home/samba/temp/
[root@jarbelix ~]# chmod 750 /home/samba/netlogon/
[root@jarbelix ~]# chgrp 513 /home/samba/*

[root@jarbelix ~]# ll /home/samba/
total 12
drwxrws---  20 root Usuarios do Dominio 4096 Set  2 21:36 dados/
drwxr-x---   2 root Usuarios do Dominio 4096 Set  2 23:28 netlogon/
drwxrws---   2 root Usuarios do Dominio 4096 Set  2 23:51 temp/
[root@ServerLinux ~]#

Como o samba está atuando como um PDC devemos ter um SID utilizado pela Microsoft. Esse SID é o equivalente ao ID do Unix, porém deve ser único para cada domínio. Como podemos ver nosso SID? Simples. Digite o comando baixo:

[root@jarbelix ~]# net getlocalsid
[2005/07/19 16:03:14, 0] lib/smbldap.c:smbldap_search_suffix(1176)
  smbldap_search_suffix: Problem during the LDAP search:  (No such object)
SID for domain  is: S-1-5-21-2942727800-3465096550-1454047873

O erro mostrado acima é apenas informativo pois o ldap ainda está vazio. Isso será sanado quando criarmos as entidades do domínio dentro do LDAP.

6) Migrando os dados

Certamente a migração dos dados armazenados noutros formatos e/ou plataformas para o LDAP é o que dá mais trabalho. Isso porque normalmente não dispomos de todos os dados numa única máquina. Algumas vezes temos mesmo é uma "salada mista" onde até mesmo a troca de uma senha de usuário é uma tarefa árdua.

Bom, existem diversos scripts que nos auxiliam na tarefa de migração. Os mais conhecidos são:

  • samba-migration - muito referenciado em listas de discussão sobre ldap
  • smbldap-tools - IDEALX - mais recente e menos explorado (porém mais limpo)
  • outros

Vamos concentrar nossos esforços no IDEALX por apresentar melhores resultados para uma base LDAP casada com SAMBA.

6.1) Configurando os scripts IDEALX

Os scripts IDEALX são voltados para o gerenciamento do samba com autenticação pelo ldap, ou seja, uma mão na roda. O pacote é o smbldap-tools. Basicamente são dois arquivos: /etc/smbldap-tools/smbldap.conf e /etc/smbldap-tools/smbldap_bind.conf que devem ser alterados/configurados através da ferramenta abaixo:

[root@jarbelix ~]# /usr/share/doc/smbldap-tools-0.9.1/configure.pl

Uma série de informações devem ser fornecidas corretamente com o objetivo de se criar os arquivos acima corretamente. Para lhe poupar esse trabalho mostro abaixo os arquivos de configuração pre-configurados adequadamente:

Vamos então ao conteúdo do /etc/smbldap-tools/smbldap.conf


# Coloque aqui seu próprio SID
# para obter este número faça: net getlocalsid
SID="S-1-5-21-3605816189-1598215328-2250501690"

##############################################################################
#
# LDAP Configuration
#
##############################################################################

# Slave LDAP : para melhorar a performance
slaveLDAP="127.0.0.1"
slavePort="389"

# Master LDAP : necessario para operacoes de escrita
masterLDAP=""
masterPort="389"

# Usar TLS para LDAP
# Se "setado" para 1, esta opção irá usar start_tls para conecções
ldapTLS="0"

# How to verify the server's certificate (none, optional or require)
# see "man Net::LDAP" in start_tls section for more details
verify="require"

# CA certificate
# see "man Net::LDAP" in start_tls section for more details
cafile="/etc/smbldap-tools/ca.pem"

# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientcert="/etc/smbldap-tools/smbldap-tools.pem"

# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientkey="/etc/smbldap-tools/smbldap-tools.key"

# Sufixo LDAP
suffix=""

# Onde são armazenados os Usuarios
usersdn="ou=Usuarios,${suffix}"

# Onde estão armazenados os Computadores
computersdn="ou=Computadores,${suffix}"

# Onde estão armazenados os Grupos
groupsdn="ou=Grupos,${suffix}"

# Onde estão armazenados as entradas Idmap (usadas se o samba é um servidor membro do domínio)
idmapdn="ou=Idmap,${suffix}"

# Onde são armazenadas os próximos uidNumber e gidNumber disponíveis
sambaUnixIdPooldn="sambaDomainName=,${suffix}"

# Escopo default utilizado
scope="sub"

# Método de criptografação utilizado pelo Unix (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"

# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"

##############################################################################
#
# Unix Accounts Configuration
#
##############################################################################

# Login defs
# Default Login Shell
userLoginShell="/bin/bash"

# Home directory
userHome="/home/usr/%U"

# Gecos
userGecos="System User"

# Default User (POSIX and Samba) GID
defaultUserGid="513"

# Default Computer (Samba) GID
defaultComputerGid="515"

# Skel dir
skeletonDir="/etc/skel"

# Tempo de vida, em dias, das senhas dos usuários Windows.
# Comente a linha abaixo se não desejar expirar esta senha
# Cuidado com o valor do atributo sambaPwdMustChange
defaultMaxPasswordAge="99"

##############################################################################
#
# SAMBA Configuration
#
##############################################################################

# The UNC path to home drives location (%U username substitution)
# Ex: \\My-PDC-netbios-name\homes\%U
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
#userSmbHome="\\PDC-SRV\homes\%U"
userSmbHome=""

# The UNC path to profiles locations (%U username substitution)
# Ex: \\My-PDC-netbios-name\profiles\%U
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
#userProfile="\\PDC-SRV\profiles\%U"
userProfile=""

# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: H: for H:
userHomeDrive=""

# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# Ex: %U.cmd
# userScript="startup.cmd" # make sure script file is edited under dos
# deixe comentado para utilizar o script de logon do /etc/samba/smb.conf
#userScript=".BAT"


# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
mailDomain=""

##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################

# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"

# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"


e depois ao conteúdo do /etc/smbldap-tools/smbldap_bind.conf


############################
# Credential Configuration #
############################
# Nota: você pode especificar duas configuracoes diferentes se voce
# utiliza um ldap MASTER para escrita e outro ldap SLAVE para leitura
# Por default, iremos utilizar o mesmo DN
slaveDN="cn=,"
slavePw=""
masterDN="cn=,"
masterPw=""


6.2) Adicionando estrutura ao LDAP

A estrutura necessária para nosso LDAP é conseguida através do smbldap-populate.

Por default os usuários/grupos criados tem nomes em inglês como: Domain Admins, Print Operators. Mas como estamos no Brasil podemos alterar para o pt_BR através do script simplista que fiz.

#!/bin/bash
#
# Objetivo: trocar as informações do smbldap-populate do ingles para o portugues brasileiro
#
# Autor: Jarbas, 14-04-2005
# Licença: GPL :)

if [ $# -ne 1 ]; then
        echo "Sintaxe errada"
        echo "O correto eh $0 CAMINHO-COMPLETO-DO-smbldap-populate a ser traduzido"
        exit 1
fi

sed -e "s/Administrators/Administradores/g" \
-e "s/Domain Guest/Convidados do Dominio/g" \
-e "s/Domain Admins/Administradores do Dominio/g" \
-e "s/Domain Users/Usuarios do Dominio/g" \
-e "s/Domain Computers/Computadores do Dominio/g" \
-e "s/Print Operators/Operadores de Impressao/g" \
-e "s/Backup Operators/Operadores de Backup/g" \
-e "s/Account Operators/Operadores de Contas/g" \
-e "s/Replicators/Duplicadores/g" $1 > $1.pt_BR chmod +x $1.pt_BR echo "Arquivo $1 traduzido em $1.pt_BR"

Caso deseje ter os usuários/grupos em pt_BR Execute este script conforme abaixo:

[root@jarbelix ~]# type smbldap-populate
smbldap-populate is /usr/sbin/smbldap-populate

[root@jarbelix ~]# ./smbldap-populate-pt_BR.sh /usr/sbin/smbldap-populate
Arquivo /usr/sbin/smbldap-populate traduzido em /usr/sbin/smbldap-populate.pt_BR

Agora execute o /usr/sbin/smbldap-populate.pt_BR para criarmos a estrutura base do ldap+samba com a estrutura em português Brasileiro.

ALERT! Atenção:
  1. O parâmetro abaixo informado após o -a permitirá que você utilize outro usuário ao invés do root para ser o administrador do ldap.
  2. Algumas pessoas me relataram que não conseguiam concluir a instalação utilizando o Manager ou Admin como administrador.
  3. Creio que esse parâmetro irá resolver o problema. smile

[root@jarbelix ~]# /usr/sbin/smbldap-populate.pt_BR -a 
Populating LDAP directory for domain  (S-1-5-21-2942727800-3465096550-1454047873)
(using builtin directory structure)

adding new entry: 
adding new entry: ou=Usuarios,
adding new entry: ou=Grupos,
adding new entry: ou=Computadores,
adding new entry: ou=Idmap,
adding new entry: uid=,ou=Usuarios,
adding new entry: uid=nobody,ou=Usuarios,
adding new entry: cn=Administradores do Dominio,ou=Grupos,
adding new entry: cn=Usuarios do Dominio,ou=Grupos,
adding new entry: cn=Convidados do Dominios,ou=Grupos,
adding new entry: cn=Computadores do Dominio,ou=Grupos,
adding new entry: cn=Administradores,ou=Grupos,dc=go,
adding new entry: cn=Operadores de Contas,ou=Grupos,
adding new entry: cn=Operadores de Impressao,ou=Grupos,
adding new entry: cn=Operadores de Backup,ou=Grupos,
adding new entry: cn=Duplicadores,ou=Grupos,
adding new entry: sambaDomainName=,

Please provide a password for the domain :
Changing password for 
New password :
Retype new password :

ALERT! Atenção: A senha acima é a senha que será utilizada para ingressar máquinas no domínio.

Portanto NAO é a mesma senha do Password Root Ldap ().

Coloque uma outra para que o usuário possa ingressar máquinas no Domínio, quando o Windows XP/2k/2k3 solicitar o usuário/senha.

6.2.1) Gerando um DUMP da base LDAP

Um bom teste para verificar se está tudo funcionando até agora é gerar um dump da base de dados LDAP, ou seja, exportar todo o conteúdo previamente armazenado no LDAP+SAMBA através do comando abaixo:

[root@jarbelix ~]# ldapsearch -x -b "" "(ObjectClass=*)"
# extended LDIF
#
# LDAPv3
# base  with scope sub
# filter: (ObjectClass=*)
# requesting: ALL
#

dn: 
objectClass: dcObject
objectClass: organization

...
... (outras entrada foram omitidas)
...

# search result
search: 2
result: 0 Success

# numResponses: 18
# numEntries: 17

Através do utilitário slapcat do pacote openldap-servers que é muito utilizado para fazer um dump rápido da base ldap MASTER e exportar para um ldap SLAVE.

[root@lxgod001 ~]# slapcat > slapcat.ldbm.ldif
[root@lxgod001 ~]# ll slapcat.ldbm.ldif
-rw-r--r--  1 root root 1570213 Ago 15 10:42 slapcat.ldbm.ldif

Já o utilitário pdbedit que tem uma formato de saída mais humana:

[root@lxgod001 ~]# pdbedit -v -u d323209
Unix username:        d323209
NT username:          d323209
Account Flags:        [U          ]
User SID:             S-1-5-21-4134352437-1265944048-1494428847-4020
Primary Group SID:    S-1-5-21-4134352437-1265944048-1494428847-513
Full Name:            Jarbas Peixoto Júnior
Home Directory:
HomeDir Drive:
Logon Script:         PSGOD001.BAT
Profile Path:
Domain:               PREV-GO
Account desc:         JARBAO
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Tue, 19 Jan 2038 01:14:07 GMT
Kickoff time:         Tue, 19 Jan 2038 01:14:07 GMT
Password last set:    Thu, 11 Aug 2005 16:12:38 GMT
Password can change:  Tue, 09 Aug 2005 13:59:40 GMT
Password must change: Fri, 18 Nov 2005 17:12:38 GMT
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Outro teste interessante neste momento é a ferramenta getent da seguinte forma:

[root@jarbelix ~]# getent passwd
root:x:0:0:root:/root:/bin/bash
...
... (outros usuários foram omitidos)
...
:x:0:0:Netbios Domain Administrator:/home/usr/root:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false

Note que agora há dois usuários novos que foram cadastrados via ldap ( = e =nobody ). Note que estes usuários já existiam localmente, mas os últimos da lista foram cadastrados via smbldap-populate.

6.2.2) Criação e manutenção de usuários/grupos

O gerenciamento gráfico para manutenção de usuários/grupos pode ser realizada com o auxílio da ferramenta phpldapadmin (http://phpldapadmin.sourceforge.net/) que pode ser instalada no servidor ldap, mas isso não é o alvo desse tutorial (apesar de ser bem simples sua instalação).

Mas se tivermos uma grande quantidade de usuários/grupos a serem migrados essa ferramenta (phpldapadmin) irá requerer que nós migremos um-a-um, ou seja, um verdadeiro pesadelo para o administrador da rede. Para essas necessidades entram os scrips disponibibilizados pelo pacote smbldap-tools. Onde estão eles?

[root@jarbelix ~]# ls /usr/sbin/smbldap*
/usr/sbin/smbldap-groupadd*  /usr/sbin/smbldap-groupshow*  /usr/sbin/smbldap-populate.pt_BR*  /usr/sbin/smbldap-userinfo*
/usr/sbin/smbldap-groupdel*  /usr/sbin/smbldap-passwd*     /usr/sbin/smbldap-useradd*         /usr/sbin/smbldap-usermod*
/usr/sbin/smbldap-groupmod*  /usr/sbin/smbldap-populate*   /usr/sbin/smbldap-userdel*         /usr/sbin/smbldap-usershow*

Informações adicionais sobre estes scripts podem ser obtidas em http://www.idealx.com ou com o parâmetro --help de cada um deles. Ex.:

[root@jarbelix ~]# smbldap-passwd --help
(c) Jerome Tournier - IDEALX 2004 (http://www.idealx.com)- Licensed under the GPL
Usage: /usr/sbin/smbldap-passwd [username]
  -u             update only unix password (userPasswd)
  -?, --help     show this help message

6.2.2.1) Criando grupos

Suponha que tenhamos apenas dois grupos locais: DATAPREV e INSS. Como cadastrar estes grupos no LDAP? Simples:

[root@jarbelix ~]# smbldap-groupadd -a DATAPREV
[root@jarbelix ~]# smbldap-groupadd -a INSS

Para conferir os grupos criados:

[root@jarbelix ~]# getent group
root:x:0:
...
... (outros grupos foram omitidos)
...
Administradores do Dominio:x:512:
Usuarios do Dominio:x:513:linux,sambix
Convidados do Dominios:x:514:
Computadores do Dominio:x:515:
Administradores:x:544:
Operadores de Contas:x:548:
Operadores de Impressao:x:550:
Operadores de Backup:x:551:
Duplicadores:x:552:
DATAPREV:x:1000:
INSS:x:1001:

6.2.2.1) Criando usuários

ALERT! Atenção: Antes de prosseguirmos devemos preparar o terreno, isto é, criar o diretório onde os usuários terão seus HOME. Normalmente as distros colocam todos os usuários no /home. Eu acho melhor separar um diretório /usr dentro do /home para eles. Como fazer isso?

[root@jarbelix ~]# mkdir -p /home/usr

Os usuários são divididos em três categoria para o LDAP:

  • Linux - são os usuários que poderão logar no servidor linux através da console ou ssh - não é desejável que usuários Windows (Samba) estejam nesta categoria.
  • Samba - são os usuários que irão logar no Domínio administrado pelo Samba+Ldap. Praticamente todos os usuários estão nesta categoria.
  • Máquinas - são as máquinas que ingressaram no domínio, seja manualmente ou automaticamente através do Windows 2000 ou XP - é claro que pedindo o usuário e senha com permissões para ingressar (neste material o é o único capaz disso).

Para criarmos o usuário Linux linux:

[root@jarbelix ~]# smbldap-useradd -m -c "Teste Linux" linux
[root@jarbelix ~]# smbldap-passwd linux
Changing password for linux
New password :
Retype new password :

Para criarmos o usuário Samba sambix:

[root@jarbelix ~]# smbldap-useradd -a -m -c "Teste Samba" sambix
[root@jarbelix ~]# smbldap-passwd sambix
Changing password for sambix
New password :
Retype new password :

Para criarmos o usuário Máquina winlinux:

[root@jarbelix ~]# smbldap-useradd -w winlinux

Para conferir os usuários criados:

[root@jarbelix ~]# getent passwd
root:x:0:0:root:/root:/bin/bash
...
... (outros usuários foram omitidos)
...
:x:0:0:Netbios Domain Administrator:/home/usr/root:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false
linux:x:1000:513:Teste Linux:/home/usr/linux:/bin/bash
sambix:x:1001:513:Teste Samba:/home/usr/sambix:/bin/bash
winlinux$:x:1002:515:Computer:/dev/null:/bin/false

Note que os grupos dos usuários Linux e Samba (do LDAP) pertencem por default ao grupo 513 (Usuários do Domínio). A diferença é que somente o usuário Linux podem efetuar login no servidor. Isso também significa que usuários Linux podem acessar também o Samba via Windows normalmente.

7) Mapeamentos automáticos

Os Windows 9X/NT/XP/2K3 podem mapear algumas unidades de rede automaticamente após um login num Domínio Windows. O Samba implementa isso perfeitamente através do compartilhamento netlogon. Para funcionar basta que tenhamos no diretório /home/samba/netlogon o arquivo .BAT em formato DOS, isto é, com os caracteres de controle CR+LF utilizados pelo Windows.

Sem mistérios vamos ao seu conteúdo:


@echo off
rem Logon script Default - by Jarbas, 3501-2248 - Dataprev-GO

REM Coloque na linha abaixo o nome dado ao servidor
REM definido no smb.conf pelo parametro "netbios name"

set LOGONSERVER=\
echo ========================================================
echo Executando o script de login do Servidor %LOGONSERVER%
echo Por favor, aguarde...
echo =============================
echo ...

echo Efetuando os Mapeamentos F: U: e T:

if %OS%.==Windows_NT. goto WinNT

:Win95
:Win98
NET USE F: %LOGONSERVER%\DADOS
NET USE U: %LOGONSERVER%\HOME
NET USE T: %LOGONSERVER%\TEMP
goto Fim_Mapeamento

:WinNT
REM Se for um Windows_NT fazendo login devo desmapear o drive mapeado ao fazer logoff
NET USE F: %LOGONSERVER%\DADOS  /PERSISTENT:NO
NET USE U: %LOGONSERVER%\HOME   /PERSISTENT:NO
NET USE T: %LOGONSERVER%\TEMP   /PERSISTENT:NO

:Fim_Mapeamento
echo Atualizando a hora local com o Relogio do Servidor
NET TIME %LOGONSERVER% /SET /YES

:Fim_Geral
REM == FIM DO CODIGO ==


Para ter certeza que esse arquivo está no formato DOS instale o unix2dos:
[root@jarbelix ~]# urpmi unix2dos

    ftp://mirror/pub/linux/Mandrakelinux/devel/cooker/i586/media/contrib/unix2dos-2.2-5mdk.i586.rpm
instalando unix2dos-2.2-5mdk.i586.rpm a partir de /var/cache/urpmi/rpms
Preparando...                    #############################################
      1/1: unix2dos              #############################################

[root@jarbelix ~]# unix2dos /home/samba/netlogon/.BAT
unix2dos: converting file .BAT to DOS format ...

Agora é só fazer login no *Domínio * com as máquinas Windows e utilizar os drives F:, T: e U: do GNU/Linux tranquilamente.

ALERT! Atenção: Para aqueles que chegaram até aqui parabéns!

Em caso de algum erro neste tutorial sinta-se à vontade para me mandar as correções, ou mesmo fazê-las on-line, neste TWiki Site (http://psl-go.softwarelivre.org).

Quem sou eu? Clique em JarbasJunior!

8) Referências

Em Português Brasileiro:

  1. Samba 3.x - http://www.linuxrapido.org/modules.php?name=Sections&op=printpage&artid=86
  2. Muito sobre Samba - http://www.zago.eti.br/samba/A-menu-samba.html
  3. Lixeira no Samba - http://www.zago.eti.br/samba/lixeira.txt
  4. Howto de Samba - http://br.tldp.org/projetos/howto/arquivos/html/Samba-HOWTO/Samba-HOWTO.pt_BR.html
  5. LDAP - Dicas, listas, materiais em português Brasileiro - http://www.ldap.org.br
    1. Samba+Ldap+Squid - http://www.ldap.org.br/modules/ldap/files/files/Samba-Ldap-Squid.pdf
  6. Dicas de operação e manutenção de um servidor OpenLDAP - http://www.dicas-l.unicamp.br/dicas-l/20050831.php
  7. Dicas SAMBA, Atributos extendidos - http://www.dicas-l.unicamp.br/dicas-l/20050901.php
  8. DONE Manual traduzido do smbldap-tools - http://www.servtec.xq.com.br/Arquivos/IDEALX/smbldap-tools.pt_br.html
  9. DONE Ótima Monografia sobre LDAP - http://www.ldap.liceu.com.br/index.html
  10. NEW Instalação e configuração de um Servidor Linux com File & Print Server Samba e Domain Controller - http://www.softwarelivre.citiap.gov.pt/Projectos/Infra-estrutura/folder.2004-07-23.3835814063/samba_dc

Em Inglês técnico:

  1. Ldap na Fonte Original - http://www.openldap.org/doc/admin23/index.html
  2. Samba na Fonte Original - http://us1.samba.org/samba/docs/man/Samba-Guide/
  3. Ótimo tutorial sobre Idealx - http://samba.idealx.org/smbldap-howto.en.html
  4. Criptografando o LDAP - http://www.openldap.org/pub/ksoper/OpenLDAP_TLS_howto.html
  5. Gurus do LDAP - http://ldapguru.com/
  6. Servidor de Domínio com Samba 3 - http://mandriva.vmlinuz.ca/bin/view/Main/SambaThreeDomainController
  7. NEW Samba-3: Windows file and directory ACLs - http://searchopensource.techtarget.com/tip/1,289483,sid39_gci1080966,00.html

Quem usa Debian pode/deve complementar com:

  1. Dicas de LDAP+Samba - http://www.leoserra.uaivip.com.br/leonix/documentacao/
  2. Linux LDAP authentication - http://enterprise.linux.com/article.pl?sid=05/09/15/1930256
  3. LDAPAuthentication - http://wiki.debian.org/?LDAPAuthentication
  4. LDAP + Samba - http://homex.subnet.at/~max/ldap/#sarge_base-install
  5. LDAP + Samba - http://wiki.osuosl.org/display/LNX/Openldap+and+Debian+Stable
  6. Authenticating Linux Clients to Windows Server 2003 - http://ubuntuforums.org/showthread.php?t=63303&highlight=ldap
  7. Using LDAP for single authentication - http://www.fatofthelan.com/articles/articles.php?pid=24
  8. NEW Linux LDAP authentication - http://enterprise.linux.com/article.pl?sid=05/09/15/1930256&tid=129
  9. NEW Advanced Linux LDAP authentication - http://enterprise.linux.com/enterprise/05/10/18/1732231.shtml
  10. NEW Debian Samba 3.0.14a with ldap, recyle + little SETUP for samba + Ldap - http://www.archivum.info/linux.samba/2005-07/msg00026.html
  11. NEW Configuração Simples Samba+LDAP - http://www.vivaolinux.com.br/artigos/impressora.php?codigo=4195

Interfaces Gráficas para Gerenciamento do LDAP

  1. NEW LdapAdmin (Instalável num RWindows) - http://ldapadmin.sourceforge.net/
  2. NEW LdapManager (Instalável num RWindows) - http://www.ldapmanager.org/page.php?6
  3. NEW SIGATI - http://sigati.codigolivre.org.br/
  4. NEW phpLDAPadmin - http://phpldapadmin.sourceforge.net/
  5. NEW Softerra LDAP Browser - http://www.ldapbrowser.com/
  6. NEW JXplorer - Java LDAP Browser- http://jexplorer.org/

Topic revision: r38 - 14 Feb 2012 - 02:25:41 - MarioSilva?
Get Firefox!

eXTReMe Tracker



Create personal sidebar

Mycose.org

 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki-SL? Send feedback