Você está na página 1de 33

1.

Introduo e Conceitos LDAP (Lightweight Directory Access Protocol) um protocolo (executado sobre o TCP/IP) cliente-servidor, utilizado para acessar um servio de Diretrio. Ele foi inicialmente usado como uma interface para o X.500, mas tambm pode ser usado com autonomia e com outros tipos de servidores de Diretrio. Atualmente vem se tornando um padro, diversos programas j tm suporte a LDAP. Livros de endereos, autenticao, armazenamento de certificados digitais (S/MIME) e de chaves pblicas (PGP), so alguns dos exemplos onde o LDAP j amplamente utilizado. 1.1 Servio de Diretrio Um Diretrio como um banco de dados, mas tende a conter mais informaes descritivas, baseadas em atributo, e organizado em forma de rvore, no de tabela. A informao em um Diretrio geralmente mais lida do que escrita. Como conseqncia, Diretrios normalmente no so usados para implementar transaes complexas, ou esquemas de consultas regulares em bancos de dados, transaes estas que so usadas para fazer um grande volume de atualizaes complexas. Atualizaes em Diretrios so tipicamente simples ou nem so feitas. Diretrios so preparados para dar resposta rpida a um grande volume de consultas ou operaes de busca. Eles tambm podem ter a habilidade de replicar informaes extensamente; isto usado para acrescentar disponibilidade e confiabilidade, enquanto reduzem o tempo de resposta. Existem vrias maneiras diferentes para disponibilizar um servio de Diretrio. Mtodos diferentes permitem que diferentes tipos de informaes possam ser armazenadas no Diretrio, colocando requerimentos diferentes, sobre como aquela informao poder ser referenciada, requisitada e atualizada, como ela protegida de acessos no autorizados, etc.. Alguns servios de Diretrio so locais, fornecendo o servio para um contexto restrito (ex., o servio finger em uma mquina isolada). Outros servios so globais, fornecendo o servio para um contexto muito maior (por exemplo, a prpria Internet). Servios globais normalmente so distribudos, ou seja, cada servidor responsvel por uma parte apenas. O DNS (Domain Name System) um exemplo, ele um tipo de servio de Diretrio, embora bastante especializado. 1.1.1 Tipo de Informao O modelo de servio do Diretrio LDAP baseado em entradas. Uma entrada um conjunto de atributos e referenciada atravs de um nome distinto (Distinguished Name). O DN usado para referenciar uma entrada de forma no ambgua. Cada um dos atributos de entrada tem um tipo e um ou mais valores. Estes tipos geralmente so palavras mnemnicas, como cn para nome comum, ou mail para endereo de correio eletrnico; existem RFCs (Request For Comments) que determinam estas palavras. 1.1.2 Organizao da Informao No LDAP, entradas de diretrio so organizadas em uma hierarquia de rvore. Tradicionalmente, essa estrutura reflete limites geogrficos e/ou polticos. Entradas representando pases aparecem no topo da rvore. Abaixo dessas esto as entradas representando estados e organizaes nacionais. Abaixo podem estar entradas representando unidades organizacionais, pessoas, impressoras, documentos ou qualquer coisa que se queira. A rvore tambm pode ser organizada com base em nomes de domnio.

Apesar de termos entradas para pases, o Diretrio no possui uma entidade reguladora ou centralizadora como, por exemplo, os root servers do DNS. A separao por pases, por exemplo, pode ser til para empresas multinacionais. 1.1.3 Classes de Objetos Podemos criar qualquer tipo de atributo, mas isto no recomendado. No LDAP existem diversas classes de objetos, e cada classe contm uma lista de atributos obrigatrios e opcionais. Essa lista definida em uma RFC. Por exemplo, a classe person definida da seguinte maneira: objetclass person requires objectClass sn, cn allows description, seeAlso, telephoneNumber, userPassword O servidor LDAP pode ser configurado para verificar as classes (atravs da opo schemacheck) e forar o uso correto dos atributos. Isto geralmente uma boa idia; com a checagem habilitada, por exemplo, ser obrigatria a insero dos atributos objectClass, sn e cn. Quando definirmos que uma entrada do Diretrio da classe person, um atributo description ser opcional. Entradas em Diretrios podem ter vrias classes diferentes, basta apenas observarmos os requisitos de atributos de cada classe. 1.1.4 Referncia Informao Uma entrada referenciada por seu DN, que construdo pela concatenao do nome da entrada (Nome Distinto Relativo RDN) e de todas entradas ancestrais. Por exemplo, DN="cn=Maria A Silva,o=U de M,c=BR". O formato DN completo descrito em RFC2253, "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names.". Podemos fazer uma comparao com hostname (RDN) e FQDN (DN). 1.1.5 Acesso Informao O LDAP define operaes para consultar e atualizar o Diretrio. Operaes so fornecidas para adio e remoo de uma entrada do Diretrio, modificao de uma entrada existente e modificao do nome de uma entrada. A operao LDAP de busca pode abranger a rvore toda (uma busca com escopo subtree) ou apenas um ramo, sem descer ou subir para os demais. Alm de especificar com filtros quais entradas se deseja encontrar, tambm possvel especificar quais atributos desta entrada esto sendo procurados. Se os atributos no forem especificados, todos sero retornados. Alguns servios de Diretrio no fornecem proteo contra acessos no autorizados, permitindo que qualquer um possa ver as informaes. O LDAP fornece um mtodo para autenticao de um cliente, ou prova se sua identidade para um servidor de Diretrio, pavimentando o caminho para um rico controle de acesso, protegendo as informaes contidas no servidor. 1.2 Funcionamento do LDAP

O servio de Diretrio LDAP baseado em um modelo cliente-servidor. Um ou mais servidores LDAP contm os dados criando a rvore de Diretrio LDAP. Um cliente LDAP conecta-se a um servidor e faz uma requisio. O servidor responde com a requisio, ou exibe um ponteiro para onde o cliente pode conseguir a informao (tipicamente, outro servidor LDAP). Podemos fazer novamente uma comparao com o DNS, a diferena

que o servidor LDAP no faz buscas recursivas, ou seja, em nome do cliente. O cliente encarregado de procurar pelo servidor at encontrar a informao desejada. 1.3 Conceito e Utilizao do slapd

O slapd um servidor de Diretrio LDAP que pode ser executado em diferentes plataforma. Voc pode us-lo para fornecer o seu prprio servio de Diretrio. Seu Diretrio pode conter qualquer coisa que voc queira colocar. Voc pode conect-lo a um servio de Diretrio LDAP global, ou executar o servio para voc mesmo. Algumas das caractersticas e potencialidades mais interessantes do slapd incluem: Escolha do banco de dados: O slapd vem com trs tipos diferentes de banco de dados que voc pode escolher. So eles: LDBM, um banco de dados baseado em disco de alta performance; SHELL, uma interface de banco de dados para comandos arbitrrios do Linux ou scripts de linha de comando e PASSWD, um banco de dados simples de um arquivo de senhas. Mltiplas instncias dos bancos de dados: O slapd fornece uma rica e poderosa facilidade no controle de acesso, permitindo que se controle o acesso a informao. Pode-se controlar o acesso s entradas baseadas em informao de autenticao LDAP, endereo IP, nome do domnio e outros critrios. API genrica do banco de dados: O slapd utiliza vrios processos para ter uma alta performance. Um nico subprocesso slapd manuseia todas as requisies vindas, reduzindo a quantidade requisitada de recursos do sistema. O slapd ir automaticamente selecionar o melhor suporte a vrios processos para a sua plataforma. Controle de acesso: O slapd pode ser configurado para usar rplicas. Este esquema de replicao mestre/escravo vital em ambientes de grande volume, onde um nico slapd no pode fornecer a disponibilidade ou a confiabilidade necessrias. Subprocessos: O slapd altamente configurvel. Atravs de um nico arquivo de configurao, ele permite a voc mudar simplesmente tudo, sempre que voc quiser alterar. As opes de configurao tm padres razoveis, tornando o seu trabalho muito mais fcil. 1.4 LDAP e X.500

O LDAP foi originalmente desenvolvido como um cliente para o X.500, o servio de Diretrio OSI. O X.500 define o Protocolo de Acesso a Diretrio (DAP) para os clientes usarem quando estiverem em contato com servidores de Diretrio. O DAP um protocolo que roda sobre uma camada OSI completa, e precisa de uma quantidade significativa de recursos computacionais para ser executado. O LDAP roda diretamente sobre o TCP e fornece a maioria das funcionalidades do DAP, a um custo muito menor. Este uso do LDAP torna fcil acessar o Diretrio X.500, mas ainda exige um servio X.500 completo, para tornar os dados disponveis aos vrios clientes LDAP que esto sendo desenvolvidos. Assim como clientes X.500 DAP completos, um servidor X.500 completo no um pequeno pedao de programa para ser executado. Se voc j est executando um servio X.500 e quer continuar a fazer isto, voc provavelmente pode parar de ler este captulo, ele todo sobre como executar o LDAP via slapd, sem utilizar o X.500. Se voc no est usando o X.500, ou quer parar de usar o X.500, ou no tem planos imediatos para executar o X.500, continue lendo. possvel replicar dados de um servidor de Diretrio slapd para um DAP X.500; isto permite que sua organizao torne seus dados disponveis como parte de um servio de Diretrio X.500 global em uma base somente para leitura. Um outro caminho para tornar os dados em um servidor slapd disponveis para a comunidade X.500, seria usando um DAP X.500 para porta de entrada do LDAP.

1.5

Rplica

