Ldapsearch e Zimbra

Voltei!

Estava aprendendo a fazer buscas com ldapsearch no Zimbra, fiquei empolgado e resolvi compartilhar. São dicas simples mas que podem ajudar, não somente no Zimbra mas pra qualquer um que esteja querendo fazer buscas com Ldap.

Mas como já estamos falando de Zimbra par começar vamos dar dicas de como fazer consultas em seu diretório. A primeira coisa que você precisa saber é qual o seu servidor que está com o OpenLdap e a senha do root desse, como você descobre ?

Primeiro logue-se como usuário zimbra, e depois use o comando a baixo

# su zimbra

# zmlocalconfig -s zimbra_ldap_password ldap_master_url

Com isso em mãos vamos começar a brincar com o ldapsearch

Uma dica importante aqui é que o zimbra usa um “usuário” chamado config para o serviço de diretório e sempre é necessário desse para os comandos que iremos realizar.

A seguinte busca mostra tudo que está sobre a árvore do domínio exemplo.com

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br”

Isso vai gerar um monte de saída que não vai dar pra entender nada provavelmente, mas é somente o começo, vamos continuar filtrando, digamos então que você precisa dos dados da conta do “isaac” dentro desse domínio:

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br” “uid=isaac”

O campo uid, é a identificação do usuário e é único, ou seja, você não pode ter dois uids isaac no mesmo servidor, essa busca vai trazer todas as informações do uid isaac que estão armazenadas no servidor.

Vamos dizer então que você precisa de todas as informações do usuário isaac, e também do usuário filipe, como fazer? Fica um pouquinho mais complexo e temos que trabalhar com o operador “ou” fica assim:

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br” “(|(uid=isaac)(uid=filipe))”

Ou seja se o uid for isaac, ou filipe, me traga as informações deles.

Mas ainda tem informações demais e você só quer o campo “mail” que informa quais são os emails dessas pessoas e o status da conta:

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br” “(|(uid=isaac)(uid=filipe))” -s sub mail zimbraAccountStatus

Com “-s sub” seguido dos campos internos que você necessita desses uids você consegue fazer isso.

Agora vamos dar um exemplo de trabalhar com o operador “e”, digamos que você queira apenas as contas que são administradoras do sistema e ao mesmo tempo estejam escondidas da lista global:

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br” “(&(zimbraIsAdminAccount=TRUE)(zimbraHideInGal=TRUE))”

E pra dificultar um pouco mais as coisas vamos trabalhar com os dois operadores ao mesmo tempo, por exemplo, todas as contas que sejam administradoras, estejam escondidas da lista global, ou estejam bloqueadas:

# ldapsearch -D “cn=config” -w senha_do_ldap -h ip_do_servidor -b “dc=exemplo,dc=com,dc=br “(&(zimbraIsAdminAccount=TRUE)(|(zimbraHideInGal=TRUE)(zimbraAccountStatus=lockout)))”

E é mais ou menos isso ai. Espero que as dicas ajudem e qualquer dúvida comentário ou sugestão, é só dizer ai em baixo!

Anúncios

Ldap e serviços de diretório

Hoje vamos falar um pouco sobre o que é Ldap e o que são os serviços de diretório.

Começando pelo serviço de diretório, vamos lá, segundo a Wikipédia:

“Um serviço de diretório é o sistema de software que armazena, organiza e fornece acesso a informações em um diretório do sistema operacional de computador. Em engenharia de software, um diretório é um mapa entre nomes e valores. Ele permite a consulta de valores nomeados, semelhante a um dicionário. Como uma palavra em um dicionário deve possuir várias definições, um serviço de diretório pode associar um nome com vários pedaços de informações diferentes. Do mesmo modo, como uma palavra pode ter partes diferentes de articulação e diferentes definições, um nome em um diretório pode ter vários tipos de dados diferentes.”

Entendeu? Não? Nem eu no começo, é difícil mesmo de ter uma visão de um serviço de diretórios não fica desesperado. Vou explicar com as minhas palavras pra ver se facilita. Serviço de diretórios nada mais é que um monte de pastas aninhadas umas dentro das outras (redundância chegou e ficou) pra guardar dados, que funciona sempre do maior para o menor e pode armazenar diversos tipos de dados. Tem gente que faz comparação com árvores e realmente quando você enxerga esses diretórios dentro de algum software parece um monte de galhos as menores ramificações onde estão os dados.

