Uso e gerenciamento

A forma padrão de uso e gerenciamento de uma base OpenLDAP é feita através de uma série de comandos que fazem parte do servidor. Além dos comandos que fazem parte do servidor o OpenLDAP oferece um conjunto extra de comandos.

Os comandos que já vem com o servidor iniciam com slap e os comandos extras começam com ldap. A diferença crucial é que os comandos slap somente devem ser executados “a frio”, ou seja, com o servidor OpenLDAP parado, enquanto que os comando ldap somente devem ser executados “quentes”, ou seja, com o servidor OpenLDAP sendo executado.

Para instalar os comandos extras utilize o seguinte comando:

aptitude install ldap-utils

Série de comandos “slap”

Importante lembrar que estes comandos só devem ser executados com a base OpenLDAP parada.

Assim o primeiro passo é parar o OpenLDAP com o comando:

/etc/init.d/slapd stop

slaptest

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.

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.

A sintaxe mais comum é:

slapcat -l base_ldap.ldif

slapadd

Este comando utiliza um arquivo ldif para adicionar objetos à base LDAP. A seguir vamos ver alguns exemplos de arquivos ldif para adicionar objetos:

Adicionando uma “ou” – Organizational Unit

1. Crie o arquivo ou.ldif e copie nele este conteúdo:

dn: ou=Usuarios,dc=kyapanel,dc=com,dc=br
ou: Usuarios
objectClass: organizationalUnit
objectClass: top

2. Salve o arquivo;
3. Pare o OpenLDAP;
4. Execute o comando: slapadd -l ou.ldif

Adicionando um usuário ao “ou”

1. Crie o arquivo user.ldif e copie nele o seguinte conteúdo:

dn: cn=Marcos Lima,ou=Usuarios,dc=kyapanel,dc=com,dc=br
uid: marcosl
cn: Marcos Lima
sn: MarcosL
objectClass: inetOrgPerson
objectClass: posixAccount
homeDirectory: /home/marcosl
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
userPassword: 123mudar

2. Salve o arquivo;
3. Pare o OpenLDAP;
4. Execute o comando: slapadd -l user.ldif

Testando a criação de objetos

Execute o comando “slapcat” para ver a saída. Os dois objetos devem existir.

slappasswd

Este comando é um utilitário para geração de senhas em “hash”. O seu uso é muito simples:

slappasswd -s sua_senha_aqui

Sua utilidade é transformar senhas literais em senhas seguras em hash. Pode-se definir qual o “hash” desejado usando a opção “-h” e indicando o tipo. Os tipos de “hash” suportados pelo comando são: {CRYPT}, {MD5}, {SMD5}, {SSHA} e {SHA}.

Sim. É necessário escrever os {}. veja o exemplo:

slappasswd -h {MD5} -s sua_senha_aqui

Se a opção -h não for utilizada o “hash” padrão é o SSHA que atualmente é um dos melhores.

No exemplo anterior tínhamos o atributo “userPassword” contendo uma senha em texto plano “123mudar”. Dessa forma funciona, mas a senha será armazenada em texto plano na base LDAP e isso é indesejável

Podemos usar o comando, “slappasswd -s 123mudar”, para gerar um “hash” como este:

{SSHA}B+3Ppz4uc/D722PwOFqrQIDF8v4ISYU5

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”.

Maiores detalhes sobre a indexação da base LDAP serão vistos mais adiante, neste manual.

Série de comandos “ldap”

Importante lembrar que estes comandos devem ser executados com a base OpenLDAP ativada.

Portanto o primeiro passo é ativar o OpenLDAP com o comando:

/etc/init.d/slapd start

Por se tratarem de comandos que são executados em uma base LDAP ativa, algumas opções adicionais se fazem sempre necessárias, como o “host” no qual vai se conectar e as credenciais de acesso.

As opções mais comuns são:

-h Host no qual se vai conectar
-p Porta na qual se vai conectar
-x Autenticação não segura, ou seja, sem SASL
-ZZ Autenticação segura usando TLS - Transport Layer Security
-D BINDDN ou simplesmente o DN completo do usuário que será usado para autenticar
-w Senha do BINDDN

É certo que praticamente todos os comandos da série “ldap” irão usar praticamente todas essas opções.

ldapsearch

Este comando é utilizado para realizar buscas na base LDAP. Além das opções acima, pode-se usar ainda as opções:

-b Define a partir de qual “galho” a pesquisa será feita
-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”
-LLL - Mostra o resultado da pesquisa desabilitando comentários e informações extras

Exemplo:

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha -b ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL 

Aprendendo a sintaxe do filter

O comando ldapsearch oferece ainda mais uma possibilidade de refinamento da pesquisa. Pode-se definir um ou vários filtros para os resultados.

Para usá-los basta acrescentar ao final o filtro desejado e o(s) atributo(s) que devem ser mostrados no resultado.

Vamos aos exemplos para ilustrar:

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha -b  ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL uid=marcosl

Perceba que nesta pesquisa não aparece o objeto ou=Usuarios

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha -b ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL uid=marcosl cn

Nesta pesquisa a busca foi feita pelo atributo “uid”, mas no final pedimos que fosse retornado o atributo “cn”.

Os filtros podem ser ainda mais elaborados utilizando algumas conjunções como o caracter * para definir todos ou inicia-se por “mar”, além dos operadores lógicos:

& => para condicional e;
| => para condicional ou;
! => para condicional não;

E operadores comparativos:

