Comandos de gerenciamento do LDAP
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
1 | -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.
1 | -l ldif - Grava a base exportada para o arquivo ldif informado. |
# slapcat -l base_cooperati.ldif
slapadd
Este comando utiliza um arquivo ldif para adicionar objetos à base LDAP.
1 | -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:
1 2 | -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:
1 2 3 4 5 6 7 | -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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -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.
1 | -f arquivo - As linhas são lidas do arquivo informado. |
ldapmodrdn
Comando utilizado para modificar uma RDN.
1 | -r - Remove o antigo valor de RDN. |
Alguns exemplos:
# vi nascimento.ldif
1 2 3 4 5 6 7 8 | # Cadastrando usuário dn: cn=Capitao Nascimento,ou=People,dc=cooperati,dc=local objectClass: inetOrgPerson sn: Nascimento homePhone: 1111-1111 mail: cptnascimento@cooperati.local description: Faca na Caveira ou: BOPE |
Cadastrando o usuário:
# ldapadd -x -D cn=admin,dc=cooperati,dc=local -W -f nascimento.ldif
Consulta simples
# ldapsearch -x -b dc=cooperati,dc=local
Que é a mesma coisa que:
# ldapsearch -x -b dc=cooperati,dc=local ‘(dc=objectClass=*)’
Mas a próxima consulta é diferente:
# ldapsearch -x -b dc=cooperati,dc=local -D cn=admin,dc=cooperati,dc=local -W
Consultas com filtros usando E OU e EXCETO
Consulta com OU (OR):
# ldapsearch -x -b dc=cooperati,dc=local ‘(|(objectClass=inetOrgPerson) (objectClass=posixAccount))’
Consulta com E (AND):
# ldapsearch -x -b dc=cooperati,dc=local ‘(&(objectClass=inetOrgPerson) (objectClass=posixAccount))’
Consulta com EXCEÇÃO (NOT):
# ldapsearch -x -b dc=cooperati,dc=local ‘(!(cn=user1))’
Procurando por user1:
# ldapsearch -x -LL -b dc=cooperati,dc=local ‘(cn=user1)’
Consultando o email do Capitao Nascimento:
# ldapsearch -x -b dc=cooperati,dc=local ‘(cn=Capitao Nascimento)’ mail
Modificando uma entrada
# vi mudança1.ldif
1 2 3 4 | dn: uid=user1,ou=People,dc=cooperati,dc=local changetype: modify replace: givenName givenName: Usuario 1 |
# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança1.ldif
Adicionando uma entrada
# vi mudança2.ldif
1 2 3 4 | dn: uid=user1,ou=People,dc=cooperati,dc=local changetype: modify add: title title: Gerente de Contas |
# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança2.ldif
Outra entrada mas com jpegPhoto
# vi mudança3.ldif
1 2 3 4 | dn: uid=user1,ou=People,dc=cooperati,dc=local changetype: modify add: jpegPhoto jpegPhoto:< file:///root/linux_kruguer.jpg |
# ldapmodify -x -D cn=admin,dc=cooperati,dc=local -W -f mudança3.ldif
Modificando uma RDN
# vi mudança4.ldif
1 2 | uid=user1,ou=People,dc=cooperati,dc=local uid=usuario1 |
# ldapmodrdn -r -x -D cn=admin,dc=cooperati,dc=local -W -f mudança4.ldif
Apagando uma entrada
# vi mudança5.ldif
1 2 | uid=usuario1,ou=People,dc=cooperati,dc=local uid=user2,ou=People,dc=cooperati,dc=local |
# ldapdelete -x -D cn=admin,dc=cooperati,dc=local -W -f mudança5.ldif
Espero que tenham gostado do post, e na próxima semana tem mais.