Pra facilitar a visualização vou dar como exemplo uma árvore de diretório de um domínio em um servidor zimbra. Vamos dizer que você tem o usuário isaac@exemplo.com.br e diversas informações sobre a conta desse cara, como eu chegaria nessas informações em um servidor de diretório?

Como eu falei antes a organização se faz do maior para o menor, então primeiramente teríamos o dado “br” dentro dele podemos ter outros como “org”, ou no nosso caso “com”, e dentro de “com”, podemos ter diversos domínios como o nosso “exemplo”, só então dentro do domínio “exemplo” temos os usuários e claro entre eles o “isaac”, e ainda mais abaixo dentro de “isaac” temos as informações dessa conta, tais como, quando foi feito o ultimo login, qual é a senha (criptografada claro), qual o status da conta, etc.

Então ficou mais ou menos assim:

br->com->exemplo->isaac->dados da conta

Dentro dessa organização de diretórios, cada um desses dados possui uma nomenclatura, mas como o nosso objetivo é esclarecer apenas o funcionamento vamos ficar por aqui.

Mas e o Ldap, então que eu tanto ouço falar o que é? Novamente segundo a Wikipédia:

“Lightweight Directory Access Protocol, ou LDAP, é um protocolo de aplicação aberto, livre de fornecedor e padrão de indústria para acessar e manter serviços de informação de diretório.”

Bem mais simples então o Ldap é apenas o protocolo que conversa com esse serviço de diretório e passa informações pra ele.

No Linux, temos diversos comandos Ldap, para consulta, alteração ou inserção de dados no servidor de diretório, tais como ldapsearch, ldapmodify, e ldapadd.

Futuramente farei um post explicando melhor como usar esses comandos.

Espero ter ajudado e até a próxima.

Qualquer dúvida, sugestão ou reclamação, deixe um comentário! =]

Zimbra & Backups no Zimbra com Zmbkpose

Para começar o blog com um assunto legal, vamos falar de uma coisa que eu tenho ganhado bastante conhecimento ultimamente, o Zimbra.

Pra quem não conhece, o Zimbra, é uma ferramenta OpenSource robusta com uma suite de E-mail e colaboração que tem crescido muito e sendo cada vez mais utilizada em diversas empresas. Então se Linux é sua praia, vale a pena dar uma conferida nesse cara.

Hoje, para realização de backups no Zimbra é usado por mim e por diversas pessoas uma ferramenta chamada Zmbkpose, criada por uma empresa Brasileira, a 4linux. A ferramenta é bem versátil possibilitando fazer backups das contas e suas configurações, de forma integral (backup full) e também incremental, após esse backup full ter sido realizado. O software é capaz de realizar até 5 backups simultaneamente, fazendo assim o backup-full de forma muito mais rápida, e também capaz de voltar o backup de uma conta em outra conta entre outras coisas legais.

Para a instalação do Zmbkpose primeiramente você deve baixar a versão mais recente no github dos criadores ( https://github.com/bggo/Zmbkpose ), após descompacta-lo basta rodar o scritp de instalação e responder perguntas simples muito prático, mas se responder algo que precisar ser trocado nas configurações posteriormente não tem problema também, o programa cria um arquivo “/etc/zmbkpose/zmbkpose.conf” onde todas essas configurações podem ser alteradas.

A utilização é bem simples e uma listagem dos parâmetros os quais o Zmbkpose aceita pode ser verificado apenas rodando o próprio zmbkpose como usuário zimbra.

Um único problema encontrado com este programa foi ao tentar recuperar um backup incremental vi que diversas contas estavam com backups de 1.4k corrompidos e que não descompactavam, para isso criei baseado no próprio programa um script para realização dos backups incrementais, que está em anexo. ( https://github.com/whyzack/backup_diario )

Espero que as dicas tenham sido uteis e qualquer dúvida podem falar comigo! =]