“=” para igual;
“~=” para igualdades aproximadas;
“<=”  para menor que;
“>=” para maior que.

Vejamos exemplos mais elaborados:

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br
-w senha -b  ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL  '(&(uid=marcosl)(uidNumber=2000))' cn

Esta pesquisa não deve retornar nada, afinal de contas o “uid” marcosl tem uidNumber igual a 1000 e não 2000

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha -b  ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL '(|(uid=marcosl)(uid=joao))' cn

Esta pesquisa irá retornar todos os objetos que tenham “uid” igual a marcosl ou joao

ldapsearch -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br
-w senha -b ou=Usuarios,dc=kyapanel,dc=com,dc=br -LLL '(&(uid=marcosl)(!(uidNumber=2000)))' cn

Esta pesquisa irá retornar o CN do “uid” marcosl, afinal de contas o usuário marcosl tem uidNumber igual a 1000.

Resumindo

Pode-se refinar muito a pesquisa utilizando os operadores do filtro. Para simplificar a sintaxe assuma:

OL – Operador lógico
OC – Operador comparativo

Sintaxe básica:

‘(OL(atributo1<OC>valor)(atributo2<OC>valor))’

Sintaxe avançada:

‘(OL(atributo1<OC>valor)(OL(atributo2<OC>valor)))’

ldapadd

Este comando é similar ao slapadd, entretanto permite que se adicionem objetos à base LDAP com o serviço “no ar”.

O procedimento é o mesmo:

1. Crie o arquivo group.ldif e copie nele este conteúdo:

dn: ou=Grupos,dc=kyapanel,dc=com,dc=br
ou: Grupos
objectClass: organizationalUnit
objectClass: top

2. Salve o arquivo;
3. Execute o comando:

ldapadd -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha
 -f group.ldif


O sucesso ou fracasso na adição de um objeto dependerá sempre do permissionamento do BINDDN e da forma do arquivo ldif.

ldapmodify

Este comando permite fazer alterações nos atributos de um objeto já existente. Seu funcionamento é similar aos demais comandos, ou seja, ele utiliza um arquivo “ldif” para fazer as alterações desejadas.

Apesar de usar um arquivo “ldif”, este é levemente diferente, permitindo que os parâmetros de alteração sejam definidos.

A opção extra para indicar qual é o arquivo “ldif” a ser usada é: -f

Estão disponíveis três formas de alteração:

add
replace
delete

Vejamos como esses arquivos “ldif” de modificação são escritos:

dn: completo
ação: atributo
atributo: valor

Vamos fazer alterações em nosso usuário Marcos Lima, adicionando um novo atributo title, alterando o valor do atributo loginShell e finalmente, removendo o atributo title.

Adicionando um atributo

1. Crie o arquivo alter_user.ldif com o seguinte conteúdo:

dn: cn=Marcos Lima,ou=Usuarios,dc=kyapanel,dc=com,dc=br
add: title
title: Professor

2. Execute o comando:

ldapmodify -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha  -f alter_user.ldif
Alterando um atributo

1. Crie o arquivo alter_user2.ldif com o seguinte conteúdo:

dn: cn=Marcos Lima,ou=Usuarios,dc=kyapanel,dc=com,dc=br
replace: loginShell
loginShell: /bin/false

2. Execute o comando:

ldapmodify -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha -f alter_user2.ldif
Removendo um atributo

1. Crie o arquivo alter_user3.ldif com o seguinte conteúdo:

dn: cn=Marcos Lima,ou=Usuarios,dc=kyapanel,dc=com,dc=br
delete: title

2. Execute o comando:

ldapmodify -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha -f alter_user3.ldif
Tudo no mesmo ldif

Visando facilitar múltiplas alterações, pode-se escrever um “ldif” de modificação contendo todas elas e executando-as de uma única vez. Para isso basta separar as ações por um hífen. Veja abaixo o exemplo:

1. Crie o arquivo alter_user4.ldif com o seguinte conteúdo:

dn: cn=Marcos Lima,ou=Usuarios,dc=kyapanel,dc=com,dc=br
add: title
title: Professor
-
replace: loginShell
loginShell: /bin/bash
-
delete: title

2. Execute o comando:

ldapmodify -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha -f alter_user4.ldif

ldapdelete

Este comando permite remover um objeto especificando o seu DN completo. Veja o exemplo:

ldapdelete -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br -w senha cn="Marcos Lima",ou=Usuarios,dc=kyapanel,dc=com,dc=br

O resultado será a completa remoção do usuário “Marcos Lima”.

ldapmodrdn

Este comando permite que um DN seja renomeado. Até o momento vimos diversas opções que permitem alterações em atributos de um objeto, mas não do próprio objeto, ou seja, do seu DN.

Este comando permite essa alteração.

A opção extra e que deve ser sempre usada é “-r”. Ela evita que o novo DN modificado tenha dois registros CN.

Vejamos como ele funciona:

1. Crie o arquivo alter_user5.ldif com o seguinte conteúdo:

cn="Marcos Lima",ou=Usuarios,dc=kyapanel,dc=com,dc=br
cn="Marcos Lima da Silva"

Perceba que a segunda linha contém apenas o valor para o qual se quer modificar o DN e não um DN completo.

2. Execute o seguinte comando:

ldapmodrdn -h localhost -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br 
-w senha -r -f alter_user5.ldif

Licença

Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito

Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.

Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.

openldap_basico/uso_e_gerenciamento.txt · Last modified: 2009/10/05 15:03 by anahuac
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki