UTILIZE A PESQUISA!

Samba com LDAP

1 - Instalando Samba com LDAP

  • O objetivo deste artigo é explicar o processo de instalação do servidor Samba atuando como PDC e utilizando o OpenLdap como backend (banco de dados).

2 - Contexto da instalação:

Este é o contexto utilizado neste documento.

  • Debian 5.0 - Lenny
  • Linguagem: pt_br
  • Endereço do servidor remoto: 10.1.0.17
  • Principais pacotes a serem instalados:
    • slapd
    • ldap-utils
    • phpldapadmin
    • samba
    • smbldap-tools
    • libnss-ldap

3 - Configurar o debconf

A instalação inicial do debconf é necessária para que as mesmas perguntas destes documento sejam feitas quando a instalação for realizada.

# dpkg-reconfigure debconf

Escolher prioridade de perguntas "baixa".

4 - Servidor LDAP

Instalação do pacote do servidor LDAP:

# aptitude install slapd ldap-utils
  • Omitir a configuração do servidor LDAP? Não
  • Nome do domínio DNS: debian-go.org
  • Nome da organização: debian-go
  • Senha do admin: segredo
  • "Backend" de base de dados a ser usado: BDB
  • Você deseja que sua base de dados seja removida quando o slapd for expurgado? Não
  • Mover base de dados antiga? Sim
  • Permitir Protocolo LDAP v2? Não

Confira se as configurações respondidas via debconf estão de acordo com o arquivo de configuração:

# vi /etc/ldap/slapd.conf

Reinicialize o servidor:

# /etc/init.d/slapd restart

Verifique os dados iniciais disponíveis no servidor LDAP através do comando slapcat:

# slapcat
dn: dc=debian-go,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: debian-go
dc: debian-go
structuralObjectClass: organization
entryUUID: ab548b92-0361-102d-9ca7-a5cb93af3e92
creatorsName:
modifiersName:
createTimestamp: 20080821001304Z
modifyTimestamp: 20080821001304Z
entryCSN: 20080821001304Z#000000#00#000000

dn: cn=admin,dc=debian-go,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fUU1UXFQZ09zZFQ0YmM=
structuralObjectClass: organizationalRole
entryUUID: ab555aea-0361-102d-9ca8-a5cb93af3e92
creatorsName:
modifiersName:
createTimestamp: 20080821001304Z
modifyTimestamp: 20080821001304Z
entryCSN: 20080821001304Z#000001#00#000000

5 - Frontend PHPLdapadmin

O Phpldapadmin é um frontend que permite gerenciar o servidor LDAP através de uma interface Web.

6 - Instalação do PHPldapadmin

# aptitude install phpldapadmin apache2
  • tipo de autenticação: session
  • servidores web com quais será configurado automaticamente: apache2 (pelo menos)
  • reiniciar o servidor web: sim

7 - Conferindo a instalação do phpldapadmin

Utilizando um navegador web, aponte para o endereço:

http://10.1.0.17/phpldapadmin

E efetue o logon utilizando o usuário:

cn=admin,cn=debian-go,cn=org

Utilize a senha fornecida na instalação do servidor LDAP: "segredo".

8 - Instalação do servidor SAMBA

# aptitude install samba

  • Domínio: debian-go.org
  • Usar senhas criptografadas? Sim
  • Modificar smb.conf para usar configurações WINS fornecidas via DHCP? Não
  • Como você deseja que o Samba seja executado? daemons
  • Gerar a base de dados para senhas /var/lib/samba/samba.tdb? Não

9 - Configurando o LDAP para dar suporte ao Samba

# aptitude install samba-doc

# cd /usr/share/doc/samba-doc/examples/LDAP/
# cp samba.schema.gz /etc/ldap/schema/
# cd /etc/ldap/schema

# gunzip samba.schema.gz

# vi /etc/ldap/slapd.conf

...

include /etc/ldap/schema/samba.schema
...

access to attrs=userPassword,shadowLastChange,sambaNTPassword,
sambaLMPassword by dn="cn=admin,dc=debian-go,dc=org" write

As últimas linhas fazem com que o LDAP tenha suporte ao schema dos objetos LDAP do Samba e o usuário admin ter acesso a escrita aos atributos userPassword, shadowLastChange, sambaNTPassword e sambaLMPassword.

/etc/init.d/slapd restart

10 - Configurando o Samba