O slurpd um servidor para Linux que auxilia o slapd, provendo a replicao do banco de dados. Ele responsvel pela distribuio das mudanas ocorridas no servidor master para o servidor slave (a rplica). O slapd e o slurpd se comunicam atravs de um simples arquivo texto, que usado para registrar as mudanas. A sintaxe deste arquivo lembra um pouco a sintaxe dos arquivos resultantes do diff, no sentido de que esto descritas as entradas ou atributos que devem ser removidos, adicionados ou modificados. O slurpd ir se encarregar de aplicar estas mudanas ao servidor da rplica. Durante este processo, a rplica e o master ficaro diferentes. 2. Guia Rpido de Instalao Segue um guia rpido para instalao do OpenLDAP 2.0, que prov os passos bsicos para instalao e configurao do LDAP, sem fornecer maiores detalhes. 1. Obter o software: Pode ser obtida uma cpia do OpenLDAP em: http://www.openldap.org/software/download/ 2. Descompactar a distribuio: gunzip -c openldap-VERSAO.tgz | tar xvfB cd openldap-VERSAO onde VERSAO a verso do software que se obteve no passo 1. 3. Examinar documentao:

Deve-se examinar os documentos COPYRIGHT, LICENSE, README e INSTALL que vieram com a distribuio. Eles possuem informaes como aceitabilidade de uso, cpia e limitaes de garantia do OpenLDAP. 4. Executar configure

Deve-se executar o script configure que ir configurar para que a distribuio possa ser corretamente compilada em seu sistema. Esse scriptaceita diversas opes de linha de comando que ativam ou desativam caractersticas opcionais do software. Geralmente os valores padres esto de acordo, mas pode-se querer mud-los. Para obter uma lista completa das opes do script, usa-se a opo -help ./configure -help Dado que esse um guia bsico, assumimos que ser deixado que o configure determine o que melhor: ./configure Se o script no reclamar, pode-se prosseguir com a compilao. Caso contrrio, recomendvel a leitura da FAQ emhttp://www.openldap.org/faq. 5. Construir/Compilar o software

O prximo passo a construo do software. Esse passo tem duas partes, primeiramente iremos compilar o software:

make depend make Ambas execues devem terminar sem erros. 6. Testar a construo/compilao Para assegurar um correta construo, devemos executar: make test Pode demorar alguns poucos minutos. Testes que se aplicam a sua configurao sero executados e devero retornar corretamente. Alguns testes, como teste de rplica, sero ignorados. 7. Instalar o software Pode-se, agora, instalar o software. Isso usualmente requer privilgio de super-usurio. su root c 'make install' Tudo dever ser instalado em /usr/local (ou qualquer outro diretrio escolhido pelo configure). 8. Editar o arquivo de configurao Use seu editor preferido para editar o arquivo de exemplo fornecido slapd.conf (usualmente instalado em/usr/local/etc/openldap/slapd.conf) para conter uma definio de base de dados LDBM database ldbm suffix "dc=<MEU_DOMINIO>,dc=<COM>" rootdn "cn=Manager,dc=<MEU_DOMINIO>,dc=<COM>" rootpw secret directory /usr/local/var/openldap-ldbm Substituindo <MEU_DOMINIO> e <COM> pelos componentes de domnio apropriados para o seu nome de domnio. Se seu domnio contiver componentes adicionais, assim como em inf.ufrgs.br, use: database ldbm suffix "dc=inf,dc=ufrgs,dc=br" rootdn "cn=Manager,dc=inf,dc=ufrgs,dc=br" rootpw secret directory /usr/local/var/openldap-ldbm 9. Iniciar o slapd

Voc deve, agora, iniciar o servidor LDAP, slapd, atravs da execuo da seguinte linha de comando: su root -c /usr/local/libexec/slapd Para verificar se o servidor est sendo executado e est corretamente configurado, voc pode executar uma pesquisa no servidor, usandoldapserach. Por padro, ldapsearch est instalado em /usr/local/bin/ldapsearch: ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts Observe que o uso de aspas simples entre os parmetros do comando para evitar a interpretao de caracteres especiais pelo shell. Dever retornar: dn: namingContexts: dc=<MEU_DOMINO>,dc=<COM> 10. Adicionar as entradas iniciais para seu diretrio

Pode ser usado ldapadd para adicionar entradas em seu diretrio LDAP. ldapadd espera entreda no formato LDIF. Faa isso em dois passos: 1. crie um arquivo ldif 2. execute ldapadd Usando seu editor preferido, crie um arquivo ldif contendo: dn: dc=<MEU_DOMINIO>,dc=<COM> objectclass: dcObject objectclass: organization o: <MINHA_ORGANIZACAO> dc: <MEU_DOMINIO> dn: cn=Manager,dc=<MEU_DOMINIO>,dc=<COM> objectclass: organizationalRole cn: Manager Ento execute ldapadd para inserir essas entradas no seu diretrio. ldapadd -x -D "cn=Manager,dc=<MEU_DOMINIO>,dc=<COM>" example.ldif Onde example.ldif o arquivo criado acima. 11. Verificar se ele est trabalhando

-W

Agora estamos prontos para verificar se as entradas foram adicionadas em seu diretrio. Pode-se usar qualquer cliente LDAP para isso, mas nossos exemplos sero com a ferramenta ldapsearch. ldapsearch -x -b 'dc=<MEU_DOMINIO>,dc=<COM>' '(objectclass=*)' Esse comando ir pesquisar e retornar cada entrada na base de dados. Pode-se agora adicionar mais entradas utilizando-se ldapadd ou outro cliente LDAP, experimentando diversas opes de configurao, etc. Note que por padro, a base de dados slapd garante acesso de leitura para qualquer um. extremamente recomendvel que se estabelea uma poltica de controle para restringir o acesso. 3. Opes de Configurao

3.1 Servio de Diretrio Local Nesta configurao. voc executa um slapd que prov servio de diretrio somente para seu domnio local. No h interao com outros servidores de diretrios em qualquer lugar. Essa configurao est exibida na figura abaixo:

configurao do servio local

Use essa configurao se voc est somente iniciando ou se quer prover um servio local e no est interessado em conexo com o resto do mundo. simples alterar para uma outra configurao mais tarde. 3.2 Servio de Diretrio Local com Orientao

Nesta configurao, voc executa o slapd que prov servio de diretrio para seu domnio local e configura-o para retornar orientaes para um servio superior, capaz de requisitar fora de seu domnio local.

Servio local com orientao

Use essa configurao se voc quer prover um servio local e participar do Diretrio Global. 3.3 Servio de Diretrio Replicado O daemon slurpd usado para propagar as mudanas de um slapd mestre para um ou mais slapds escravos. Um exemplo de configurao master-slave est representada abaixo:

Servio de diretrio replicado

Essa configurao pode ser usada em conjunto com uma das duas primeiras configuraes em situaes onde um simples slapd no prov a confiabilidade e disponibilidade desejadas. 3.4 Servio de Diretrios Local Distribudo Nessa configurao, o servio local est divido em servios menores, cada qual pode ser replicado, e aglutinado com a orientao superior e subordinada. 4. Arquivo de configurao do slapd Assim que o software tiver sido compilado e instalado, pode-se configurar o slapd de acordo com as caractersticas da sua aplicao. A configurao do runtime slapd

realizada principalmente atravs do arquivo slapd.conf, que normalmente se encontra no diretrio /usr/local/etc/openldap. Um arquivo de configurao alternativo pode ser especificado como opo na linha de comando para slapd ou slurpd. Este captulo descreve o formato do arquivo de configurao, juntamente com uma descrio detalhada das diretivas mais comuns. 4.1 Formato do arquivo de configurao O arquivo slapd.conf contm trs tipos de configuraes: global, especfica do backend, e especfica da base de dados. Informaes globais vem primeiro, seguidas por dados de um tipo de backend especfico, ao qual se seguem informaes de uma instncia de base de dados em particular. Diretivas globais podem ser podem ser redefinidas nas diretivas de backend e/ou bases de dados, e diretivas de backend podem ser redefinidas nas diretivas de base de dados. Linhas em branco e linhas de comentrio comeando pelo caracter '#' so ignoradas. Se uma linha comea por espao em branco, considerada uma continuao da linha anterior. O formato geral do arquivo slapd.conf o seguinte: # diretivas globais de configurao <diretivas globais> # definio de um backend backend <tipoA> <diretivas especficas do backend> # definio e diretivas de configurao da primeira base de dados database <tipoA> <diretivas especficas da base de dados> # definio e diretivas de configurao da segunda base de dados database <tipoB> <diretivas especficas da base de dados> # definio e diretivas de configurao da segunda base de dados database <tipoA> <diretivas especficas da base de dados> # demais definies de backend e base de dados, e diretivas de configurao ... Uma diretiva de configurao pode ter argumentos, os quais sero separados por espao em branco. Se um argumento contm espaos em branco, ele deve ser protegido por aspas duplas "deste modo". Se um argumento contm aspas duplas ou uma contrabarra '\', o caracter deve ser precedido por uma contrabarra '\'. A distribuio contm um arquivo de configurao de exemplo, o qual ser instalado no diretrio /usr/local/etc/openldap. Vrios arquivos contendo definies de esquemas (tipos de atributos e classes de objetos) tambm so fornecidos, no diretrio /usr/local/etc/openldap/schema. 4.2 Diretivas do arquivo de configurao Esta seo apresenta, em detalhes, as diretivas de configurao mais comuns. Para uma lista completa, leia a pgina de manual do slapd.conf(5). Esta seo classifica as diretivas

de configurao em globais, especficas de backend, e especficas de dados, descrevendo cada diretiva e seu valor pr-estabelecido (se houver), alm de um exemplo de utilizao. 4.2.1 Diretivas Globais As diretivas descritas nessa seo se aplicam a todos os backends e base dados a no ser que sejam redefinidas numa definio de um backend ou de uma base de dados. Argumentos que devem ser instanciados so mostrados entre os caracteres '<' e '>'. 4.2.1.1 access to <recurso> [by <quem> <nivel_de_acesso> <controle>]+ Esta diretiva permite acesso (de acordo com <nivel_de_acesso>) a um conjunto de entradas e/ou atributos (especificados por <recurso>) por um ou mais requisitantes (indicados por <quem>). Na seo Controle de Acesso deste captulo h um resumo da utilizao bsica. 4.2.1.2 attributetype <Descrio_de_tipo_de_atributo_RFC2252> A diretiva define um tipo de atributo. O captulo Especificao de Esquemas contm informao sobre como utilizar essa definio. 4.2.1.3 defaultaccess { none | compare | search | read | write } Esta diretiva estabelece um nvel de acesso para requisitantes, quando nenhuma diretiva access tiver sido especificada. Qualquer nvel de acesso dado implica nos nveis de acesso menores (i. e., acesso de leitura implica em acesso de busca e de comparao, mas no de escrita). Nota: recomendado que diretiva access seja utilizada para especificar controle de acesso. A seo Controle de Acesso deste captulo contm informao a respeito da diretiva access.

Valor pr-estabelecido: defaultaccess read 4.2.1.4 idletimeout <inteiro> Tempo, em segundos, at que uma conexo ociosa de um cliente seja fechada. Um idletimeout igual a 0, que o valor pr-estabelecido, desabilita essa caracterstica. 4.2.1.5 include <nome_de_arquivo> O slapd ir ler os dados de configurao contidos no arquivo <nome_de_arquivo> antes de continuar na prxima linha do arquivo atual. O arquivo includo deve seguir o formato normal do arquivo de configurao do slapd. Esta diretiva normalmente utilizada para incluir arquivos contendo definies de esquemas. Nota: Deve-se tomar cuidado com o uso dessa diretiva - no h um limite pequeno para o nmero de diretivas include em cascata, e no feita deteco de lao.

4.2.1.6 loglevel <inteiro> Esta diretiva especfica o nvel de log com que informaes de depurao e de estatsticas devem ser repassados para o syslogd (atualmente utilizando a facilidade {EX:LOG_LOCAL4}do syslogd(8)). Deve-se configurar o OpenLDAP com --enable-debug (o normal) para que isto funcione (exceto para dois nveis de estatsticas, os quais esto sempre habilitados). Nveis de log so aditivos. Para exibir que nmeros correspondem a qual tipo de depurao, execute slapd com -? ou consulte a tabela abaixo. Os valores possveis para <inteiro> so: Tabela 4.1: Nveis de depurao: Nvel Descrio -1 habilita toda a depurao 0 sem debug 1 exibe chamadas de funes 2 manuseio de pacotes 4 depurao detalhada de chamadas 8 gerncia de conexes 16 imprime pacotes enviados e recebidos 32 processamento de filtro de busca 64 tratamento do arquivo de configurao 128 tratamento de listas de controle de acesso 256 conexes/operaes/resultados 512 entradas enviadas como resultado de consultas exibe a comunicao com backends do tipo 1024 shell 2048 depurao do parsing de entradas LDAP Exemplo: loglevel -1 Ir realizar o log de Valor pr-estabelecido: loglevel 256 grande quantidade de informaes de depurao.

4.2.1.7 objectclass <descrio de classe de objetos segundo a RFC2252> Define uma classe de objetos. No captulo Especificao de Esquemas explica-se o uso dessa diretiva. 4.2.1.8 referral <URL> Especfica uma referncia a ser fornecida quando o slapd no encontra uma base de dados local para responder a uma requisio. Exemplo: referral ldap://root.openldap.org Isto ir redirecionar consultas no-locais para o servidor LDAP raiz do OpenLDAP Project.

Clientes LDAP inteligentes podem refazer a consulta nesse servidor, mas a maioria dos programas clientes conseguir lidar apenas com URLs LDAP simples, que contenham um host, e opcionalmente umdistinguished name. 4.2.1.9 sizelimit <inteiro> Esta diretiva especfica o nmero mximo de entradas retornadas por uma operao de busca. Valor pr-estabelecido: sizelimit 500 4.2.1.10 timelimit <inteiro> Especfica o nmero mximo de segundos (em tempo real) que o slapd ir demorar respondendo uma requisio de busca. Se uma requisio no finalizada nesse tempo, um resultado indicando que tempo limite foi excedido ser retornada. Valor pr-estabelecido: timelimit 3600 4.2.2 Diretivas de backend As diretivas dessa seo aplicam-se apenas para o backend em que so definidas. Elas se aplicam a qualquer tipo de backend. Elas tero efeito em todas instncias de base de dados do mesmo tipo, e, dependendo da diretiva, podero ser redefinidas por diretivas de base de dados. 4.2.2.1 backend <tipo> Esta diretiva inicia uma definio de backend. <tipo> deve ser um entre ldbm, shell, passwd, ou algum outro tipo de backend suportado. 4.2.3 Diretivas de base de dados As diretivas dessa seo tem efeito apenas na base de dados em que so definidas, e se aplicam a qualquer tipo de base de dados. 4.2.3.1 database <tipo> Inicia uma nova definio de instncia de base de dados. <tipo> deve ser um entre ldbm, shell, passwd, ou outro tipo de base de dados suportado. Exemplo: database ldbm Isto marca o incio da definio de uma nova instncia de base de dados do tipo ldbm. 4.2.3.2 readonly {on | off } Coloca/retira a base de dados do modo de apenas leitura. Nesse modo, qualquer tentativa de modificao da base de dados ir provocar um erro. Valor pr-estabelecido: readonly off

4.2.3.3 replica replica host=<hostname>[:<port>] [bindmethod={ simple | kerberos | sasl }] ["binddn=<DN>"] [mech=<mecanismo>] [authcid=<identidade>] [authzid=<identidade>] [credentials=<senha>] [srvtab=<nome_de_arquivo>] Esta diretiva especfica um local de replicao para esta base de dados. O parmetro host= especfica um computador, e opcionalmente uma porta, onde o slapd escravo est situado. Tanto um nome de domnio quanto um endereo IP pode ser utilizado para <hostname>. Se <porta> no for estabelecida, a porta normal do LDAP (389) ser usada. O parmetro binddn= estabelece o DN correlacionado com as modificaes enviadas ao slapd escravo. Ele deve ser um DN que possui acesso de leitura e escrita na base de dados do slapd escravo, tipicamente o rootdn no arquivo de configurao do escravo. Ele deve tambm estar de acordo com a diretiva updatedn da configurao do slapd escravo. Como DNs costumam incluir espaos, toda a seqncia de caracteres "binddn=<DN>" deve ser envolvida por aspas duplas. O valor bindmethod simple, kerberos ou sasl, dependendo se autenticao usada para conectar ao slapd escravo ser baseada em senha (simples, sem criptografia), Kerberos ou SASL. A autenticao simples no deve ser utilizada, a no ser que outras protees de integridade e privacidade sejam utilizadas (i. e. TLS ou IPSEC). Esse tipo de autenticao necessita dos parmetros binddn e credentials. A autenticao do tipo Kerberos est sendo abandonada em favor do mecanismo SASL, especialmente os mecanismos KERBEROS_V4 e GSSAPI. Autenticao kerberos necessita dos parmetros binddn e srvtab. A autenticao do tipo SASL o tipo recomendado. Ela necessita a especificao de um mecanismo utilizando o parmetro mech. Dependendo do mecanismo, uma identidade de autenticao e/ou credenciais podem ser especificados atravs de authcid e credentials, respectivamente. O parmetro authzid pode ser utilizado para especificar uma identidade de autorizao. O captulo Replicao com slurpd contm mais informao sobre o uso desta diretiva. 4.2.3.4 replogfile <nome_de_arquivo> Esta diretiva especifica o nome do log de replicao no qual slapd ir registrar modificaes. O log de replicaes tipicamente escrito pelo slapd e lido pelo slurpd. Normalmente, esta diretiva apenas utilizada se o slurpd est sendo utilizado para replicar a base de dados. Entretanto, pode-se tambm utiliz-lo para gerar um log de transaes, se slurpd no est rodando. Nesse caso, ser necessrio quebrar o arquivo periodicamente, para que ele no crea indefinidamente. No captulo Replicao com slurpd h mais informaes sobre o uso desta diretiva.

4.2.3.5 rootdn <dn> Informa o DN que no possui nenhuma restrio de acesso ou limites administrativos para operaes nesta base de dados. O DN no precisa referenciar uma entidade no diretrio. O DN pode referenciar uma identidade SASL. Exemplo utilizando uma entrada LDAP: rootdn "cn=Administrador,dc=exemplo,dc=com,dc=br" Exemplo utilizando SASL: rootdn "uid=root@EXAMPLO.COM.BR" 4.2.3.6 rootpw <senha> Estabelece uma senha para o DN dado acima, que ir funcionar sempre, no importando se uma entrada com o DN dado existe ou se tem uma senha. Esta diretiva est sendo abandonada em favor da autenticao baseada em SASL. Exemplo: rootpw secreta 4.2.3.7 suffix <sufixo_do_dn> Especifica o sufixo DN de consultas que sero repassadas para o backend desta base de dados. Mltiplas linhas de sufixo podem ser dadas, e pelo menos uma necessria para cada definio de base de dados. Exemplo: suffix "dc=exemplo,dc=com,dc=br" Nota: quando o backend ao qual ser repassada uma consulta selecionado, slapd examina a(s) linha(s) de sufixo de cada base de dados, na ordem em que elas aparecem no arquivo. Assim, se um sufixo de uma base de dados prefixo do de outra, ele deve aparecer depois no arquivo de configurao. 4.2.3.8 updatedn <dn> Esta diretiva s pode ser utilizada em um slapd escravo. Ele especfica o DN com permisso de fazer modificaes na rplica. Este pode ser o DN que slurpd assume quando realiza modificaes na rplica, ou o DN associado com um identidade SASL. Exemplo utilizando uma entrada LDAP: updatedn "cn=Agente de Replica,dc=exemplo,dc=com,dc=br" Exemplo utilizando SASL: updatedn "uid=slurpd@EXEMPLO.COM.BR" O captulo Replicao com Slurpd tem mais informaes sobre o uso desta diretiva. 4.2.3.9 updateref <URL> Esta diretiva s pode ser utilizada em um slapd escravo. Ela informa uma URL que ser

retornada para programas clientes que submeterem modificaes para a rplica. Se houverem mltiplas linhas, cada URL ser retornada. Exemplo: updateref ldap://master.example.net

4.2.4 Diretivas especficas do backend LDBM Diretivas desta categoria se aplicam apenas para bases de dados do backend LDBM. Isto , elas devem ser precedidas por uma linha "database ldbm" e devem estar antes de outra linha com a diretiva "database". 4.2.4.1 cachesize <inteiro> Estabelece o tamanho, em entradas, da cache em memria mantida pela instncia do backend LDBM. Valor pr-estabelecido: cachesize 1000 4.2.4.2 dbcachesize <inteiro> Especifica o tamanho em bytes da cache em memria associada com cada arquivo de indce aberto. Se no for suportada pela camada de banco de dados, esta diretiva ignorada sem aviso. O aumento do valor ir causar o uso de mais memria, mas pode resultar num ganho dramtico de peformance, especialmente durante modificaes ou na construo de ndices. Valor pr-estabelecido: dbcachesize 1000 4.2.4.3 dbnoblocking Esta opo, se presente, desabilita o comportamento bloqueante da base de dados. Ao habilitar-se a opo, pode-se ganhar em performance, ao custo de perda na segurana dos dados. 4.2.4.4 dbnosync Esta opo faz com que a base de dados em disco no seja imediatamente sincronizada com modificaes realizadas na memria. Pode-se ganhar em performance, perdendo-se em segurana dos dados. 4.2.4.5 directory <diretrio> Esta diretiva informa o diretrio onde os arquivos da base de dados LDBM e os respectivos ndices so guardados. Valor pr-estabelecido: directory /usr/local/var/openldap-ldbm

4.2.4.6 index { <lista_atributos> | default } [pres,eq,approx,sub,none] Estabelece os ndices a serem mantidos para o atributo dado. Se apenas uma <lista_atributos> fornecida, os ndices padres so mantidos. Exemplo: index default pres,eq index objectClass,uid index cn,sn eq,sub,approx A primeira linha estabelece que o conjunto padro de ndices a serem mantidos so de present e equality. A segunda linha faz com o conjunto pr-estabelcido (pres, eq) seja utilizado para atributos do tipo objectClass e uid. A terceira linha faz com que ndices do tipo equality, substring e approximate sejam mantidos para atributos do tipo cn e sn. 4.2.4.7 mode <inteiro_octal> Estabelece o as permisses de acesso que arquivos de ndice devero ter. mode 0600 4.2.5 Outras bases de dados utilizveis como backend slapd suporta vrios outros tipos de base de dados alm da LDBM. Tabela 4.2: tipos de base de dados backend Tipo Descrio ldbm backend compatvel com Berkey ou GNU DBM passwd acesso de leitura ao /etc/passwd shell programa externo acessado atravs do shell sql backend programvel em sql

4.3 Controle de Acesso A diretiva access controla o acesso a entradas e atributos LDAP atravs do slapd. O formato geral de uma linha access dado a seguir, em notao Backus extendida: <diretiva access> ::= access to <o_que> [by <quem> <acesso> <controle>]+ <o_que> ::= * | [ dn[.<estilo_do_alvo>]=<expressao_regular>][filter=<filtro_ldap>] [attrs=<lista_atributos>] <estilo_do_alvo> ::= regex | base | one | subtree | children <lista_atributos> ::= <atributo> | <atributo> , <lista_atributos> <atributo> ::= <nome_atributo> | entry | children <quem> ::= [* | anonymous | users | self | dn[.<estilo_do_assunto>]=<expressao_regular>] [dnatrr=<nome_atributo>] [group[/<classe_de_objeto>[/<nome_atributo>][.<estilo_basico

>]]=<expressao_regular>] [peername[.<estilo_basico>]=<expressao_regular>] [sockname[.<estilo_basico>]=<expressao_regular>] [domain[.<estilo_basico>]=<expressao_regular>] [sockurl[.<estilo_basico>]=<expressao_regular>] [set=<espec_conjunto>] [aci=<nome_atributo>] <estilo_do_assunto> ::= regex | exact | base | one | subtree | children <estilo_basico> ::= regex | exact <acesso> ::= [self] {<nivel>|<privlegio>} <nivel> ::= none | auth | compare | search | read | write <privilegio> ::= {=|+|-} {w|r|s|c|x}+ <controle> ::= [stop | continue | break ] onde a seo <o_que> define as entradas e/ou atributos ao qual a regra de acesso se aplica, a seo <quem> especifica a que entidades est sendo concedido o acesso, e a seo <acesso> especfica o tipo de acesso concedido. Mltiplas triplas <quem> <acesso> <controle> so suportadas, permitindo que vrias entidades possam ter diferentes tipos de acesso ao mesmo conjunto de entradas e atributos. 4.3.1 Do que se faz o controle de acesso A seo <o_que> de uma especificao de acesso determina as entradas e atributos ao que o controle de acesso se aplica. Entradas podem ser selecionadas de duas formas. A primeira por uma expresso regular sobre o nome distinto da entrada: dn=<expressao_regular>

Nota: a expresso que descreve o DN deve ser "normalizada" de acordo com a forma restrita de DN, segundo a RFC2253. Em particular, espaos e vrgulas extras no devem ser utilizados para separar componentes. Um exemplo de DN normalizado "cn=Babs Jensen,dc=exemplo,dc=com,dc=br". Um exemplo de um DN no-normalizado "cn=Babs Jensen; dc=exemplo; dc=com; dc=br".

A segunda opo selecionar as entradas atravs de um filtro que restrinja alguns atributos da entrada: filter=<filtro_ldap> onde <filtro_ldap> uma representao textual de um filtro de busca LDAP, como descrito na RFC2254. Atributos em uma entrada so selecionados atravs da incluso de lista de nomes atributos separada por vrgulas, no seletor <o_que>: attrs=<lista_atributos> Acesso a entrada em si deve ser concedido ou proibido utilizando o nome de atributo especial "entry". Nota-se que conceder acesso a um atributo no suficiente: acesso a prpria entrada atravs do atributo entry tambm necessrio. Os exemplos ao final desta seo so elucidativos.

Por ltimo, o smbolo especial "*" atua como seletor de todas as entradas. Ele utilizado quando nenhum outro seletor <o_que> foi fornecido. Ele equivalente a "dn=.*". 4.3.2 A quem se concede o acesso A seo <quem> identifica a(s) entidade(s) a que se concede acesso. Deve-se notar que entidades no so equivalente a entradas. A seguinte tabela resume os especificadores de entidades. Tabela 4.3 Identificadores de Entidades de Acesso Identificador Entidades * todas, incluindo usurios annimos e autenticados anonymous usurios annimos (no-autenticados) users usurios autenticados self usurio associado com a entrada em questo dn=<expressao_regular> usurios de acordo com a expresso regular O identificador DN recebe uma expresso regular a ser comparada com o DN normalizado da entidade corrente. dn=<expressao_regular> Um DN normalizado aquele do qual se removeu todos os espaos extras, e vrgulas so utilizadas para separar componentes RDN. Outros fatores de controle so suportados. Por exemplo, um componente <o_que> pode ser restringido por uma expresso regular que contm o domnio do cliente: domain=<expressao_regular> ou por uma entrada listada num atributo de valor do tipo DN qual o acesso se aplica: dnattr=<nome de atributo de valor DN> A especificao do tipo dnattr utilizada para ser dar acesso a uma entrada cujo DN listado num atributo da entrada (i. e., conceder acesso para a entrada de um grupo, para quem quer que esteja listado como proprietrio da entrada de grupo). 4.3.3 Tipos de acesso concedidos O tipo de <acesso> concedido pode estar entre os seguintes: Tabela 4.4 Nveis de acesso

Nvel Privilgios Descrio none sem acesso auth =x apenas autenticao compare =cx capacidade de realizar comparaes search =scx pode-se aplicar filtros de busca read =rscx pode-se ler resultados de buscas pode-se modificar e renomear write =wrscx entradas

