<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<?xml-stylesheet href="docbook.xsl" type="text/xsl"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book lang="pt_BR">
  <bookinfo>
    <title>Instalando um servidor OpenLDAP</title>
    <authorgroup>
      <author>
        <firstname>Leonardo</firstname>
        <othername>Serra Maciel de</othername>
        <surname>Campos</surname>
        <affiliation>
          <address>
            <email>linuxbh@brfree.com.br</email>
          </address>
        </affiliation>
      </author>
    </authorgroup>
    <revhistory>
      <revision>
        <revnumber>0.1</revnumber>
        <date>2004-03-12 10:43:31 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
      <revision>
        <revnumber>0.2</revnumber>
        <date>2004-08-21 11:37:12 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
      <revision>
        <revnumber>0.3</revnumber>
        <date>2004-09-20 11:37:12 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
      <revision>
        <revnumber>0.4</revnumber>
        <date>2004-09-22 11:00:04 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
      <revision>
        <revnumber>0.5</revnumber>
        <date>2004-09-22 23:14:09 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
      <revision>
        <revnumber>0.6</revnumber>
        <date>2004-09-23 01:08:11 -0300</date>
        <authorinitials>Leonardo Serra Maciel de Campos</authorinitials>
      </revision>
    </revhistory>
    <copyright>
      <year>2004</year>
      <holder>Leonardo Serra Maciel de Campos</holder>
    </copyright>
    <legalnotice>
      <para>Este documento é licenciado sobre a licença de Atribuição-Compartilhamento da Creative Commons. Para ver uma cópia desta licença, visite <ulink url="http://creativecommons.org/licenses/by-sa/2.0/"/> ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.</para>
    </legalnotice>
    <abstract>
      <para>Este documento visa ensinar como instalar e configurar um servidor OpenLDAP.</para>
    </abstract>
  </bookinfo>
  <dedication>
    <para>Dedico este documento a todas as pessoas que realmente acreditam na filosofia do <glossterm baseform="Logicial">Logicial</glossterm> Livre.</para>
  </dedication>
  <chapter>
    <title>Introdução</title>
    <sect1>
      <title>O que é LDAP?</title>
      <para>LDAP significa Lightweight Directory Access Protocol, ou seja, Protocolo de Leve Acesso a Diretórios. Como o nome sugere, é um protocolo leve para acessar serviços de diretório. O LDAP roda em cima do protocolo TCP/IP ou outras conexões de transferência de serviços.</para>
    </sect1>
    <sect1>
      <title>O que é OpenLDAP?</title>
      <para>O OpenLDAP é um esforço colaborativo da comunidade Open Source para desenvolver um sistema de aplicações LDAP. O fundador por este projeto é o americano Kurt Zeilenga. Hoje existem vários desenvolvedores engajados neste sistema que está se tornando um padrão universal.</para>
    </sect1>
  </chapter>
  <chapter>
    <title>Ambiente</title>
    <para>Será presumido que o seu sistema <glossterm baseform="Debian GNU/Linux">Debian GNU/Linux</glossterm> e o aptitude estão corretamente configurados.</para>
    <warning>
      <para>Todos os comandos deverão ser executados pelo usuário root!</para>
    </warning>
    <para>A tabelo abaixo mostra as versões de cada <glossterm baseform="Logicial">logicial</glossterm> usado.</para>
    <table>
      <title>Versão dos logiciais</title>
      <tgroup cols="2">
        <thead>
          <row>
            <entry>
              <glossterm baseform="Logicial">Logicial</glossterm>
            </entry>
            <entry>Versão</entry>
          </row>
        </thead>
        <tbody>
          <row>
            <entry>OpenLDAP (slapd)</entry>
            <entry>2.1.30-3</entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <para>A tabelo abaixo mostra as principais características do ambiente onde foi feito esta documentação.</para>
    <table>
      <title>Ambiente</title>
      <tgroup cols="2">
        <tbody>
          <row>
            <entry>Distribuição GNU/Linux</entry>
            <entry>Debian Sarge</entry>
          </row>
          <row>
            <entry>Endereço do servidor OpenLDAP</entry>
            <entry>
              <replaceable>ldap.exemplo.com.br</replaceable>
            </entry>
          </row>
          <row>
            <entry>Nome do domínio</entry>
            <entry>
              <replaceable>exemplo.com.br</replaceable>
            </entry>
          </row>
          <row>
            <entry>Sufixo da base do servidor OpenLDAP</entry>
            <entry>
              <replaceable>dc=exemplo,dc=com,dc=br</replaceable>
            </entry>
          </row>
          <row>
            <entry>Usuário administrador do servidor OpenLDAP</entry>
            <entry>
              <replaceable>cn=admin,dc=exemplo,dc=com,dc=br</replaceable>
            </entry>
          </row>
          <row>
            <entry>Senha do usuário administrador do servidor OpenLDAP</entry>
            <entry>
              <replaceable>asdf</replaceable>
            </entry>
          </row>
          <row>
            <entry>Pasta da base do servidor OpenLDAP</entry>
            <entry>
              <filename>
                <replaceable>/var/lib/ldap</replaceable>
              </filename>
            </entry>
          </row>
        </tbody>
      </tgroup>
    </table>
    <note>
      <para>Usaremos palavras <replaceable>desta maneira</replaceable> para indicar substituição.</para>
    </note>
  </chapter>
  <chapter>
    <title>Instalação</title>
    <orderedlist numeration="arabic">
      <listitem>
        <para>Execute o seguinte comando para instalar o servidor OpenLDAP:</para>
        <screen><prompt>#</prompt> <userinput>aptitude install slapd ldap-utils db4.2-util</userinput></screen>
        <para>Será instalado o pacote Debian para o OpenLDAP e ferramentas relacionadas. O DebConf ira fazer algumas perguntas, responda de acordo com a tabela abaixo.</para>
        <table>
          <title>DebConf</title>
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Pacote</entry>
                <entry>Questão</entry>
                <entry>Resposta</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>slapd</entry>
                <entry>Enter your DNS domain name</entry>
                <entry>
                  <replaceable>exemplo.com.br</replaceable>
                </entry>
              </row>
              <row>
                <entry>slapd</entry>
                <entry>Enter the name of your organization</entry>
                <entry>
                  <replaceable>exemplo.com.br</replaceable>
                </entry>
              </row>
              <row>
                <entry>slapd</entry>
                <entry>Admin password</entry>
                <entry>
                  <replaceable>asdf</replaceable>
                </entry>
              </row>
              <row>
                <entry>slapd</entry>
                <entry>Verify password</entry>
                <entry>
                  <replaceable>asdf</replaceable>
                </entry>
              </row>
              <row>
                <entry>slapd</entry>
                <entry>Allow LDAPv2 protocol</entry>
                <entry>No</entry>
              </row>
            </tbody>
          </tgroup>
        </table>
      </listitem>
    </orderedlist>
  </chapter>
  <chapter>
    <title>Configuração</title>
    <orderedlist numeration="arabic">
      <listitem>
        <itemizedlist>
          <para>Edite o arquivo <filename>/etc/ldap/slapd.conf</filename>.</para>
          <listitem>
            <para>Iremos configurar qual é a base padrão para pesquisas, para isto abaixo da linha:</para>
            <screen>loglevel        0</screen>
            <para>Acrescente as seguintes linhas:</para>
            <screen>