# vi /etc/samba/smb.conf
security = user
domain logons = yes
# passdb backend = tdbsam
# invalid users = root

...

# nao utilizar as restrições impostas pelo PAM

obey pam restrictions = 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=debian-go,dc=org
ldap suffix = dc=debian-go,dc=org
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/sbin/smbldap-useradd -m "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u"
"%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x
"%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g"
"%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"

11 - Geração da senha de acesso do samba ao LDAP

   # rm /var/lib/samba/secrets.tdb
# smbpasswd -w segredo
# net getlocalsid

SID for domain LAB11 is: S-1-5-21-739826692-572011436-1394361479

O primeiro comando remove o arquivo secrets.tdb, que contém informações de senha. A remoção deste é necessária para um nova instalação do Samba integrado ao LDAP. O segundo comando insere a senha do usuário admin do ldap no arquivo /var/lib/samba/secrets.tdb. O último comando fornece um identificador para a rede Windows, este será necessário para o próximo passo.

12 - Configuração do smbldap-tools

# aptitude install smbldap-tools
# vi /etc/smbldap-tools/smbldap_bind.conf

slaveDN="cn=admin,dc=debian-go,dc=org"
slavePw="segredo"
masterDN="cn=admin,dc=debian-go,dc=org"
masterPw="segredo"


# vi /etc/smbldap-tools/smbldap.conf

# Esta primeira linha você deve especificar o SID da rede,
#para isso use o comando: net getlocalsid
SID="S-1-5-21-739826692-572011436-1394361479"
# Especifique o workgroup do samba
sambaDomain="debian-go.org"
# 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=debian-go,dc=org"
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Computadores,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="cn=NextFreeUnixId,${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="\lab17\%U"
userProfile="\lab17\%U"
userHomeDrive="H:"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

13 - Popular o LDAP

#smbldap-populate

Este comando acima irá popular a base de dados ldap com objetos necessários para a administração do smbldap-tools. Verifique no phpldapadmin os objetos ldap criados, especialmente note os grupos e usuários criados.

14 - Instalação do libnss-ldap

#  aptitude install libnss-ldap

  • Identificador Uniforme de Recursos do servidor LDAP: ldap://127.0.0.1
  • Nome distitnto da base de pesquisa: dc=debian-go,dc=org
  • Versão LDAP a usar: 3
  • A base de dados LDAP requer login: Sim
  • Privlegios especiais LDAP para o root? Sim
  • Permitir a leitura/escrita no ficheiro de configuração apenas para o dono? Não
  • Conta LDAP para o root: cn=admin,dc=debian-go,dc=org
  • Password da conta root do LDAP: segredo
  • Utilizador sem privilegios da base de dados: cn=admin,dc=debian-go,dc=org
  • Password da conta para fazer login na base de dados: segredo

15 - Configuração do libnss

# vi /etc/nsswitch.conf
#passwd: compat
passwd: files ldap
#group: compat
group: files ldap

16 - Inclusão de usuário para testes

# vi /etc/nextuid.ldif
dn: cn=NextFreeUnixId,dc=debian-go,dc=org
objectClass: inetOrgPerson
objectClass: sambaUnixIdPool
uidNumber: 10000
gidNumber: 10000
cn: NextFreeUnixId
sn: NextFreeUnixId
# ldapadd -x -D cn=admin,dc=debian-go,dc=org -W -f nextuid.ldif
# smbldap-useradd teste

# smbldap-usershow teste
# smbldap-passwd teste

# smbpasswd -a teste
# smbldap-usershow teste

# mkdir /home/teste

Note a diferença entre os dois comandos smbldap-usershow acima.

17 - Inclusão do usuário root

# smbldap-useradd root

# smbldap-usershow root
# smbldap-passwd root


# smbpasswd -a root

# smbldap-usershow root

18 - Teste com cliente Windows

  • Entrar no Windows como administrador
  • Mouse botão-direito no Meu Computador
  • Aba "Nome do computador"
  • Clicar em mudar
  • Botão renomear o computador
  • Selecionar a opção domínio;
  • Alterar o domínio desejado (debian-go.org)

19 - Referências:

2 comentários:

  1. Bom dia,

    Apenas para agradece pelo grande tutorial. Precisei muito dele e foi muito util.

    Att

    Anderson

    ResponderExcluir
  2. Tutorial Perfeito!!!!
    Muito obrigado, ajudou muito.

    ResponderExcluir