Cada nvel implica em todos os nveis inferiores de acesso. Assim, por exemplo, a permisso do tipo write a uma entrada inclui permisses read, search, compare e auth. Entretanto, pode-se utilizar a especificao atravs de privilgios para se conceder outros tipos de permisso. 4.3.4 Interpretao dos controles de acesso No processo de avaliar-se se um requisitante deve ter acesso a uma entrada e/ou atributo, o slapd compara a entrada e/ou o atributo com os seletores <o_que> presentes no arquivo de configurao. Diretivas de acesso locais a base de dados atual so examinadas primeiro, seguidas das diretivas de acesso globais. Na mesma prioridade, diretivas de acesso so examinadas na ordem em que aparecem no arquivo de configurao. O slapd pra o processo com o primeiro seletor <o_que> que satisfaz a entrada e/ou o atributo. A diretiva de acesso correspondente a que ser utilizada para se conceder ou no o acesso. Em seguida, o slapd compara a entidade solicitante com os seletores <quem> da diretiva obtida acima, na ordem em que estes aparecem. Ele pra com o primeiro seletor <quem> que inclui o requisitante. Este determinar o tipo de acesso que a entidade requisitante ter para a entrada e/ou atributo. Por fim, o slapd compara o acesso concedido na clusula <acesso> com o acesso que o cliente necessita. Se a clusula permite um acesso maior ou igual, o acesso concedido, seno ele ser negado. A ordem de avaliao de diretivas de acesso faz com que sua localizao no arquivo de configurao seja importante. Se uma diretiva mais especfica do que outra no que diz respeito s entradas selecionadas, ela deve aparecer primeiro no arquivo de configurao. Da mesma forma, se um seletor <quem> mais especfico do que outro ele deve vir primeiro na diretiva de acesso. Os exemplos a seguir esclarecem esse ponto. 4.3.5 Exemplos de Controle de Acesso O estilo de definio de controle de acesso descrito acima relativamente poderoso. Esta seo contm alguns exemplos de seu uso. Comeando por exemplos simples: access * by * read Permite acesso de leitura para qualquer usurio. access to * by self write by anonymous auth by * read Esta diretiva permite que usurios modifiquem suas prprias entradas, permite autenticao, e permite leitura a usurios autenticados. Observa-se que apenas a primeira causa <quem> satisfeita utilizada. Assim, usurios annimos possuem direito a autenticao, mas no de leitura. A ltima clusula poderia ser "by users read" sem nenhuma diferena. O exemplo a seguir mostra o uso de uma expresso regular para selecionar as entradas por DN em duas diretivas de acesso, ordenadas por seu significado. access to dn=".*,dc=exemplo,dc=com,dc=br" by * search

access to dn=".*,dc=com,dc=br" by * read Acesso de leitura garantido para entradas dentro da subrvore dc=com,dc=br, exceto para as entradas da subrvore dc=exemplo,dc=com,dc=br, para as quais acesso de busca permitido. Nenhum acesso permitido para a entrada "dc=com,dc=br", pois nenhuma diretiva est de acordo com esse DN. Se a ordem dessas diretivas fosse invertida, a diretiva mais especfica nunca seria utilizada, pois todas entradas dc=exemplo,dc=com,dc=br so tambm entradas dc=com,dc=br. Observa-se tambm que, se nenhuma diretiva access ou nenhuma clusula <quem> satisfeita, acesso negado. Ou seja, cada diretiva access termina com uma clusula implcita "by * none", e cada lista de acesso termina com uma diretiva implcita "access to * by * none". O defaultaccess utilizado apenas se nenhum controle de acesso for especificado. O prximo exemplo mostra novamente a importncia da ordenao, tanto das diretivas quanto das clusulas <quem>. Ele tambm ilustra o uso de um seletor de atributo para conceder acesso a um atributo especfico, alm de vrios seletores <quem>. access to dn="(.*,)?dc=exemplo,dc=com,dc=br" attr=foneResidencial by self write by dn="(.*,)?dc=exemplo,dc=com,dc=br" search by domain=.*\.exemplo\.com\.br read access to dn="(.*,)?dc=exemplo,dc=com,dc=br" by self write by dn=".*,dc=exemplo,dc=com,dc=br" search by anonymous auth Este exemplo se aplica a entradas da subrvore "dc=exemplo,dc=com,dc=br". Para todos os atributos exceto foneResidencial, a prpria entrada pode escrev-los, outras entradas exemplo.com.br podem realizar buscas, e mais ningum tem acesso (pela clusula implcita "by * none"), exceto para autenticao/autorizao (a qual sempre feita anonimamente). O atributo foneResidencial pode ser escrito pelo usurio da entrada, pesquisado por outras entradas exemplo.com.br, lido por clientes conectando a partir do domnio exemplo.com.br, e de outra forma no pode ser lida (by * none implcito). Todos os outros tipos de acesso so restringidos pelo mplicito access to * by * none. 4.4 Exemplo de arquivo de configurao A seguir est um exemplo de arquivo de configurao, intercalado com texto explanatrio. Ele define duas bases de dados para lidar com partes diferentes da rvore X.500, e ambas so instncias de bases de dados LDBM. A numerao de linhas foi acrescentada para referncia e no consta do arquivo real. Primeiro, a seo de configurao global: 1. # exemplo de arquivo de configuracao - secao global 2. 3. 4. include /usr/local/etc/schema/core.schema referral ldap://root.openldap.org access to * by * read

A linha 1 um comentrio. A linha 2 inclui outro arquivo de configurao contendo o ncleo das definies de esquemas. A diretiva referral na linha 3 significa que consultas que no forem locais a uma das base de dados definidas a seguir ser redirecionada ao servidor LDAP rodando na porta padro (389), no servidor root.openldap.org. A linha 4 um controle de acesso global. Ela ser utilizada quando nenhum controle de acesso de uma base de dados puder ser utilizado, ou para objetos que no fazem parte de nenhuma base de dados (como a raiz DSE). A prxima seo do arquivo de configurao define um backend LDBM que ir responder consultas por objetos na poro da rvore "dc=exemplo,dc=com,dc=br". A base de dados ser replicada para dois slapds escravos. Sero mantidos ndices para diversos atributos, e o atributo senhaUsuario protegido contra acesso no autorizado. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. #definicao de um ldbm para exemplo.com.br database ldbm suffix "dc=exemplo,dc=com,dc=br" directory /usr/local/var/openldap rootdn "cn=Manager,dc=exemplo,dc=com,dc=br" rootpw segredo # diretivas de replicacao replogfile /usr/local/var/openldap/slapd.replog replica host=escravo1.exemplo.com.br:389 binddn="cn=Replicator,dc=example,dc=com" bindmethod=simple credentials=segredo replica host=escravo2.exemplo.com.br binddn="cn=Replicator,dc=example,dc=com" bindmethod=simple credentials=segredo # definicoes de indices de atributos index uid pres,eq index cn,sn,uid pres,eq,approx,sub index objectClass eq # definicoes de controle de acesso access to attr=senhaUsuario

25. 26. 27. 28. 29. 30. 31. 32.

by self write by anonymous auth by dn="cn=Admin,dc=example,dc=com" write by * none access to * by self write by dn="cn=Admin,dc=example,dc=com" write by * read

O incio da definicao da base de dados marcada pela palavra-chave database na linha 6. A linha 7 estabelece o sufixo DN para consultas a serem encaminhadas para esta base de dados. A linha 8 configura o diretrio onde iro residir os arquivos da base de dados. As linhas 9 e 10 identificam a entrada do "super usurio" da base de dados, e a senha associada. Esta entrada no sujeita a controle de acesso ou restries de tempo e espao. As linhas 11 at 18 configuram replicao. A linha 11 estabelece o arquivo de log de replicao (onde as mudanas na base de dados so "logadas" - o arquivo escrito por slapd e lido por slurpd). Linhas 12 a 14 especificam o hostname e a porta para um servidor replicado, o DN com que se identificar quando so feitas modificaes, o mtodo de autenticao (simples) e as credenciais (senha) para o binddn. As linhas 15 a 18 estabelecem um segundo local de replicao. O captulo Replicao com slurpd contm mais informaes sobre essas diretivas. As linhas 20 a 22 indicam os ndices a serem criados e mantidos para vrios atributos. As linhas 24 a 32 estabelecem controle de acesso para entradas na base de dados. Para todas as entradas, o atributo senhaUsuario pode ser escrito apenas pelo prprio usurio da entrada e a entrada "admin", mas pode ser lido por usurios autenticados. A prxima seo do arquivo de configurao exemplo define outra base de dados LDBM. Esta ir responder consultar para a subrvore dc=exemplo,dc=net,dc=br. Sem a regra na linha 38, acesso de leitura iria ser disponibilizado para usurios annimos devido regra na linha 4. 33. 34. 35. 36. 37. 38. #definicao ldbm para exemplo.net.br database ldbm suffix "dc=exemplo,dc=net,dc=br" directory /usr/local/var/ldbm-exemplo-net-br rootdn "cn=Manager,dc=example,dc=com" access to * by users read

