O OpenLDAP possui muitos front-ends para administração, mas a forma padrão de administração é feita via linha de comando com os comandos providos pelo pacote “ldap-utils”. todos os comandos iniciando com slap* vem com o servidor LDAP e devem ser executados com o servidor parado, e os comandos iniciando com ldap* podem ser utilizados com o servidor em execução.
Vamos preparar o ambiente:
# apt-get install ldap-utils
Comandos SLAP*:
Não se esqueça de parar o servidor LDAP
# /etc/init.d/slapd stop
slaptest
-f /caminho/conf - Fornece um nome alternativo para o slapd.conf
Este comando testa a integridade do arquivo de configuração slapd.conf e suas opções.
Excelente para saber se as opções estão corretamente definidas.
# slaptest
slapcat
Este comando permite que a base LDAP seja exportada para um arquivo ldif que é a
extensão de arquivos utilizada para adicionar e/ou remover informações de uma base
LDAP.
-l ldif - Grava a base exportada para o arquivo ldif informado.
# slapcat -l base_mundotibrasil.ldif
slapadd
Este comando utiliza um arquivo ldif para adicionar objetos à base LDAP.
-l ldif - arquivo ldif contendo as entradas para a base LDAP.
slappasswd
Este comando é um utilitário para geração de senhas em “hash”. O seu uso é muito
simples:
-s senha - Senha em texto puro. -h hash - Qual o tipo de hash utilizado. Se omitido irá utilizar {SSHA}.
# slappasswd -h {SSHA} | tee -a /etc/ldap/slapd.conf
Sua utilidade é transformar senhas literais em senhas seguras em hash. Este “hash” deve ser colocado integralmente no atributo “userPassword”, assim a senha não mais será armazenada em texto plano.
slapindex
Este comando é utilizado para indexar a base LDAP seguindo às instruções definidas na opção “index” do arquivo de configuração “slapd.conf”.
Comandos LDAP*:
Esta série de comandos deve ser utilizada com o servidor LDAP rodando:
# /etc/init.d/slapd start
Todos os comando possuem essas opções em comum, e as principais são:
-h ldaphost - Especifica um host alternativo no qual deseja se conectar (Está se tornando obsoleto em favor de -H). -p ldapport - Especifica uma porta alternativa do servidor LDAP (Está se tornando obsoleto em favor de -H). -x - Usa autenticação simples no lugar de SASL -ZZ - Inicia uma conexão segura, com start_tls. -D binddn - Usa a DN informada para se conectar no diretório LDAP. -W - É usado para não especificar a senha na linha de comandos. -w senha - Senha para se autenticar no servidor LDAP.
ldapsearch
Comando utilizado para consultar uma base de dados LDAP.
-b searchbase - Apartir de que ponto do diretório a pesquisa irá iniciar. -s Define o escopo da pesquisa. As opções são: base, one e sub base – Busca apenas na base DN one – busca no mesmo nível do “galho” definido em -b e em mais um sub-nível; sub – opção padrão, busca recursivamente a partir do “galho” -f arquivo - As linhas são lidas do arquivo informado. -t - Em uma saída onde caracteres não imprimíveis surgem, os mesmo serão copiados para o diretório /tmp, tipicamente os atributos jpegPhoto ou audio. -v - Retorna o diagnóstico da operação na saída padrão. -L - Mostra informações restrita ao formato LDIFv1. -LL - Mostra informações do LDIF sem os comentários. -LLL - Mostra informações sobre o LDIF sem os comentários e sem a versão. -C - Garante que ele vai seguir as referências da pesquisas. [filtros] - Condição de pesquisa. Se omitido assume '(objectClass)' [atributos ... ] - Atributos que devem ser retornados na pesquisa.
ldapadd
Comando utilizado para adicionar entradas no diretório LDAP.
ldapmodify
Comando utilizado para modificar dados no diretório LDAP.
ldapdelete
Comando utilizado para apagar uma ou mais entradas do diretório LDAP.
-f arquivo - As linhas são lidas do arquivo informado.
ldapmodrdn
Comando utilizado para modificar uma RDN.
-r - Remove o antigo valor de RDN.
Alguns exemplos:
# vi nascimento.ldif
# Cadastrando usuário dn: cn=Capitao Nascimento,ou=People,dc=mundotibrasil,dc=local objectClass: inetOrgPerson sn: Nascimento homePhone: 1111-1111 mail: cptnascimento@mundotibrasil.local description: Faca na Caveira ou: BOPE
Cadastrando o usuário:
# ldapadd -x -D cn=admin,dc=mundotibrasil,dc=local -W -f nascimento.ldif
Consulta simples
# ldapsearch -x -b dc=mundotibrasil,dc=local
Que é a mesma coisa que:
# ldapsearch -x -b dc=mundotibrasil,dc=local ‘(dc=objectClass=*)’
Mas a próxima consulta é diferente:
# ldapsearch -x -b dc=mundotibrasil,dc=local -D cn=admin,dc=mundotibrasil,dc=local -W
Consultas com filtros usando E OU e EXCETO
Consulta com OU (OR):
# ldapsearch -x -b dc=mundotibrasil,dc=local ‘(|(objectClass=inetOrgPerson) (objectClass=posixAccount))’
Consulta com E (AND):
# ldapsearch -x -b dc=mundotibrasil,dc=local ‘(&(objectClass=inetOrgPerson) (objectClass=posixAccount))’
Consulta com EXCEÇÃO (NOT):
# ldapsearch -x -b dc=mundotibrasil,dc=local ‘(!(cn=user1))’
Procurando por user1:
# ldapsearch -x -LL -b dc=mundotibrasil,dc=local ‘(cn=user1)’
Consultando o email do Capitao Nascimento:
# ldapsearch -x -b dc=mundotibrasil,dc=local ‘(cn=Capitao Nascimento)’ mail
Modificando uma entrada
# vi mudança1.ldif
dn: uid=user1,ou=People,dc=mundotibrasil,dc=local changetype: modify replace: givenName givenName: Usuario 1
# ldapmodify -x -D cn=admin,dc=mundotibrasil,dc=local -W -f mudança1.ldif
Adicionando uma entrada
# vi mudança2.ldif
dn: uid=user1,ou=People,dc=mundotibrasil,dc=local changetype: modify add: title title: Gerente de Contas
# ldapmodify -x -D cn=admin,dc=mundotibrasil,dc=local -W -f mudança2.ldif
Outra entrada mas com jpegPhoto
# vi mudança3.ldif
dn: uid=user1,ou=People,dc=mundotibrasil,dc=local changetype: modify add: jpegPhoto jpegPhoto:< file:///root/linux_kruguer.jpg
# ldapmodify -x -D cn=admin,dc=mundotibrasil,dc=local -W -f mudança3.ldif
Modificando uma RDN
# vi mudança4.ldif
uid=user1,ou=People,dc=mundotibrasil,dc=local uid=usuario1
# ldapmodrdn -r -x -D cn=admin,dc=mundotibrasil,dc=local -W -f mudança4.ldif
Apagando uma entrada
# vi mudança5.ldif
uid=usuario1,ou=People,dc=mundotibrasil,dc=local uid=user2,ou=People,dc=mundotibrasil,dc=local
# ldapdelete -x -D cn=admin,dc=mundotibrasil,dc=local -W -f mudança5.ldif
Espero que tenham gostado do post, e na próxima semana tem mais.