# Search base
defaultsearchbase  <replaceable>dc=exemplo,dc=com,dc=br</replaceable>
</screen>
          </listitem>
          <listitem>
            <para>Iremos configurar parâmetros para a base do tipo bdb, para isto abaixo da linha:</para>
            <screen>database        bdb</screen>
            <para>Acrescente as seguintes linhas:</para>
            <para/>
            <screen>
cachesize       5000
checkpoint      1 60    
mode            0600
</screen>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <para>É necessário reiniciar o servidor OpenLDAP para carregar as novas configurações, para isto execute:.</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd restart</userinput></screen>
      </listitem>
    </orderedlist>
  </chapter>
  <chapter>
    <title>Recuperando a base</title>
    <para>Pode acontecer da base do servidor OpenLDAP corromper, quando isto acontecer execute:</para>
    <orderedlist numeration="arabic">
      <listitem>
        <para>Parar o servidor OpenLDAP:</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd stop</userinput></screen>
      </listitem>
      <listitem>
        <para>Entrar na pasta da base do servidor OpenLDAP:</para>
        <screen><prompt>#</prompt> <userinput>cd <filename><replaceable>/var/lib/ldap</replaceable></filename></userinput></screen>
      </listitem>
      <listitem>
        <para>Recuperando a base:</para>
        <screen><prompt>#</prompt> <userinput>db4.2_recover</userinput></screen>
      </listitem>
      <listitem>
        <para>Iniciar o servidor OpenLDAP:</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd start</userinput></screen>
      </listitem>
    </orderedlist>
  </chapter>
  <chapter>
    <title>Comandos úteis</title>
    <itemizedlist>
      <listitem>
        <para>Para reiniciar o servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd restart</userinput></screen>
      </listitem>
      <listitem>
        <para>Para parar o servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd stop</userinput></screen>
      </listitem>
      <listitem>
        <para>Para iniciar o servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>invoke-rc.d slapd start</userinput></screen>
      </listitem>
      <listitem>
        <para>Para criar uma copia de segurança da base do servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>slapcat &gt; <filename>copia.ldif</filename></userinput></screen>
        <warning>
          <para>A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!</para>
        </warning>
      </listitem>
      <listitem>
        <para>Para restaurar uma copia de segurança da base do servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>slapadd -l <filename>copia.ldif</filename></userinput></screen>
        <warning>
          <para>A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!</para>
        </warning>
        <warning>
          <para>Após restaurar uma copia de segurança, não esqueça de reindexar a base do servidor OpenLDAP!</para>
        </warning>
      </listitem>
      <listitem>
        <para>Para reindexar a base do servidor OpenLDAP execute:</para>
        <screen><prompt>#</prompt> <userinput>slapindex</userinput></screen>
        <warning>
          <para>A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!</para>
        </warning>
      </listitem>
      <listitem>
        <para>Para recuperar a base do servidor OpenLDAP, dentro da pasta <filename><replaceable>/var/lib/ldap</replaceable></filename> execute:</para>
        <screen><prompt>#</prompt> <userinput>db4.2_recover</userinput></screen>
        <warning>
          <para>A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!</para>
        </warning>
      </listitem>
    </itemizedlist>
  </chapter>
  <chapter>
    <title>Apêndice</title>
    <sect1>
      <title>Bibliografia</title>
      <para>Os seguintes sítios foram usados como base para a criação desta documentação</para>
      <itemizedlist>
        <listitem>
          <para>
            <ulink url="http://www.openldap.org">Projeto OpenLDAP</ulink>
          </para>
        </listitem>
        <listitem>
          <para>
            <ulink url="http://www.ldap.org.br">Projeto LDAP Brasil</ulink>
          </para>
        </listitem>
        <listitem>
          <para>
            <ulink url="http://people.debian.org/~torsten/ldapnss.html"/>
          </para>
        </listitem>
        <listitem>
          <para>
            <ulink url="http://aqua.subnet.at/~max/ldap/"/>
          </para>
        </listitem>
      </itemizedlist>
    </sect1>
    <sect1>
      <title>Glossário</title>
      <glosslist>
        <glossentry>
          <glossterm>Debian GNU/Linux</glossterm>
          <glossdef>
            <para>O <ulink url="http://www.debian.org">Debian</ulink> é um sistema operacional (SO) livre para seu computador. Um sistema operacional é um conjunto de programas básicos e utilitários que fazem seu computador funcionar. O Debian usa o kernel (núcleo de um sistema operacional), <ulink url="http://www.kernel.org">Linux</ulink>, mas a maior parte das ferramentas do SO vêm do projeto <ulink url="http://www.gnu.org">GNU</ulink>; daí o nome GNU/Linux.</para>
          </glossdef>
        </glossentry>
        <glossentry>
          <glossterm>Logicial</glossterm>
          <glossdef>
            <para>Conjunto de instruções lógicas. Na informática designa um conjunto de instruções lógicas e suas dependências, também conhecido como programa ou sistema de computador.</para>
            <para>Esta palavra é pouco usada no Brasil, onde se usa muito a expressão "Software".</para>
            <para>Origem: <ulink url="http://pt.wikipedia.org/wiki/Logicial">Wikipédia, a enciclopédia livre.</ulink></para>
          </glossdef>
        </glossentry>
      </glosslist>
    </sect1>
  </chapter>
</book>