5. Executando slapd slapd(8) foi projetado para ser executado como um servidor LDAP nico. Isso permite que o servidor se valha de otimizaes como cache e gerncia do acesso concorrente ao banco de dados, e preserve recursos do sistema. Execuo a partir do inetd(8) NO possvel. 5.1 Opes de linha de comando slapd(8) suporta inmeras opes de linha de comando conforme detalhado nas pginas de manual. Essa seo detalha algumas poucas opes mais freqentes. -f <filename> Essa opo especifica um arquivo de configurao alternativo para o slapd. O arquivo padro normalmente o /usr/local/etc/openldap/slapd.conf. -h <URLs> Essa opo especifica configuraes alternativas para o listener. O padro ldap:/// que implica que o LDAP rode sobre TCP em todas as interfaces e na porta LDAP padro, 389. Pode-se especificar uma porta ou outros esquemas de protocolos (assim como ldaps:// or ldapi://). Por exemplo, -h "ldaps:// ldap://127.0.0.1:666" ir criar dois listeners: um para LDAP sobre SSL em todas as interfaces no porta padro para LDAP/SSL, 636, e um para LDAP sobre TCP para localhost (interface de loopback) na porta 666. Hosts podem ser especificados usando a notao de endereos IPv4 ou hostnames. Valores para porta devem ser numricos. -n <service-name> Essa opo especifica um nome para o servio, vai ser usada para log, dentre outros propsitos. O nome de servio padro slapd. -l <syslog-local-user> Essa opo especifica o usurio local para o syslog(8). Valores podem ser LOCAL0, LOCAL1, LOCAL2, ..., e LOCAL7. O padro LOCAL4. Possivelmente essa opo no esteja disponvel em todos os sistemas. -u user -g group Essas opes especificam o usurio e grupo, respectivamente, que o slapd assume durante sua execuo. user pode ser um nome de usurio ou uid.group pode ser um nome de grupo ou gid. -r directory Essa opo especifica um diretrio para execuo. slapd ir executar um chroot(2) para esse diretrio depois que o listener for aberto, mas antes que leia qualquer arquivo de configurao ou inicie qualquer backend. -d <level> | ? Essa opo configura o nvel de depurao do slapd para <level>. Quando o nvel especificado um `?', os nveis de depurao so exibidos e o slapd encerra, indiferentemente das demais opes. Os nveis de depurao atuais so: Tabela 5.1: Nveis de depurao Nvel Descrio -1 ativa todos os nveis 0 sem depurao trace das chamadas de funes 1 2 depurao do tratamento dos pacotes

4 8 16 32 64 128 256 512 1024 2048

depurao com trace severo gerenciamento de conexes impresso de pacotes enviados e recebidos processamento de filtros de busca processamento do arquivo de configuraes processamento da lista de controle de acesso log de status de conexes/operaes/resultados log do status das entradas enviadas impresso da comunicao com os backends impresso de depurao do analisador de entradas (parser)

Pode-se ativar mltiplos nveis de depurao. Isso pode ser feito somando-se os valores dos nveis desejados, ou especificando-os separadamente. Nota: slapd deve ter sido compilado com a opo -DLDAP_DEBUG para que todos os nveis de depurao estejam disponveis

5.2 Iniciando slapd Em geral, slapd pode ser executado como segue: /usr/local/etc/libexec/slapd [<option>]* onde /usr/local/etc/libexec determinado pelo configure e <option> uma das opes descritas acima (ou no slapd(8)). A menos que se tenha especificado um nvel de depurao (incluindo o nvel 0), slapd ir automaticamente executar um fork e ser executado em segundo plano. 5.3 Parando o slapd Para encerrar o slapd seguramente, pode-se executar a linha de comando que segue: kill -INT `cat /usr/local/var/slapd.pid` onde /usr/local/var determinado pelo configure. Matar o slapd atravs de um mtodo mais drstico pode causar perda de dados ou corrupo da base. 6. Criao da Base de Dados e Ferramentas de Manuteno

H duas formas de se criar uma base de dados: Pode-se criar a base de dados on-line usando LDAP. Com esse mtodo, simplificase o incio e a adio de entradas usando um cliente LDAP. indicado para bases pequenas algumas centenas ou milhares de entradas, dependendo da necessidade. Esse mtodo til para bases que suportem atualizaes. Pode-se criar a base de dados off-line usando utilitrios especiais que o slapd prov. Esse mtodo indicado se h uma base grande a se criar, que consumiria muito tempo se fosse usado o mtodo LDAP, ou se a base no deva estar acessvel enquanto estiver sendo criada. Observe que no qualquer tipo de base de dados que suporta esses utilitrios. 6.1 Criando uma base de dados sobre LDAP Com esse mtodo, usa-se um cliente LDAP (por exemplo, o ldapadd) para adicionar entradas base. Deve-se garantir que a seguinte opo esteja no arquivo de configurao antes de se iniciar o slapd:

suffix <dn> Essa opo define que podem ser inseridas entradas base. Deve-se configurar essa opo para o DN da raiz da sub-rvore que se est tentando criar. Por exemplo: suffix "dc=example,dc=com" Deve-se assegurar que est corretamente configurado onde o arquivo de ndices dever ser criado: directory <directory> Por exemplo directory /usr/local/var/openldap-ldbm necessria a criao do diretrio com permisso de escrita para o slapd. necessrio configurar o slapd para que se possa conectar com um usurio de diretrio com permisso de adio de entradas base. Pode-se configurar o diretrio para suportar um super-usurio ou usurio root especial para esse propsito. Isso feito atravs das seguintes definies: rootdn <dn> rootpw <senha> Por exemplo rootdn "cn=Manager,dc=example,dc=com" rootpw secret Essas opes especificam um DN e senha que pode ser usado para autenticar como super-usurio da base (que pode fazer qualquer coisa). O DN e senha especificados iro atuar sem levar em considerao se uma entrada mencionada realmente existe ou se tem a senha dada. Isso resolve o problema de autenticao e adio de entradas antes da existncia de qualquer outra entrada. Deve-se garantir a existncia do ndice das definies que se deseja: index {<attrlist> | default} [pres,eq,approx,sub,none] Por exemplo, para indexar os atributos cn, sn, uid e objectclass, a seguinte diretiva index poderia ser utilizada index cn,sn,uid index objectClass pres,eq Depois de configurado, inicia-se o ldap para adicionar as entradas, usando um cliente qualquer. Para se adicionar uma entrada organizao e uma entrada cargo, deve-se criar um arquivo LDIF, com o seguinte contedo (arquivo entries.ldif): # Organization for Example Corporation dn: dc=example,dc=com objectClass: dcObject objectClass: organization dc: example o: Example Corporation description: The Example Corporation # Organizational Role for Directory Manager dn: cn=Manager,dc=example,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager e ento usa-se o comando para realmente adicionar a entrada criada: ldapadd -f entries.ldif -x -D "cn=Manager,dc=example,dc=com" -w secret Esse exemplo assume as configuraes descritas nos exemplos anteriores.

6.2 Criando uma base de dados off-line O segundo mtodo de criao de bases de dados trabalha off-line e utiliza-se das ferramentas descritas abaixo. Esse mtodo melhor se h muitas entradas a serem criadas na ordem de dezenas de milhares o que iria consumir um perodo inaceitvel de tempo, caso se optasse por realizar a adio usando o mtodo LDAP on-line, descrito acima. Essas ferramentas lem o arquivo de configurao do slapd e um arquivo de entrada, contendo um texto que representa as entradas a serem adicionadas. Para os tipos de bases que suportam essas ferramentas, elas produzem os arquivos contendo a base diretamente (caso contrrio deve-se usar o mtodo on-line). H inmeras opes de configurao importantes que devem ser verificadas no arquivo de configuraes: suffix <dn> Essa opo define que podem ser inseridas entradas base. Deve-se configurar essa opo para o DN da raiz da sub-rvore que se est tentando criar. Por exemplo: suffix "dc=example,dc=com" Deve-se assegurar que est corretamente configurado onde o arquivo de ndices dever ser criado: directory <directory> Por exemplo directory /usr/local/var/openldap-ldbm necessria a criao do diretrio com permisso de escrita para o slapd. necessrio configurar o slapd para que se possa conectar com um usurio de diretrio com permisso de adio de entradas base. Pode-se configurar o diretrio para suportar um super-usurio ou usurio root especial para esse propsito. Isso feito atravs das seguintes definies: rootdn <dn> rootpw <senha> Por exemplo rootdn "cn=Manager,dc=example,dc=com" rootpw secret Essas opes especificam um DN e senha que pode ser usado para autenticar um superusurio (que pode fazer qualquer coisa). O DN e senha especificados iro atuar sem levar em considerao se uma entrada mencionada realmente existe ou se tem a senha dada. Isso resolve o problema de autenticao e adio de entradas antes da existncia de qualquer outra entrada. Deve-se garantir a existncia do ndice das definies que se deseja: index {<attrlist> | default} [pres,eq,approx,sub,none] Por exemplo, para indexar os atributos cn, sn, uid e objectclass, a seguinte diretiva index poderia ser utilizada index cn,sn,uid press,eq,approx index objectClass eq 6.2.1 O programa slapadd Uma vez que foram realizadas essas configuraes, cria-se uma base primria e ndices associados pela execuo do slapadd: slapadd -l <inputfile> -f <slapdconfigfile> [-d <debuglevel>] [-n <integer>|-b <suffix>] Os argumentos tem o seguinte significado: -l <inputfile> Especifica o arquivo de entrada LDIF, contendo as entradas, no formato texto, a serem adicionadas.

