Faz um tempo que estou com este post guardado, e agora resolvi colocar aqui pra esclarecer melhor as dúvidas sobre a integração do Samba com o LDAP. Não porque seja difícil e trabalhoso, mas sim por falta de organização da minha parte =D.
Um dos principais problemas que os administradores de rede (Linux) enfretam, é ter que gerenciar todas as informações (login e password) relativas a usuários de uma maneira descentralizada, por exemplo: um novo usuário chega na sua empresa e então começa a peregrinação dos admininstradores, tendo que percorrer todos os serviços(mail, proxy, domínio,...) que serão alocados para este usuário e criar contas separadamente para cada serviço.
Derivando do X.500, o LDAP (Lightweight Directory Access Protocol) surge como uma alternativa para o problema citado no exemplo acima. Existem diversas aplicações para o LDAP, dentre as mais conhecidas estão o OpenLDAP e o Active Directory.
Criei um cenário, que está exemplificado na figura abaixo:
Neste cenário utilizei um servidor Debian lenny, com o OpenLDAP instalado, além do phpLDAPadmin, que é uma interface WEB de gerenciamento para a base LDAP. No lado cliente utilizei um Windows 2000 professional, que irá acessar os compartilhamentos concedidos pelo Samba.
Os pacotes instalados (via apt-get) no servidor foram:
- slapd
- lpad-util
- libdb4.3
- libdb4.3-dev
- libdb4.3-util
- phpldapadmin
- samba
- smbldap-tools
- smbclient
- smbfs
Após a instalação, edite o arquivo /etc/ldap/slapd.confda sequinte maneira:
#Arquivos Schema
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema #obtido junto ao tarball do samba
#Parâmetros de log
loglevel 0
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_bdb
#Parâmetros do Banco de Dados
database bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
#Raiz da Arvore
suffix "dc=empresa,dc=com"
#Administrador do domínio
rootdn "cn=administrador,dc=empresa,dc=com"
rootpw "senha123"
Após a configuração do slapd.conf vamos criar os arquivos ldifs, que é um modelo de arquivo para a inserção de dados na árvore de diretório. Neste exemplo iremos criar 3 arquivos:
- Domínio
- Equipes
- Usuários
- dominio.ldif:
dn: dc=empresa,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: empresa
o: empresa
- equipe.ldif:
dn: ou=atendimento,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: atendimento
dn: ou=redes,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: redes
dn: ou=seguranca,dc=empresa,dc=empresa
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: seguranca
dn: ou=bd,dc=empresa,dc=com
objectClass: top
objectClass: organizationalunit
objectClass: dcObject
dc: empresa
ou: bd
- usuarios.ldif:
dn: uid=joao,ou=atendimento,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: joao
sn: Carneiro
mail: joao@empresa.com
telephonenumber: 3157-4403
uid: joao
userPassword: senha123
dn: uid=andre,ou=redes,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: andre
sn: Silva
mail: andre@empresa.com
telephonenumber: 3467-9251
uid: andre
userPassword: senha123
dn: uid=maria,ou=seguranca,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: maria
sn: Villas
mail: maria@empresa.com
telephonenumber: 3512-0245
uid: maria
userPassword: senha123
dn: uid=marcos,ou=bd,dc=empresa,dc=com
objectClass: top
objectClass: person
objectClass: inetorgperson
cn: marcos
sn: Nobrega
mail: marcos@empresa.com
telephonenumber: 3234-7640
uid: marcos
userPassword: senha123
Após criar os arquivos, o próximo passo é adicionar a base LDAP. Adicione os arquivos com os seguintes comandos:
# ldapadd -f dominio.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
# ldapadd -f equipes.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
#ldapadd -f usuarios.ldif -x -D cn=administrador,dc=suporte,dc=gti -W
obs: Parâmentros
- -f : indica qual arquivo será incluído no diretório
- -x : informa que irá utilizar autenticação simples
- -D : informa o dn
- -W : invoca um prompt pedindo a digitação da senha
Para visualizar a árvore criada, utilize o phpldapadmin. Para isso digite: http://ipdoservidorldap/phpldapadmin .
O Próximo passo é configurar o samba, para integrar-se ao LDAP. Edite o arquivo smb.conf, e deixe como abaixo:
[global]
workgroup = ldap
security = user
encrypt passwords = yes
#Configuração para a integração com o LDAP
ldap admin dn="cn=administrador,dc=empresa,dc=com"
passdb backend = ldapsam:ldap://127.0.0.1/
ldap suffix = "dc=suporte,dc=gti"
ldap ssl = off
[compart]
comment = Compartilhamento na máquina ldap/samba
writeable = yes
path = /arquivos
public = yes
browseable = yes
Feito isso, devemos configurar o cliente Windows seguindo os passos abaixo:
- Colocar a máquina Windows 2000 no mesmo grupo de trabalho do samba (variável workgroup)
- Criar os usuários no servidor debian(comando adduser).
Obs: este passo só será necessário porque o samba necessita de contas criadas no servidor.
- Remova o arquivo do samba “secrets.tdb”
- Digite o comando:
# smbpasswd -w (senha do admin-ldap)
- Coloque os usuário criados no samba (passo anterior) com o comando
# smbpasswd -a usuario (a partir deste momento os usuários serão inseridos no LDAP)
- Reinicie o samba:
# /etc/init.d/samba restart
- Na máquina windows faça:
iniciar(botao direito) → explorar → meus locais de rede → computadores próximos a mim → escolha o servidor samba.
- Informe um usuário/senha criado anteriormente no servidor samba.
Obs: Configure as permissões para os usuários acessarem os compartilhamentos criados.
4 comentários:
Muito bom artigo cara. Será que voce pode me ajudar com um problema que estou tendo:
Aqui na rede da empresa tenho um servidor PDC Samba + LDAP rodando no Mandriva 2006. Acontece que estou configurando um servidor de impressão em outra máquina, (Debian 4) para fazer controle das impressões através do software Curupira usado pela Caixa Economica Federal., mas preciso integrar o Samba do servidor de impressão com a autenticação do meu PDC para saber extamente os usuários que estão enviando trabalhos.
Opa marcelo.... primeiramente você tem que encontrar(ou construir) o arquivo "schema" pro curupira...(com certeza alguém já fez) e depois configurar o curupira pra utilizar a base como autenticação... não conheço o curupira, mas creio que existe algum arquivo de configuração onde você aponte a base LDAP
E aí Leandro, beleza?
Seguinte cara, segui seu artigo até a parte em que termino de configurar o samba e crio as contas dos usuários no servidor e tal. Bom, após criar estas contas, como trabalho as permissões de diretórios através do LDAP, por exemplo, tenho vários departamentos, e estes departamentos não acessam uns aos outros, porém, há usuários que poderão acessar estas pastas.Não sei se estou entendendo bem, mas estou com esta dúvida...se puder me ajudar...
Leandro- vc teria como fazer outro tutorial para a nova versão do ldap a 2.4.24, porque essa nova versão não tem o arquivo sldap.conf
Postar um comentário