-f <slapdconfigfile> Especifica o arquivo do configurao do slapd, diz onde e quais ndices devem ser criados. -d <debuglevel> Ativa a depurao, conforme for especificado em <debuglevel>. Os nveis de depurao so os mesmos do slapd. -n <databasenumber> Um argumento opcional que especifica que base modificar. A primeira base listada no arquivo de configurao 1, a segunda, 2. etc.. Por padro, a primeira base ldbm no arquivo de configurao usada. No deve ser utilizada com a opo b. -b <suffix> Um argumento opcional que especifica que base modificar. Prov um sufixo que comparado com a diretiva suffix para determinar o nmero da base. No deve ser usada em conjunto com a opon. 6.2.2 O programa slapindex Algumas vezes pode ser necessrio regerar os ndices. Isso possvel usando o slapindex, que pode ser invocado com a seguinte linha de comando: slapindex -f <slapdconfigfile> [-d <debuglevel>] [-n <databasenumber>|-b <suffix>] Onde as opes -f, -d, -n e -b so as mesmas do slapadd. slapindex reconstri todos os ndices baseando-se no contedo da base de dados atual 6.2.3 O programa slapcat O programa slapcat usadado para gerar um arquivo LDIF da base atual. Isso til qdo se deseja criar uma base de backup inteligvel ao ser humano ou quando se quer editar a base off-line. O programa pode ser invocado como segue: slapcat -l <filename> -f <slapdconfigfile> [-d <debuglevel>] [-n <databasenumber>|-b <suffix>] onde -n ou -b so usados para seliecionar a base no arquivo slapd.conf especificado pelo uso da opo -f. O correspondente LDIF de sada escrito na sada padro (stdout) ou em um arquivo especificado usando a opo l. 6.3 O formato LDIF para entradas O Formato de Intercmbio de Dados LDAP (LDIF) usado para representar entradas LDAP em um simples arquivo texto. Detalhes da especificao podem ser obtidos em RFC2849. O formato bsico da entrada : # comment dn: <distinguished name> <attrdesc>: <attrvalue> <attrdesc>: <attrvalue> ...

Linhas iniciadas pelo caracter '#' so comentrios. Uma descrio de atributo pode ser um simples tipo de atributo como cn ou objectClass ou 1.2.3 (um OID associdado com um tipo de atributo) ou pode incluir opes como cn;lang_en_US ou userCertificate;binary. Uma linha pode ser continuada iniciando-se a seguinte com um espao ou tab. Por exemplo: dn: cn=Barbara J Jensen,dc=example,dc= com cn: Barbara J Jensen equivalente a: dn: cn=Barbara J Jensen,dc=example,dc=com cn: Barbara J Jensen Mltiplos valores de atributos podem ser especificados em linhas separadas, por exemplo: cn: Barbara J Jensen cn: Babs Jensen Se um <attrvalue> contm um caracter no-imprimvel ou inicia com um espaco, dois pontos (':'), ou menor que ('<'), o <attrdesc> seguido por um duplo dois pontos (::) e a codificao base64 do valor. Por exemplo, o valor " begins with a space" seria codificado como segue: cn:: IGJlZ2lucyB3aXRoIGEgc3BhY2U= Pode-se, tambm, especificar uma URL contendo o valor do atributo. Por exemplo, p valor jpegPhoto que segue, deve ser obtido do arquivo/path/to/file.jpeg. cn:< file:///path/to/file.jpeg Mltiplas entradas no mesmo arquivo LDIF so separadas por linhas em branco. Segue um exemplo de um arquivo LDIF contendo trs entradas: # Barbara's Entry dn: cn=Barbara J Jensen,dc=example,dc=com cn: Barbara J Jensen cn: Babs Jensen objectClass: person sn: Jensen # Bjorn's Entry dn: cn=Bjorn J Jensen,dc=example,dc=com cn: Bjorn J Jensen cn: Bjorn Jensen objectClass: person sn: Jensen # Base64 encoded JPEG photo jpegPhoto:: /9j/4AAQSkZJRgABAAAAAQABAAD/2wBDABALD A4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQ ERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVG # Jennifer's Entry dn: cn=Jennifer J Jensen,dc=example,dc=com cn: Jennifer J Jensen cn: Jennifer Jensen objectClass: person sn: Jensen # JPEG photo from file jpegPhoto:< file:///path/to/file.jpeg

Note que jpegPhoto na entrada do Bjorn est codificada em base 64 e jpegPhoto na entrada de Jennifer deve ser obtida a partir da URL especificada. 7. Construindo um Servio de Diretrio Distribudo Em muitos casos, a execuo de um nico slapd(8) que possua uma sub-rvore de dados inteira o suficiente. Mas freqentemente desejvel ter umslapd se referindo a outros servios de diretrio, para uma certa parte da rvore (independente de esta estar ou no usando slapd). slapd tem suporte a informaes para reconhecimento de subordinados e superiores. 7.1 Informao para reconhecimento de Subordinados Informaes para reconhecimento de subordinados podem ser dadas para se delegar uma sub-rvore. Informao para reconhecimento de subordinados so mantidas no diretrio como objetos especiais de orientao no ponto que foi delegado. O objeto de orientao atua como um ponto de delegao, aglutinando os dois servios de diretrios. Esse mecanismo permite que sejam construdos servios de diretrios hierrquicos. Um objeto de orientao tem uma classe de objeto estrutural referral e tem o mesmo DN da sub-rvore delegada. Geralmente, o objeto de orientao tambm possuir uma classe de objeto auxiliar extensibleObject. Isso permite que a entrada contenha um valor RDN apropriado. Se o servidor a.example.net possui dc=example,dc=net e quer delegar a subrvore ou=subtree,dc=example,dc=net para outro servidor b.example.net, o seguinte objeto de orientao nomeado seria adicionado a a.example.net: dn: dc=subtree,dc=example,dc=net objectClass: referral objectClass: extensibleObject dc: subtree ref: ldap://b.example.net/dc=subtree,dc=example,dc=net/ O servidor usa essa informao para gerar a orientao e continuar pesquisando nos servidores subordinados. 7.2 Informao para reconhecimento do Superior Informao para reconhecimento do Superior pode ser especificada usando-se a diretiva referral. O valor a lista de URIs referentes ao servio de diretrio superior. Para servidores sem superiores imediatos, como o a.example.net no nosso exemplo acima, o servidor pode ser configurado para usar servio de diretorio com global knowledge (conhecimento global), assim como o OpenLDAP Root Service (http://www.openldap.org/faq/index.cgi?file=393). referral ldap://root.openldap.org/ Entretanto, como a.example.net o superior imediato para b.example.net, b.example.net seria configurado como segue: referral ldap://a.example.net/ O servidor usa essa informao para gerar a orientao para operaes que atuem acima de seu escopo. 7.3 O Controle ManageDsaIT Adio, alterao e remoo de objetos de orientao so feitos, em geral, usandose ldapmodify(1) ou ferramentas similares, que suportem o controle ManageDsaIT. O

controle ManageDsaIT informa ao servidor que se pretende gerenciar um objeto de orientao como uma entrada regular. Isso resguarda o servidor de enviar um resultado de orientao para requisies de consulta ou atualizaes em objetos de orientao. A opo -M do ldapmodify(1) (e outras ferramentas) ativa o ManageDsaIT. Por exemplo: ldapmodify -M -f referral.ldif -x -D "cn=Manager,dc=example,dc=net" -W ou com ldapsearch(1): ldapsearch -M -b "dc=example,dc=net" -x "(objectclass=referral)" '*' ref Nota: o atributo ref est operacional e deve ser explicitamente requerido quando se deseja pesquisar o resultado. 8. Replicacao com slurpd Em certas configuraes, uma nica instncia do slapd pode ser insuficiente para responder a quantidade de clientes que necessitam de servio de diretrio via LDAP. Em muitas instalaes, por exemplo, h mltiplos servidores slapd: um mestre e um ou mais escravos. Pode-se configurar o DNS de tal forma que o lookup de ldap.exemplo.com.br retorne o endereo IP de um desses servidores de cada vez, distribuindo a carga entre esse servidores (ou simplesmente entre os escravos). Esse arranjo mestre/escravo se torna num modo simples e efetivo de aumentar-se capacidade, disponibilidade e confiabilidade do servio. O programa slurpd possibilita que um mestre slapd propague modificaes para instncias escravas do slapd, implementando o esquema de replicao mestre/escravo descrito acima. slurpd executa no mesmo computador que a instncia mestre do slapd. 8.1 Introduo O slurpd realiza o servio de replicao utilizando-se do mesmo canal que os clientes utilizam para acessar os servidores escravos, ou seja, atravs do protocolo LDAP. O modo mais fcil de se explicar o mecanismo com um exemplo, que vem a seguir: Exemplo de cenrio de replicao: 1. O cliente LDAP envia uma operao de modificao ao slapd escravo. 2. O slapd escravo retorna uma referncia para o cliente, redirecioando-o para o slapd mestre. 3. O cliente LDAP envia o pedido de modificao para o slapd mestre. 4. O slapd mestre realiza a operao, escreve a mudana no log de replicao e retorna um cdigo de sucesso para o cliente. 5. O processo slurpd descobre que uma nova entrada foi posta no final no arquivo do log de replicao, l a entrada do log de replicao, e envia a mudana para o escravo via LDAP. 6. O slapd escravo realiza a operao e retorna um cdigo de sucesso para o processo slurpd. 8.2 Logs de Replicao Quando o slapd configurado para gerar um arquivo de log de replicao, ele escreve um arquivo contendo registros de modificaes no formato LDIF. O log de replicao informa o local da(s) rplica(s), um carimbo de tempo, o DN da entrada sendo modificada, e uma srie de linhas que especificam as mudanas a serem realizadas. No exemplo abaixo, Barbara (uid=bjensen) substituiu o valor de description. A modificao deve ser

propagada para a instncia do slapd rodando em escravo.exemplo.com.br. Modificaes em vrios atributos operacionais, como modifiersName e modifyTimestamp, so includos no registro de modificao e sero propagados ao slapd escravo. replica: escravo.exemplo.com.br:389 time: 809618633 dn: uid=bjensen,dc=exemplo,dc=com,dc=br changetype: modify replace: multiLineDescription description: A dreamer... replace: modifiersName modifiersName: uid=bjensen,dc=exemplo,dc=com,dc=br replace: modifyTimestamp modifyTimestamp: 20000805073308Z As modificaes nos atributos operacionais modifiersName e modifyTimestamp foram adcionadas pelo slapd mestre. 8.3 Opces de linha de comando Esta seo detalha opes de linha de comando do slurpd utilizadas com freqncia. -d <nivel> | ? Esta opo atribui o nvel de depurao do slurpd para <nivel>.Quando o nvel um caractere `?', os nveis de depurao disponveis so exibidos e slapd termina, independentemente de qualquer outra opo fornecida. Os nveis de depurao atuais (subconjunto daqueles presentes no slapd) so: Table 8.1: Nveis de depurao Nvel Descrio 4 depurao de chamadas intensa 64 processamento do arquivo de configurao 65535 habilita toda a depurao Nveis de depurao podem ser adicionados. Isto , se desejado uma depurao do rastro de execuo (chamadas) e do processamento do arquivo de configurao, pode-se atribuir a soma desses dois nveis (neste caso, 68). -f <nome_de_arquivo> Desta forma possvel utilizar um arquivo de configurao do slapd alternativo. O slurpd no possui arquivo de configurao prprio, e todos seus dados de configurao so lidos do arquivo de configurao do slapd. -r <nome_de_arquivo> Esta opo estabelece um arquivo de log de replicao do slapd alternativo. Em condies normais, o slurpd obtm o nome do arquivo da configurao do slapd. Entretanto, pode ser desejado substituir esse nome, com a opo -r, para fazer com que o slurpd processe um log de replicao diferente. A seo sobre Operao Avanada do slurpd, mais adiante, discute o uso dessa opo. -o Operao em modo de "rajada". Em seu funcionamento normal, slurpd termina o processamento de um log de replicao, e permanece ativo, checando periodicamente se

novas entradas foram adicionadas ao log de replicao. Em modo rajada, em comparao, slurpd processa o log e termina imediatamente. Se a opo -o utilizada, o nome do arquivo deve ser explicitamente fornecido com a opo -r.A seo Modo rajada e arquivos rejeitados tem uma discusso desse modo de operao. -t <directory> Estabelece um outro diretrio para as cpias temporrias que o slurpd faz de logs. A localizao padro /usr/tmp. 8.4 Configurando slurpd e uma instncia escrava do slapd Para obter-se um slapd realizando uma rplica, deve-se configurar as instncias mestre e escravo do slapd para replicao, e para o processo mestre, para que se possa copiar a base de dados. Finalmente, o slapd mestre reiniciado, depois o slapd escravo, e ento o slurpd. Estes passos so detalhados nas sees seguintes.Pode-se configurar quantos escravos slapd quantos forem julgados convenientes. 8.4.1 Configurando o slapd mestre A seo seguinte supe a existncia de um slapd configurado corretamente e rodando. Para que se configure o servidor slapd como um mestre de replicao, devem ser feitas as seguintes mudanas ao arquivo slapd.conf: 1. Adicionar uma diretiva replica para cada rplica. O parmetro binddn= deve corresponder opo updatedn no arquivo de configurao do slapd escravo correspondente, e deve nomear uma entrada com permisso de escrita na base de dados escrava (i. e., uma entrada listada como rootdn, ou com acesso permitido via diretivas access no arquivo de configurao do escravo. 2. Adicione uma diretiva replogfile, que informar ao slapd em que arquivo "logar" as modificaes, e ao slurpd que arquivo ele deve ler. 8.4.2 Configurando o slapd escravo Deve-se instalar o programa do slapd no computador que ser o servidor slapd escravo. A configurao do servidor escravo dever ser idntica do mestre, com as seguintes excees: 1. No ser includa uma diretiva replica. Embora seja possvel criar "cascatas" de rplicas, na maioria dos casos isto no aconselhvel. 2. No ser usada uma diretiva replogfile. 3. Deve-se incluir uma linha updatedn. O DN dado deve corresponder ao DN utilizado no parmetro binddn= da diretiva replica= correspondente, no arquivo de configurao do slapd mestre. 4. Deve-se ter certeza de que o DN utilizado na diretiva updatedn tem permisso de escrita na base de dados (i. e., est listado como rootdn ou tem permisso de acesso por diretivas access). 5. Deve utilizar a diretiva updateref para definir a URL que o escravo ir retornar quando um pedido de modificaes for recebido. 8.4.3 Parada do mestre slapd Para que se tenha certeza de que o escravo ir iniciar com uma cpia exata dos dados do slapd mestre, deve ser feita uma parada do slapd mestre. Isto feito enviando-se um sinal de interrupo ao processo do slapd mestre, com kill -INT <pid>, onde <pid> o nmero de identificao do processo mestre slapd

Se for conveniente, pode-ser restartar o mestre em modo de apenas leitura enquanto feita a replicao da base de dados. Durante esta fase do processo, o slapd mestre ir retornar um erro "unwilling to perform" para clientes que tentem modificar dados. 8.4.4 Cpia da base de dados do slapd mestre para o escravo Numa base de dados baseada em LDBM, devem ser copiados todos os arquivos da base de dados localizados no diretrio definido por directory no slapd.conf. Arquivos da base de dados tero um sufixo diferente dependendo do pacote de banco de dados utilizado. Atualmente, as opes so: Table 8.2: Sufixos de arquivos de bases de dados Sufixo Base de dados dbb Berkeley DB B-tree backend dbh Berkeley DB hash backend gdbm GNU DBM backend Em geral, deve-se copiar cada arquivo encontrado no diretrio da base de dados, a no ser que seja sabido que ele no utilizado pelo slapd. Nota: O processo de cpia assume servidores homogneos com instalaes LDAP identicamente configuradas.

8.4.5 Configurar o slapd mestre para replicao Para se configurar o slapd para gerar um arquivo de replicao, deve-se adicionar uma diretiva replica ao arquivo de configurao do slapd mestre. Por exemplo, se desejado propagar as modificaes ao slapd rodando no computador escravo.exemplo.com.br: replica host=escravo.exemplo.com.br:389 binddn="cn=Replicator,dc=example,dc=com" bindmethod=simple credentials=segredo Neste exemplo, mudanas ocorridas sero enviadas para a porta 389 (a porta LDAP padro) no computador escravo.exemplo.com.br. O processo slurpd ir se conectar no slapd escravo com a identidade "cn=Replicator,dc=exemplo,dc=com,dc=br", utilizando mtodo de autenticao simples com senha "segredo". O DN utilizado na diretiva binddn= obrigatoriamente deve existir na base de dados do slapd escravo (ou ser o rootdn definido no arquivo de configurao do slapd), para que a conexo possa ter sucesso. O DN tambm deve ser listado como o updatedn da base de dados escrava no slapd.conf. Nota: O uso de mtodos mais "fortes" de autenticao e meio de transporte de dados seguro sugerida fortemente. 8.4.6 Reincio do slapd mestre e do slapd escravo. Reinicie o processo do slapd mestre. Para verificar se ele est gerando logs de replicao, deve-se fazer uma modificao em qualquer entrada na base de dados, e os dados devem ter sido escritos para o arquivo de log. 8.4.7 Reincio do slurpd Redispara-se o processo slurpd. O slurpd dever enviar imediatamente a modificao de teste realizada no slapd mestre. Deve-se verificar o arquivo de log do escravo para se ter certeza de que a modificao foi enviada. slurpd -f <masterslapdconfigfile>

8.5 Operao avanada do slurpd 8.5.1 Erros de replicao Quando o slurpd propaga uma modificao para um slapd escravo e recebe um cdigo de erro em resposta, ele escreve o motivo do erro e o registro a ser replicado para um arquivo de "rejeitados". O arquivo reject localizado no mesmo diretrio que o arquivo de log da rplica, e tem o mesmo nome, mas com a string ".rej" adicionada. Por exemplo, para uma rplica rodando no computador escravo.exemplo.terra.com.br, porta 389, o arquivo .rej, se existir, ser noemado: /usr/local/var/openldap/replog.slave.example.com:389.rej Uma entrada de exemplo do log de rejeitados: ERROR: No such attribute replica: escravo.exemplo.com.br:389 time: 809618633 dn: uid=bjensen,dc=example,dc=com changetype: modify replace: description description: A dreamer... replace: modifiersName modifiersName: uid=bjensen,dc=exemplo,dc=com,dc=br replace: modifyTimestamp modifyTimestamp: 20000805073308Z Este o mesmo formato utilizado nas entradas do log de replicao, mas com uma linha do tipo ERROR adicionada ao incio da entrada. 8.5.2 Modo de rajada e arquivos de rejeies possvel utilizar slurpd para processar um log de falhas com sua opo de modo de "rajada". Normalmente, o slurpd procura por mais registros de replicao sendo adicionados ao arquivo do log de replicao. No modo rajada, ao contrrio, slurpd processa um nico arquivo de log e termina. Slurpd ignora linhas do tipo ERROR no incio das entradas do log de replicao, assim no necessrio edit-las antes de se reprocessar o log de rejeies. Para se utilizar o modo rajada, informa-se o nome do log de rejeies na linha de comando, como argumento para a opo -r, e se estabelece o modo rajada com a opo o. Por exemplo, para reprocessar o log de falhas /usr/local/var/openldap/replog.escravo.exemplo.com.br:389 e terminar, usa-se o comando: slurpd -r /usr/tmp/replog.escravo.exemplo.com.br:389 -o