You are on page 1of 62

Curso de OpenLdap

Reinaldo Gil Lima de Carvalho

OpenLdap

Sumrio a
Sumrio a 1 Introduo ao curso ca 1.1 Licena do material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 1.2 Compilao de software X software da distribuiao/sistema operacional . . . . . . . . ca c 1.3 Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 LDAP - Lightweight Directory Access Protocol 2.1 Base de dados LDAP - Directory Information Base (DIB) (RFC-4512) 2.2 LDIF - LDAP Data Interchange Format (RFC-2849) . . . . . . . . . 2.3 Schema (RFC-4512) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Protocolo LDAP - Lightweight Directory Access Protocol (RFC-4511) 2.5 LDAP lter (sintxe de pesquisa) (RFC4515) . . . . . . . . . . . . . a 2.6 Directory User Agent (DUA) . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 ldapsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2 ldapadd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.3 ldapdelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.4 ldapmodify . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.5 ldappasswd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.6 ldapmodrdn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.7 ldapcompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 DSA-specic Entry (DSE) . . . . . . . . . . . . . . . . . . . . . . . . 3 Introduo ao OpenLDAP (DSA) ca 3.1 Instalaao . . . . . . . . . . . . . . . . . . . . . c 3.2 Recriando o registro ra como organization . . z 3.3 Inserindo registros organizationalUnit . . . . . . 3.4 Inserindo registros inetOrgPerson . . . . . . . . 3.5 Removendo registros . . . . . . . . . . . . . . . 3.6 Inserindo registros posixAccount . . . . . . . . . 3.7 Adicionando objectClass posixAccount a registros 3.8 Inserindo registros posixGroup . . . . . . . . . . 3.9 Alterando o Relative Distinguished Name - RDN 3.10 Alterando o Distinguished Name - DN . . . . . 3.11 Inserindo registros groupOfNames . . . . . . . . 4 OpenLdap - Directory System Agent (DSA) 4.1 Congurao . . . . . . . . . . . . . . . . . . ca 4.2 Mltiplas bases . . . . . . . . . . . . . . . . . u 4.2.1 O registro raiz da database #2 . . . . 4.3 TLS/SSL . . . . . . . . . . . . . . . . . . . .
Curso de OpenLdap

2 4 4 5 6 7 7 9 9 13 14 15 16 16 17 17 18 18 19 19 21 22 23 24 26 26 27 27 28 28 29 29 30 30 33 34 35 2

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Curso de OpenLdap 4.3.1 Consultas com TLS . . . 4.3.2 Consultas com SSL . . . N de log . . . . . . . . . . . vel Indices . . . . . . . . . . . . . . Backend HDB/BDB - dbcong Replicaao (RFC4533) . . . . . c 4.7.1 Master . . . . . . . . . . 4.7.2 Slave . . . . . . . . . . . ACLs . . . . . . . . . . . . . . . 4.8.1 DN match . . . . . . . . 4.8.2 Who match . . . . . . . 4.8.3 Access . . . . . . . . . . 4.8.4 Control . . . . . . . . . 4.8.5 ACLs padro . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Sumrio a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 36 36 37 39 39 39 40 40 41 41 42 42 44 44 44 45 45 46 47 48 48 49 49 49 49 50

4.4 4.5 4.6 4.7

4.8

5 Interfaces - Directory 5.1 Korreio . . . . . . . 5.2 LUMA . . . . . . . 5.3 LdapAdmin . . . . 5.4 phpLdapAdmin . .

User Agents (DUA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

6 Integrao: NSS e PAM ca 6.1 Name Service Switch (NSS) . . . . . . . . . . . . . 6.1.1 NSS: instalao do suporte a LDAP . . . . . ca 6.1.2 NSS: congurao do mdulo libnss ldap.so ca o 6.1.3 NSS: ativaao do mdulo libnss ldap.so . . . c o 6.2 Pluggable Authentication Module (PAM) . . . . . . 6.2.1 PAM: instalaao do suporte a LDAP . . . . c 6.2.2 PAM: conguraao do mdulo pam ldap.so . c o 6.2.3 PAM: ativaao do mdulo pam ldap.so . . . c o

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

7 Integrao: DHCP ca 52 7.1 Instalaao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 c 7.2 Congurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 ca 7.3 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Referncias Bibliogrcas e a 55

A Questes de Concurso o 56 A.1 MPU 2010 (CESPE) - ANALISTA DE INFORMATICA / SUPORTE TECNICO Cargo 27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 B Licena c 57 B.1 Licena de Documentaao Livre GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 c c

Reinaldo de Carvalho - reinaldoc@gmail.com

Cap tulo 1 Introduo ao curso ca


Seja bem-vindo ao Curso de OpenLdap. Este curso esta sendo fomentado pela Centro de Tecnologia da Informao e Comunicao - CTIC da Universidade Federal do Par e ministrado por ca ca a Reinaldo Gil Lima de Carvalho. Realiza(ou)-se de 06/12/2010 a 17/12/2010. Os procedimentos descritos neste material foram validados sob a distribuio Debian GNU/Linux ca Lenny, todavia a base terica ministrada o conhecimento fundamental para a aplicabilidade dos o e procedimentos tcnicos sob qualquer sistema operacional. e Apesar das peculiaridades de cada sistema operacional o contedo ser abordado de forma isenta, u a para que o participante tenha a possibilidade de utilizar o conhecimento adquirido no ambiente que lhe for mais adequado. Neste cap tulo, sero abordados os seguintes temas: licenciamento deste material, origem do a software utilizado (executvel ou do cdigo fonte) e conguraoes essenciais da distribuiao Debian a o c c GNU/Linux.

1.1

Licena do material c

Todas as marcas registradas so de propriedade de seus respectivos detentores, sendo apenas citadas a neste material educacional. O ministrante nem a fomentadora responsabilizam-se por danos causados devido a utilizao das ca informaoes tcnicas contidas neste material. No h garantias de que este material est livre de c e a a a erros, assim como, todos os sistemas em produo devem possuir backup antes de sua manipulao. ca ca Este material esta licenciado sobre a GNU Free Documentation License - GFDL ou Licena c de Documentao Livre GNU conforme descrito a seguir: ca Copyright (c) 2009-2010 Reinaldo Gil Lima de Carvalho - reinaldoc@gmail.com garantida a permiss~o para copiar, distribuir e/ou modificar este documento E a sob os termos da Licena de Documentaao Livre GNU (GNU Free Documentation c c~ License) Vers~o 1.2, publicada pela Free Software Foundation; com todas Seoes a c~ Secundrias Invariantes incluindo textos de Capa Frontal, e sem Textos de Quarta a Capa. Uma cpia da licena includa na seao intitulada "GNU Free Documentation o c e c~ License" ou "Licena de Documentaao Livre GNU". c c~ A Licena de Documentao Livre GNU permite que todo contedo esteja livre para cpia c ca u o e distribuiao, assim como que a propriedade autoral seja protegida. O objetivo garantir que o c e conhecimento seja livre, assim como, garantir o reconhecimento ao autor. O autor recomenda ainda que este material seja sempre distribu como est, no formato original. Contribuioes e sugestes do a c o de melhorias sobre este material podem ser enviadas ao autor e sero sempre bem vindas. a
Curso de OpenLdap

Curso de OpenLdap

Cap tulo 1. Introduo ao curso ca

1.2

Compilao de software X software da distribuio/sistema ca ca operacional

O acesso ao cdigo fonte do software e sua compilao, uma das liberdades propiciadas pelo software o ca e livre. Entretanto, o software tambm pode ser obtido em forma executvel (compilada), e de forma e a integrada ao sistema operacional (empacotado), j estando pronto para utilizao. Cada uma destas a ca opoes possui vantagens e desvantagens que sero enumeradas a seguir: c a Caracter sticas do software obtido na forma de executvel (previamente compilado): a V: Instalaao rpida que requer menos espao em disco; evita a compilaao do software, assim c a c c como, a instalaao de software de compilaao (make, gcc, etc) e cabealhos de bibliotecas c c c (libc6-dev, etc) V: Instalaao automatizada de software e de bibliotecas necessrias (dependncias) para o c a e funcionamento do software principal. V: Verso testada pelo distribuidor do software (em geral o distribuidor do sistema operacional), a e possivelmente livre de erros. V: Possibilita atualizaoes e correes de falhas de segurana de forma automtica, e fornecida c co c a pelo distribuidor do sistema operacional. V: Facilita suporte externo devido ao mtodo de instalaao padronizado e utilizao de verses e c ca o invariantes do software. V/D: Pode no ser a verso mais nova do software, e no possuir funcionalidades mais recentes. a a a Todavia, a utilizaao de verses maduras, tende a fornecer maior estabilidade. c o Caracter sticas do software obtido a partir do cdigo fonte: o D: Instalaao mais complexa e demorada, demanda instalao manual de bibliotecas externas. c ca D: Atualizaes e correoes so manuais, exigindo atenao diria `s atualizaoes necessrias co c a c a a c a para correoes de falhas de segurana. c c D: Diculta suporte externo pois no um mtodo de instalao padronizado. a e e ca V/D: Permite utilizar a ultima verso do software, com os novos recursos, mas trata-se de a cdigo menos testado podendo possuir falhas no detectadas. o a V: Pode permitir um ganho de performace com a compilao com otimizaoes do processador, ca c e tambm com o desligamento de recursos no utilizados do software. e a Aps o levantamento destas caracter o sticas, notvel que em ambientes corporativos a utilizaao e a c de software fornecido por um distribuidor essencial para continuidade da disponibilidade dos sise temas. Diminui-se o esforo empregado para manter o parque tecnolgico atualizado e livre de falhas. c o Dessa forma, o treinamento utilizar os pacotes fornecidos pelo distribuidor do sistema operacional a escolhido.

Reinaldo de Carvalho - reinaldoc@gmail.com

Curso de OpenLdap

Cap tulo 1. Introduo ao curso ca

1.3

Debian GNU/Linux

Os sistemas operacionais baseados em tecnologias livres tendem a fornecer software que realizam instalaoes automatizadas. O Debian fornece os utilitrios apt-get e aptitude para esta funcionalc a idade, sendo o segundo, sucessor e atualmente de uso recomendado. O Debian fornece repositrios web que contm os software dispon o e veis para instalao, e estes ca so distribu a dos em forma de pacotes: arquivos compactados com rotinas de pr/ps instalaao e e o c remoao, e informaes sobre dependncias, recomendaoes e sugestes de software adicionais. c co e c o O comportamento padro do utilitrio aptitude ao instalar um software realizar a instalao das a a e ca dependncias, e tambm daqueles especicados como recomendaoes. Entretanto, este compore e c tamento induz a instalaao de software no requeridos, e demanda a utilizaao de espao em disco c a c c adicional. A instalao automtica de software recomendado pode ser desabilitada atravs da adiao da ca a e c conguraao abaixo ao arquivo /etc/apt/apt.conf: c Debian Etch (aptitude 0.4.4): Aptitude::Recommends-Important "false"; Debian Lenny (aptitude 0.4.11): Apt::Install-Recommends "false"; O utilitrio aptitude tambm requer a congurao da fonte dos software a serem instalados, e a e ca isto realizado no arquivo /etc/apt/sources.list, conforme indicado no quadro abaixo. e deb http://ftp.br.debian.org/debian lenny main contrib non-free deb http://security.debian.org/ lenny/updates main Caso a conectividade seja fornecida por um proxy via http, a seguinte congurao deve ser ca adicionada ao arquivo /etc/apt/apt.conf, com a devida adequaao ao endereo IP do proxy: c c Acquire::http::Proxy "http://172.16.0.1:3128/"; Aps a denio das fontes, necessrio o download da lista de software dispon o ca e a veis, que formada e por informaes como verso e descrio de cada software. Esse download deve ser realizado atravs co a ca e do comando: # aptitude update A lista de software dispon veis pode ser consultada, como indicado no exemplo abaixo: Pesquisar pelo nome do software: # aptitude search openldap Pesquisar nas descries do software, equivalente ao apt-cache search openldap: co # aptitude search ~dopenldap Maiores informaoes sobre um determinado software podem ser obtidas como indicado a seguir: c # aptitude show slapd

Reinaldo de Carvalho - reinaldoc@gmail.com

Cap tulo 2 LDAP - Lightweight Directory Access Protocol


A centralizaao da autenticaao e autorizao de usurios, assim como, de informaoes relacionadas c c ca a c a servios de rede tem facilitado a administrao e o controle de acesso a recursos, e possibilitado c ca uma forma organizada do armazenamento deste tipo informaes. co Da mesma forma, a padronizaao do protocolo para acesso a estas informaoes permite o desenc c volvimento de aplicaes intereoperveis, no requerendo o uso de bibliotecas proprietrias de um co a a a determinado fornecedor. Este cap tulo abordar o protocolo LDAP, que permite a comunicaao entre o cliente (Directory a c User Agent - DUA) e o servidor (Directory System Agent - DSA) LDAP, e as caracter sticas da base de dados LDAP. As informaes a seguir so procedimentos padronizados pelo IETF em RFCs e so uteis para co a a diversos servidores LDAP, como o OpenLdap R , Apache Directory Server R (ApacheDS), Oracle Internet Directory R (OID), Novell eDirectory R , Microsoft Active Directory R (AD) e IBM Directory Server R .

2.1

Base de dados LDAP - Directory Information Base (DIB) (RFC-4512)

A base LDAP possui registros (entries) que so ligados em formato de arvore, este comportamento a chamado de Directory Information Tree. Um registro imediatamente superior chamado de pai e e (parent) e um registro imediatamente inferior chamado de lho (child). e O caminho completo de um registro na arvore chamado de Distinguished Name - DN. Um e registro possui um identicador unico entre os registros lhos do mesmo pai, esse identicador e chamado de Relative Distinguished Name - RDN. Um registro formado por um conjunto de atributos que so classicados em trs grupos: os atribe a e utos objectClass, os atributos de informao (user attributes), e os atributos operacionais (operational ca attributes). Os atributos de objectClass determinam quais atributos de informaao podem ser utilizados c no registro. Os objectClass fornecem atributos obrigatrios e atributos opcionais. Como exo emplo, o objectClass inetOrgPerson, possui dois atributos obrigatrios: cn, e sn, e vrios opcionais, o a dentre eles esto: mail, telephoneNumber, street, l, postalCode. O quadro abaixo possui exemplos de a atributos do tipo objectClass:
1 2

objectClass: inetOrgPerson objectClass: posixAccount


Curso de OpenLdap

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

objectClass: sambaSamAccount Os atributos de informao armazenam dados como nome, e-mail, telefone, assim como, ca endereo IP, tipo de hardware, endereo MAC, nome do host, dentre outros. O quadro abaixo possui c c exemplos de atributos de informao: ca

1 2 3 4 5

cn: Reinaldo de Carvalho sn: Carvalho mail: reinaldoc@example.com telephoneNumber: 91 5555-1111 userPassword: {SSHA}KchBFzrN7g3QpF391HUnqJzDR0s3aXj4 O diagrama abaixo mostra a relaao entre os registros em uma base LDAP, assim como, a sintxe c a do caminho completo do registro, o Distinguished Name - DN. O DN caracterizado pela notaao e c inversa dos elementos que fazem parte do ramo da arvore. Note tambm a presena do atributo e c objectClass que determina quais atributos de informaao podem estar presentes no registro. c

Figura 2.1: Registros LDAP.

Os atributos operacionais armazenam dados controlados pelo servidor LDAP (Directory System Agent - DSA), como o identicador unico de registro (entryUUID), o identicador do criador do registro (creatorsName), a data de criao do registro (createTimestamp), o identicador do ultimo ca modicador do registro (modiersName), a data da ultima modicao (modifyTimestamp), o DN ca do registro (entryDN) e se possui registros lhos (hasSubordinates); estes registros so atualizados a pelo DSA. O quadro abaixo possui exemplos de atributos operacionais:
Reinaldo de Carvalho - reinaldoc@gmail.com

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

1 2 3 4 5 6 7

entryUUID: 7852c038-5504-102e-8d48-bd91f7471622 creatorsName: cn=admin,o=Universidade Federal createTimestamp: 20091024161729Z modifiersName: cn=admin,o=Universidade Federal modifyTimestamp: 20091024172150Z entryDN: cn=Reinaldo de Carvalho,o=Universidade Federal hasSubordinates: FALSE

2.2

LDIF - LDAP Data Interchange Format (RFC-2849)

OLDAP Data Interchange Format (LDIF) um formato de dados que descreve os registros da base e LDAP. O LDIF pode ser utilizado para o dump e restore de registros entre Directory System Agents (DSA). Um arquivo LDIF pode conter um ou mais registros separados por linha em branco, e seu formato mostrado a seguir: e
1 2 3 4 5 6 7 8

dn: cn=Reinaldo de Carvalho,o=Universidade Federal objectClass: inetOrgPerson cn: Reinaldo de Carvalho sn: Carvalho uid: rei mail: reinaldoc@example.com telephoneNumber: 91 5555-1111 userPassword: {SSHA}KchBFzrN7g3QpF391HUnqJzDR0s3aXj4 Tarefa: Propor a alteraao do Relative Distinguished Name - RDN do registro descrito no quadro c acima, e comentar quais so os atributos recomendados para serem utilizados como RDN e quais no a a so. a Tarefa: Pesquisar na RFC-2849 como textos acentuados devem ser armazenados no LDIF. Propor como o valor Belm - Par, sem as aspas, deve ser declarado no atributo l e inserido no LDIF do e a quadro acima. Tarefa: Pesquisar na RFC-2849 qual outro fator, alm da presena de caracteres acentuados, e c torna obrigatrio o uso de codicaao base-64 nos valores dos atributos. o c

2.3

Schema (RFC-4512)

A denio dos atributos dispon ca veis para utilizao em um Directory System Agent - DSA so ca a armazenadas nos schemas e o padro para denio destes especicado no cap a ca e tulo 4 da RFC-4512. O quadro a seguir contm exemplos da deniao de atributos de objectClass. e c As RFCs RFC-2256, RFC-2798, RFC-4519, RFC-4524 denem alguns dos principais objectclass/atributos padres dos DSA. o
1 2 3 4 5

# /etc/ldap/schema/core.schema objectclass ( 2.5.6.0 NAME top DESC RFC2256: top of the superclass chain ABSTRACT MUST objectClass )
Reinaldo de Carvalho - reinaldoc@gmail.com

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

# /etc/ldap/schema/core.schema objectclass ( 2.5.6.6 NAME person DESC RFC2256: a person SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) objectclass ( 2.5.6.7 NAME organizationalPerson DESC RFC2256: an organizational person SUP person STRUCTURAL MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) ) # /etc/ldap/schema/inetorgperson.schema objectclass ( 2.16.840.1.113730.3.2.2 NAME inetOrgPerson DESC RFC2798: Internet Organizational Person SUP organizationalPerson STRUCTURAL MAY ( audio $ businessCategory $ carLicense $ departmentNumber $ displayName $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledURI $ mail $ manager $ mobile $ o $ pager $ photo $ roomNumber $ secretary $ uid $ userCertificate $ x500uniqueIdentifier $ preferredLanguage $ userSMIMECertificate $ userPKCS12 ) )

O diagrama abaixo demonstra a relao existente entre os objectClass listados no quadro acima, ca em que o objectClass person extendido pelo objectClass organizationlPerson, assim como, este e e extendido pelo objectClass inetOrgPerson, fazendo com que novos atributos estejam dispon veis.

Figura 2.2: LDAP Schema.

Reinaldo de Carvalho - reinaldoc@gmail.com

10

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

NAME: nome do objectClass. DESC: descriao do objectClass. c SUP: inclui a denio de outro objectClass (semelhante a herana). No exemplo acima, o ca c objectClass organizationalPerson e o inetOrgPerson possuem todos os atributos do objectClass person. STRUCTURAL: dene o tipo do objectClass. Indica o principal objectClass de um registro. Todo registro necessita de um objectClass deste tipo. ABSTRACT: dene o tipo do objectClass. Indica que o objectClass tem por nalidade ser utilizado como modelo (template), sendo inclu (herdado) por outro. No pode-se criar do a registros somente com objectClass do tipo ABSTRACT. AUXILIARY: dene o tipo do objectClass. Indica que o objectClass tem por nalidade fornecer atributos adicionais, mas no de formar o registro individualmente, utilizado em a e conjunto com um objectClass do tipo STRUCTURAL. No pode-se criar registros somente a com objectClass do tipo AUXILIARY. MUST: indica os atributos que devem obrigatoriamente estar presentes nos registros formados por este objectClass. MAY: indica os atributos que podem ser utilizados nos registros formados por este objectClass. Tarefa: consultar o schema nis.schema do OpenLdap e identicar quais os atributos obrigatrios o e opcionais do objectClass posixAccount. Deve-se primordialmente utilizar objectClass que estejam denidos em RFCs como os supracitados, e excepcionalmente cri-los. O prexo 1.3.6.1.3 pode ser utilizado para OIDs restritos e a experimentais como indicado abaixo:
1 2 3 4 5 6 7

# /etc/ldap/schema/local.schema objectclass ( 1.3.6.1.3.100 NAME container DESC Simple Container SUP top STRUCTURAL MUST ( cn ) ) O quadro a seguir contm exemplos da denio de atributos de informacionais (user attributes): e ca

1 2 3 4 5 6 7 8 9 10 11

# /etc/ldap/schema/core.schema attributetype ( 2.5.4.41 NAME name EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) attributetype ( 2.5.4.3 NAME ( cn commonName ) DESC RFC2256: common name(s) for which the entity is known by SUP name )
Reinaldo de Carvalho - reinaldoc@gmail.com

11

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

attributetype ( 2.5.4.4 NAME ( sn surname ) DESC RFC2256: last (family) name(s) for which the entity is known by SUP name ) attributetype ( 2.5.4.20 NAME telephoneNumber DESC RFC2256: Telephone Number EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) # /etc/ldap/schema/inetorgperson.schema attributetype ( 0.9.2342.19200300.100.1.3 NAME ( mail rfc822Mailbox ) DESC RFC1274: RFC822 Mailbox EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

NAME: nome do atributo. DESC: descriao do atributo. c SUP: inclui a deniao de outro atributo (semelhante a herana). c c EQUALITY: indica a caracter stica de comparaao de equivalncia EQ atributo=valor (RFC4517). c e Isto , dene o comportamento do valor do atributo na operaao de pesquisa EQ e operaao e c c de comparaao. Atravs desta opo pode-se especicar que valores distintos devem ser conc e ca siderados equivalentes (ex: 91-5555-1111 e 9155551111). SUBSTR: indica a caracter stica de comparaao substring SUB atributo=val* (RFC4517). c Isto , dene o comportamento do valor do atributo na operaao de pesquisa SUB. e c SYNTAX: indica a sintxe aceita para o valor do atributo: string, string numrica, data, etc a e (RFC4517). Isto , dene quais tipos de dados podem ser armazenados por um atributo. A e sintxe Boolean aceita apenas os valores TRUE e FALSE, por exemplo. a SINGLE-VALUE: indica que este atributo unico por registro. e A RFC-4517 descreve as caracter sticas de comparaoes - matching rules (ex: telephoneNumberc Match, caseExactMatch, generalizedTimeMatch, numericStringMatch, ...) dispon veis para uso na opao EQUALITY e SUBSTR. c Descrevendo tambm as sintxes (ex: Telephone Number, Boolean, Generalized Time, Numeric e a String, ...) que esto dispon a veis para uso na opao SYNTAX. c Tarefa: pesquisar na RFC-4517 e RFC-4518 o comportamento da caracter stica de pesquisa telephoneNumberMatch e propor duas poss veis pesquisas que casem com um registro que possua o seguinte atributo-valor: telephoneNumber: 91 5555-1111. Este comportamento inuencia tanto as pesquisas realizadas a base, quanto a inserao de atribuc tos nos registros. Um registro no pode possuir atributos iguais com valores iguais. A caracter a stica
Reinaldo de Carvalho - reinaldoc@gmail.com

12

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

de comparaao telephoneNumberMatch faz com que diferentes strings que representam nmeros c u telefnicos sejam consideradas iguais. o Tarefa: pesquisar na RFC-4517 a sintaxe chamada Telephone Number e Generalized time e propor um exemplo de valor aceito por um atributo que exija uma destas sintaxes.

2.4

Protocolo LDAP - Lightweight Directory Access Protocol (RFC-4511)

O protocolo LDAP dene o formato das operaes realizadas entre o cliente LDAP (Directory User co Agent - DUA) e o servidor LDAP (Directory System Agent - DSA). As principais operaes so co a descritas a seguir: bind: a operaao de bind permite o envio de dados de autenticaao ao servidor, normalc c mente um Distinguished Name e senha, em que so determinados atravs de ACLs os registros a e acess veis a partir desta autenticaao. c search: a operaao de pesquisa retorna registros ao Directory User Agent - DUA e depende c de um n de busca (base DN), do tipo de pesquia (scope) e de um ltro de pesquisa (LDAP o lter). add: a operaao de criaao de registros que requer dados sobre o novo registro, e o Distinguished c c Name que indica o registro pai e o RDN do registro. mod (modify): a operaao de modicao de registro permite a adio, remoao e alterao c ca ca c ca de atributos. modrdn: a operaao de modicao de Distinguished Name, permite tambm a alteraao do c ca e c Relative Distinguished Name do registro. del: a operao de remoao de registro requer apenas o Distinguished Name do registro a ser ca c removido. compare: a operaao de comparao requer a indicaao do Distinguished Name do registro e c ca c os valores e atributos a serem comparados. Caso os atributos armazenados no registro possuam valores iguais aos utilizados nesta operaao, o resultado verdadeiro, caso contrrio, falso. c e a e Esta operao tende a ser mais ecaz, ao ponto que a comparao realizada pelo DSA, ca ca e utilizando-se do recurso de equivalncia de valores (EQUALITY) dos atributos. Assim, evitae se a utilizao da operao de pesquisa (search) e posterior comparaao pela aplicaao. ca ca c c unbind: a opo de unbind realiza a de-autenticaao (logo) e naliza a conexo. ca c a A operaao de pesquisa (search) possui os parmetros: base DN (n de busca), scope (tipo c a o de pesquisa), lter (ltro de pesquisa), sizelimit (quantidade de registros), timelimit (tempo de pesquisa) e result attribute (atributos retornados). base DN (n de busca): qualquer Distinguished Name pode ser utilizado como ponto de o pesquisa. A pesquisa ocorrer a partir do DN indicado de acordo com tipo de pesquisa (scope). a Este parmetro obrigatrio. a e o

Reinaldo de Carvalho - reinaldoc@gmail.com

13

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

scope (tipo de pesquisa): determina quais registros devem ser comparados com o ltro de pesquisa; relativo a base DN indicada. base: somente a base DN indicada, sub: todos os lhos recursivamente, inclusive a base DN, children: todos os lhos recursivamente, exceto a base DN, one: somente os lhos ligados diretamente a base DN (ou seja, sem recursividade). Este parmetro opcional, e o valor padro sub. a e a e lter (ltro de pesquisa): critrios para a pesquisa de registros. Permite encontrar registros pela e existncia de um atributo ou pela comparao do valor deste atributo. Suporta comparaao e ca c de mltiplos atributos com as operaes or, and e not. Este parmetro opcional, e o valor u co a e padro (objectClass=*), que retorna todos os registros. Opao detalhada na seao 2.5. a e c c sizelimit (quantidade de registros): indica o nmero mximo de registros resultantes. Esta u a opao limitada pelo valor congurado no Directory System Agent - DSA. Este parmetro c e a e opcional. timelimit (tempo de pesquisa): indica o tempo mximo para produao do resultado. Esta a c opao limitada pelo valor congurado no Directory System Agent - DSA. Este parmetro c e a e opcional. result attribute (atributos retornados): indica os atributos que devem ser retornados dos registros identicados pelo ltro de pesquisa. O caracter + representa os atributos operacionais. Este parmetro opcional, e o valor padro * que retorna todos os atributos dos registros a e a e identicados pelo ltro de pesquisa. Tarefa: Pesquisar na RFC-4511 uma operao do protocolo LDAP que no foi descrita nesta ca a seao. c

2.5

LDAP lter (sintxe de pesquisa) (RFC4515) a

A operao de pesquisa (search) permite a utilizaao de operadores lgicos de igualdade =, igualdade ca c o aproximada =, menor que <= e maior que >=, assim como, operadores proposicionais de conjuao & (and), de disjuno | (or) e negao ! (not). c ca ca Operador = = & | ! Exemplo (uid=reinaldo) (uid=reynald) (&(uid=rei)(sn=Carvalho)) (|(uid=r*)(uid=s*)) (!(uid=r*)) Descrio ca Atributo uid igual a reinaldo. Atributo uid semelhante a reynald. Registro deve casar com ambas condioes. c Registros que casem com uma ou outra condiao. c Registros que o atributo uid no inicia com r. a

Tabela 2.1: Operadores do ltro de pesquisa

Outros exemplos de consulta: Exemplo (objectClass=*) (!(telephoneNumber=*)) (mail=*@example.com) (&(uid=a*)(!(uid=ana*))) Descrio ca Todos os registros, pois todos possuem o atributo objectClass. Registros que no possuam telefone cadastrado. a Registros de usurios que o e-mail do dom a e nio indicado. Registros que comeam com a, mas no comeam com ana. c a c

Tabela 2.2: Exemplos de ltro de pesquisa

Reinaldo de Carvalho - reinaldoc@gmail.com

14

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

Tarefa: sugerir um ltro de pesquisa que retorne somente os registros de usurios que possuam a nmeros com DDD 91 cadastrados. Assuma que os atributos telephoneNumber e homePhone u possam conter nmeros telefnicos. u o Tarefa: sugerir um ltro de pesquisa que retorne somente os registros de usurios que possuam a nmeros com DDD 91, com ou sem o cdigo de pa 55. u o s Tarefa: sugerir um ltro de pesquisa que retorne somente os registros de usurios que possuam a nmeros com DDD 91, com ou sem o cdigo de pa 55 e no possuam nmero de telefone celular u o s a u (RFC-4524) cadastrado.

2.6

Directory User Agent (DUA)

Os utilitrios dispon a veis no pacote ldap-utils implementam o protocolo LDAP, e assim operam como um Directory User Agent (DUA). A instalao realizada conforme indicado: ca e # aptitude install ldap-utils Os seguintes utilitrios esto dispon a a veis: ldapsearch, ldapadd, ldapdelete, ldapmodify, ldappasswd, ldapmodrdn, ldapcompare, e possuem as seguintes opes em comum: co -h: informa hostname ou IP do Directory System Agent - DSA, podendo ser substitu pela da opao -H. c -H: informa o Uniform Resource Identier - URI [1] do Directory System Agent - DSA, como ldap://ldap.example.com:3389 ou ldaps://ldap.example.com:636. O prexo ldaps:// ativa o Secure Sockets Layer - SSL e no deve ser usado juntamente a opao -Z. a c -Z: ativa Transport Layer Security - TLS. -x: ativa autenticao. ca -D: informa o Distinguished Name do registro para autenticao. ca -W: ativa solicitaao de senha do Distinguished Name no terminal, e pode ser substitu pela c da opao -w senha c -w: informa a senha do Distinguished Name na linha de comando. Estes utilitrios compartilham o arquivo de conguraao /etc/ldap/ldap.conf, que pode ser utia c lizado para a deniao de parmetros comuns como URI e BINDDN (para todos) e BASE (para c a o ldapsearch), evitando assim, a digitaao destas opoes na execuo do utilitrio. Caso as opoes c c ca a c sejam passadas na linha de comando, os valores do arquivo de congurao sero ignorados. ca a
1 2 3 4 5

URI BASE BINDDN TLS_CACERT # TLS_REQCERT

ldap://ldap.example.com:389 o=Universidade Federal cn=admin,o=Universidade Federal /etc/ssl/certs/University_CA.cer never

URI: equivalente a opao -H. c BASE: equivalente a opao -b. c


Reinaldo de Carvalho - reinaldoc@gmail.com

15

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

BINDDN: equivalente a opao -D. c TLS CACERT: caminho para o certicado que emitiu (assinou digitalmente) o certicado do Directory System Agent - DSA; necessrio para garantir a autenticidade do servidor. a c TLS REQCERT: desativa a vericaao de autenticidade do certicado utilizado pelo Directory System Agent - DSA (no recomendado). a

2.6.1

ldapsearch

O utilitrio ldapsearch utilizado para realizar consultas ao Directory System Agent - DSA, e exibe a e as informaes obtidas no formato LDAP Data Interchange Format - LDIF. O quadro abaixo possui co a sinpse do ldapsearch: o $ ldapsearch -LLL -h <hostname> -x -D "<user DN>" -W -b "<base DN>" -s <scope> "<filter>" <attribute1> <attribute2> ... -LLL: remove os comentrios entre os registros. a -b base DN: qualquer Distinguished Name pode ser utilizado como ponto de pesquisa. -s scope: tipo de pesquisa, o padro sub e esta opo pode ser omitida (vide seao 2.4). a e ca c lter: ltro de pesquisa, o padro (objectClass=*), que retorna todos os registros (vide a e seao 2.5). Esta opao pode ser omitida. c c attribute: o result attribute padro * (todos) e esta opao pode ser omitida. Pode-se a e c utilizar + para obtenao dos atributos operacionais, ou - para nenhum atributo (somente o c DN). Exemplo de uso: $ ldapsearch -LLL -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W -b "o=Universidade Federal" "(uid=rei)" cn mail telephoneNumber
1 2 3 4

dn: cn=Reinaldo de Carvalho,o=Universidade Federal cn: Reinaldo de Carvalho mail: reinaldoc@example.com telephoneNumber: 91 5555-2222

2.6.2

ldapadd

O utilitrio ldapadd utilizado para a adiao de registros ao Directory System Agent - DSA atravs a e c e de arquivos no formato LDAP Data Interchange Format - LDIF. O quadro abaixo possui a sinpse o do ldapadd: $ ldapadd -h <hostname> -x -D "<user DN>" -W -f "<file>" -f: informa um arquivo no formato LDIF com registros a serem inseridos na base LDAP.

Reinaldo de Carvalho - reinaldoc@gmail.com

16

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

Exemplo de arquivo no formato LDIF:


1 2 3 4 5 6 7 8

dn: cn=Reinaldo de Carvalho,o=Universidade Federal objectClass: inetOrgPerson cn: Reinaldo de Carvalho sn: Carvalho mail: reinaldoc@example.com telephoneNumber: 91 5555-1111 l:: QmVsw6ltIC0gUGFyw6E= userPassword: {SSHA}KchBFzrN7g3QpF391HUnqJzDR0s3aXj4 Exemplo de uso: $ ldapadd -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W -f user.ldif

2.6.3

ldapdelete

O utilitrio ldapdelete utilizado para a remoo de registros do Directory System Agent - DSA. O a e ca quadro abaixo possui a sinpse do ldapdelete: o $ ldapdelete -h <hostname> -x -D "<user DN>" -W "<DN>" DN: informa o Distinguished Name do registro que deve ser removido. Exemplo de uso: $ ldapdelete -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W "cn=Reinaldo de Carvalho,o=Universidade Federal"

2.6.4

ldapmodify

O utilitrio ldapmodify utilizado para a adico, alteraao ou remoao de atributos de registros do a e a c c Directory System Agent - DSA. O quadro abaixo possui a sinpse do ldapmodify: o $ ldapmodify -h <hostname> -x -D "<user DN>" -W -f "<file>" -f: informa arquivo no formato espec co para modicaao de registros. c Exemplo de arquivo no formato para modicaes de registros: co
1 2 3 4 5 6 7 8 9

dn: cn=Reinaldo de Carvalho,o=Universidade Federal changetype: modify replace: telephoneNumber telephoneNumber: 91 5555-5555 delete: mail add: description description: Advanced User
Reinaldo de Carvalho - reinaldoc@gmail.com

17

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

Exemplo de uso: $ ldapmodify -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W -f modify.ldif

2.6.5

ldappasswd

O utilitrio ldappasswd utilizado para alterao do atributo userPassword de registros do Directory a e ca System Agent - DSA. O quadro abaixo possui a sinpse do ldappasswd: o $ ldappasswd -h <hostname> -x -D "<user DN>" -W -S "<DN>" -S: ativa a solicitaao da nova senha no terminal, e pode ser substitu pela opo -s senha. c da ca DN: informa o Distinguished Name do registro que deve ter o atributo userPassword modicado. Exemplo de uso: $ ldappasswd -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W -S "cn=Reinaldo de Carvalho,o=Universidade Federal"

2.6.6

ldapmodrdn

O utilitrio ldapmodrdn utilizado para alteraao do Relative Distinguished Name de registros do a e c Directory System Agent - DSA. O quadro abaixo possui a sinpse do ldapmodrdn: o $ ldapmodrdn -h <hostname> -x -D "<user DN>" -W -s "<new parent DN>" -f "<file>" -s: informa o novo pai (parent) do registro, alterando o Distinguished Name. Esta opao pode c ser omitida para a alteraao apenas do Relative Distinguished Name. c Exemplo de arquivo no formato para modicaes de Relative Distinguished Name de registros: co
1 2 3 4 5

cn=Reinaldo de Carvalho,o=Universidade Federal cn=Reinaldo Gil Lima de Carvalho cn=Administrador,o=Universidade Federal cn=Root Exemplo de uso: $ ldapmodrdn -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W -f rdn.ldif Para a alterao apenas do pai (parent) do registro, deve utilizar a opo -s com o DN de destino ca ca e o arquivo no seguinte formato:
Reinaldo de Carvalho - reinaldoc@gmail.com

18

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

1 2

cn=Reinaldo de Carvalho,o=Universidade Federal cn=Reinaldo de Carvalho Exemplo de uso: $ ldapmodrdn -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -s "ou=IDC,o=Universidade Federal" -W -f rdn.ldif Resultando na alteraao do DN cn=Reinaldo de Carvalho,o=Universidade Federal para cn=Reinaldo c de Carvalho,ou=IDC,o=Universidade Federal, sendo que o registro ou=IDC,o=Universidade Federal deve ser criado previamente.

2.6.7

ldapcompare

O utilitrio ldapcompare utilizado para comparaao do valor de atributos de registros do Directory a e c System Agent - DSA, e o retorno verdadeiro ou falso. O quadro abaixo possui a sinpse do e o ldapcompare: $ ldapcompare -h <hostname> -x -D "<user DN>" -W "DN" "attribute: value" Exemplo de uso: $ ldapcompare -h ldap.example.com -x -D "cn=admin,o=Universidade Federal" -W "cn=Reinaldo de Carvalho,o=Universidade Federal" "telephoneNumber: 91 5555-5555"

2.7

DSA-specic Entry (DSE)

A base LDAP nula (-b ) um registro chamado DSA-specic Entry (DSE) e contm atributos e e 1 operacionais que tem informaes sobre o Directory System Agent - DSA. Em geral este registro co deve ser acess sem autenticaao. vel c Um importante atributo do DSE o namingContexts que contm as bases fornecidas por este e e DSA. Pode-se listar os atributos do DSE, como indicado abaixo: $ ldapsearch -h ldap.example.com -x -LLL -b -s base +
1 2 3 4 5 6 7 8 9 10 11

dn: structuralObjectClass: OpenLDAProotDSE configContext: cn=config namingContexts: dc=nodomain namingContexts: o=Universidade Federal namingContexts: o=Empresa S/A supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 1.3.6.1.4.1.4203.1.10.1 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.2.826.0.1.3344810.2.3
Reinaldo de Carvalho - reinaldoc@gmail.com

19

Curso de OpenLdap

Cap tulo 2. LDAP - Lightweight Directory Access Protocol

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.12 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.1.8 supportedFeatures: 1.3.6.1.1.14 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.2 supportedFeatures: 1.3.6.1.4.1.4203.1.5.3 supportedFeatures: 1.3.6.1.4.1.4203.1.5.4 supportedFeatures: 1.3.6.1.4.1.4203.1.5.5 supportedLDAPVersion: 3 supportedSASLMechanisms: NTLM supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 entryDN: subschemaSubentry: cn=Subschema Pode-se listar diretamente as bases do DSA solicitando explicitamente o atributo namingContexts conforme indicado abaixo: $ ldapsearch -h ldap.example.com -x -LLL -b -s base namingContexts

1 2 3 4

dn: namingContexts: dc=nodomain namingContexts: o=Universidade Federal namingContexts: o=Empresa S/A

: no DSA Microsoft Active Directory R os atributos do registro DSE so atributos de informaao a c e no atributos operacionais, no sendo utilizado +na consulta. a a
Reinaldo de Carvalho - reinaldoc@gmail.com

20

Cap tulo 3 Introduo ao OpenLDAP (DSA) ca


O presente cap tulo tem por objetivo descrever os arquivos utilizados diretamente e indiretamente pelo DSA OpenLDAP, e manipular a base LDAP: criando, alterando e removendo registros. O Directory System Agent - DSA OpenLdap possui a seguinte topologia:

Figura 3.1: Topologia do OpenLdap.

A inicializao do DSA OpenLdap ocorre atravs do script /etc/init.d/slapd. Este script l o ca e e arquivo /etc/default/slapd em busca de parmetros a serem utilizados na execuao do /usr/sbin/slapd. a c Em execuo, o DSA OpenLdap l o arquivo de congurao /etc/ldap/slapd.conf e abre os arca e ca quivos das bases denidas, aguardando por requisioes atravs do protocolo LDAP. Estas requisioes c e c so consultadas ou aplicadas a base LDAP armazenada em /var/lib/ldap. a Com a instalao do DSA OpenLdap os seguintes componentes esto dispon ca a veis:
Curso de OpenLdap

21

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

slapd: o Directory System Agent - DSA OpenLdap. slappasswd: utilitrio para criao de hash compat com o atributo userPassword. No h a c vel a a interao com a base LDAP, podendo ser executado a qualquer momento. Exemplo de uso: ca slappasswd -s senha. slaptest: utilitrio que verica a sintxe do arquivo de conguraao. No deve ser executado a a c a com o slapd em execuo pois requer acesso a base de dados. Exemplo de uso: slaptest -u ou ca slaptest -u -d 64. slapcat: utilitrio que realiza dump da base LDAP no formato LDIF, processo realizado direa tamente a partir dos arquivos da base LDAP, sem comunicaao com o DSA. O LDIF produzido c inclui atributos operacionais e no poder ser utilizado para insero dos registros atravs do a a ca e protocolo LDAP (ldapadd), sendo util para o uso com o slapadd. Caso executado com DSA em execuao, o LDIF pode no reetir o atual contedo dos registros c a u da base LDAP. Exemplo de uso: slapcat -b o=Universidade Federal -l base1.ldif. slapadd: utilitrio que adiciona registros diretamente aos arquivos da base a partir de um a LDIF. Este LDIF pode conter atributos operacionais. Nunca deve ser executado com o slapd (DSA) em execuao. Exemplo de uso: slapadd -b o=Universidade Federal -l base1.ldif. c slapindex: utilitrio que gera a ndices da base LDAP. A indexao dos atributos garante ca pesquisas mais ecientes, e baseada na opao index do arquivo de conguraao. Nunca deve e c c ser executado com o slapd (DSA) em execuao. Exemplo de uso: slapindex -b o=Universidade c Federal. slapacl: utilitrio analisador de ACLs, verica se determinado usurio tem acesso a detera a minado registro. As ACLs so denidas atravs da opao access do arquivo de congurao. a e c ca Nunca deve ser executado com o slapd em execuo. Exemplo de uso: slapacl -D cn=admin, ca o=University -b o=University o/read:University.

3.1

Instalao ca

A instalao do OpenLDAP prover um arquivo de conguraao funcional e criar uma base LDAP ca a c a formada pelo registro ra e um registro com permisso de escrita. O registro ra gerado a partir z a z e da sa do comando dnsdomainname, que por conseguinte obtm o dom da e nio da primeira entrada FQDN (Fully Qualield Domain Name) no /etc/hosts. O registro ra ser baseado no objectClass domain, e pode-se posteriormente alter-lo para um z a a registro baseado no objectClass organization, reetindo mais adequadamente a estrutura de uma organizaao. c Em caso de inexistncia de entrada FQDN no arquivo /etc/hosts, a ra da rvore LDAP ser e z a a dc=nodomain e o registro com permisso de escrita ser cn=admin,dn=nodomain. A congurao a a ca padro em /etc/ldap/slapd.conf possui ACLs que garante permisso de escrita a base LDAP a partir a a da autenticaao com este registro, sendo poss a insero, alteraao e remoao de registros. c vel ca c c O procedimento abaixo realiza a instalaao do DSA OpenLdap: c # aptitude install slapd Com a instalaao do software slapd, tambm so instalados os utilitrios slapcat, slapadd, slapinc e a a dex, entre outros. Estes utilitrios realizam acessos diretamente a base LDAP, no devendo ser a a executados enquanto o servio slapd estiver em execuao. c c
Reinaldo de Carvalho - reinaldoc@gmail.com

22

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

Durante o curso, para visualizao de log das consultas atendidas pelo servio ldap, realize a ca c seguinte conguraao no /etc/ldap/slapd.conf: c loglevel 256

Neste momento no preocupe-se em entender as conguraes existentes no arquivo de cona co guraao do slapd, pois o objetivo deste cap c tulo a manipulaao da base LDAP. No prximo e c o cap tulo, o arquivo de conguraao ser amplamente discutido. c a

3.2

Recriando o registro ra como organization z

A base LDAP reete hierarquicamente a relaao entre os objetos contidos. Assim, em uma base c LDAP que conter informaoes sobre uma unica organizaao, pode-se formar o registro ra baseado a c c z no objectClass organization e os registros lhos formados pelo objectClass organizationalUnit, que refere-se a unidades da organizaao. c Sero demonstrados os procedimentos de denio e inserao do registro ra para realizar a a ca c z inicializaao de uma base LDAP, para isto, deve-se parar o DSA OpenLdap: c # /etc/init.d/slapd stop Remover os arquivos da database #1: # rm /var/lib/ldap/* Alterar referncias para a nova base no arquivo de conguraao /etc/ldap/slapd.conf. Necessarie c amente as opoes sux (l.4) e as acls denidas na opo access (l.8, l.15). Estas opoes atualmente c ca c fazem referncia a base criada durante a instalaao. e c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

# Database #1 Configuration # ... suffix

"o=Universidade Federal"

# ... access to attrs=userPassword,shadowLastChange by dn="cn=admin,o=Universidade Federal" write by anonymous auth by self write by * none # ... access to * by dn="cn=admin,o=Universidade Federal" write by * read Deve-se criar o arquivo root.ldif (apenas convenao, o nome de arquivos LDIF no esto relacionac a a dos ao seu contedo) contendo a especicaao da nova ra assim como, e o registro que possuir u c z, a ACLs permitindo escrita a base LDAP. O hash para o atributo userPassword pode ser gerado atravs e do comando slappasswd -s senha.
Reinaldo de Carvalho - reinaldoc@gmail.com

23

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

1 2 3 4 5 6 7 8 9 10

dn: o=Universidade Federal objectClass: organization o: University dn: cn=admin,o=Universidade Federal objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: {SSHA}6Ng3TnWtsjw2jjt2NlBcSCJ+CoRVPMQ1 Adicionar os registros iniciais a base LDAP (/var/lib/ldap/): # slapadd -b o=Universidade Federal -l root.ldif Gerar ndices. Os ndices sero armazenados no diretrio da base LDAP. a o # slapindex -b o=Universidade Federal Alterar permisso de acesso aos arquivos da base LDAP para o usurio que o DSA OpenLdap a a e executado, o usurio openldap: a # chown -R -v openldap: /var/lib/ldap Iniciar servio slapd: c # /etc/init.d/slapd start Testar a nova base atravs do protocolo LDAP: e $ ldapsearch -h ldap.example.com -LLL -b "o=Universidade Federal" -x -D "cn=admin,o=Universidade Federal" -W Tarefa: recriar a base LDAP #1 denindo um novo nome para a organizao, e alterar o nome ca (cn) do registro com permisses de escrita para Ldap Admin. Aps isto, altere as ACLs no arquivo o o de congurao /etc/ldap/slapd.conf para reetir o nome registro com permisso de escrita, e reinicie ca a o slapd.

3.3

Inserindo registros organizationalUnit

Os registros formados a partir do objectClass organizationalUnit representam unidades ou setores da organizaao. Atravs do LDIF indicado, alguns registros sero criados. A partir do modelo abaixo c e a ajuste o nome das unidades/setores para reetir a sua organizaao. c

Reinaldo de Carvalho - reinaldoc@gmail.com

24

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

dn: ou=Reitoria,o=Universidade Federal objectClass: organizationalUnit ou: Reitoria description: Registros da Reitoria dn: ou=Institutos,o=Universidade Federal objectClass: organizationalUnit ou: Institutos description: Registros dos Institutos dn: ou=Instituto de Exatas,ou=Institutos,o=Universidade Federal objectClass: organizationalUnit ou: Institutos de Exatas description: Registros do Instituto de Exatas dn: ou=Internet Data Center,o=Universidade Federal objectClass: organizationalUnit ou: Internet Data Center description: Registros do IDC Os comandos abaixo podem ser utilizados para a criao dos valores de atributos que possuam ca caracteres acentuados codicados no formato base-64: $ echo -n ou=Instituto Tecnolgico,ou=Institutos,o=Universidade Federal | o openssl base-64 b3U9SW5zdGl0dXRvIFRlY25vbMOzZ2ljbyxvdT1JbnN0aXR1dG9zLG89VW5pdmVy c2lkYWRlIEZlZGVyYWw= $ echo -n Instituto Tecnolgico | openssl base-64 o SW5zdGl0dXRvIFRlY25vbMOzZ2ljbw== $ echo -n Registros do Instituto de Tecnolgico | openssl base-64 o UmVnaXN0cm9zIGRvIEluc3RpdHV0byBkZSBUZWNub2zDs2dpY28=

1 2 3 4 5

dn:: b3U9SW5zdGl0dXRvIFRlY25vbMOzZ2ljbyxvdT1JbnN0aXR1dG9zLG89VW5pdmVy c2lkYWRlIEZlZGVyYWw= objectClass: organizationalUnit ou:: SW5zdGl0dXRvIFRlY25vbMOzZ2ljbw== description:: UmVnaXN0cm9zIGRvIEluc3RpdHV0byBkZSBUZWNub2zDs2dpY28= Apesar da RFC-2849 (item 4) indicar a utilizaao da codicaao base-64 para atributos com c c valores que possuam caracteres acentuados, o utilitrio ldapadd permite a utilizao de acentos no a ca formato UTF-8 em LDIFs. Assim o registro acima pode ser utilizado como:

1 2 3 4

dn: ou=Instituto Tecnolgico,ou=Institutos,o=Universidade Federal o objectClass: organizationalUnit ou: Instituto Tecnolgico o description: Registros do Instituto Tecnolgico o
Reinaldo de Carvalho - reinaldoc@gmail.com

25

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

Adicionando atravs do protocolo LDAP: e $ ldapadd -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f ou.ldif Tarefa: indique qual ltro de pesquisa LDAP pode ser utilizado para identicar os registros que representam unidades da organizao. ca Tarefa: crie um registro formado pelo objectClass organizationalUnit que contenha atributos no a utilizados nos exemplos acima. Consulte o schema core.schema para obter os atributos dispon veis.

3.4

Inserindo registros inetOrgPerson

Os registros formados a partir do objectClass inetOrgPerson representam pessoas de uma organizaao. c Atravs do LDIF indicado, alguns registros sero criados. A partir do modelo abaixo ajuste o DN e a para as unidades/setores de sua organizao. ca Para criar registros, usaremos o arquivo usuario.ldif com o seguinte modelo:
1 2 3 4 5 6 7 8 9 10 11 12 13

dn: cn=Reinaldo de Carvalho,ou=Internet Data Center,o=Universidade Federal objectClass: inetOrgPerson cn: Reinaldo de Carvalho sn: Carvalho mail: reinaldoc@example.com userPassword: {SSHA}2G7ghotAcBWj35Yz3YJyLc+OcCCiUAiL dn: cn=Fulano da Silva,ou=Reitoria,o=Universidade Federal objectClass: inetOrgPerson cn: Fulano da Silva sn: Silva mail: fulano@example.com userPassword: {SSHA}2G7ghotAcBWj35Yz3YJyLc+OcCCiUAiL Adicionando atravs do protocolo LDAP: e $ ldapadd -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f usuario.ldif

3.5

Removendo registros

O quadro abaixo indica como remover registros: $ ldapdelete -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W "cn=Fulano da Silva,ou=Reitoria,o=Universidade Federal"

Reinaldo de Carvalho - reinaldoc@gmail.com

26

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

3.6

Inserindo registros posixAccount

Os registros formados a partir do objectClass posixAccount representam contas autenticveis atravs a e dos sistemas Linux (PAM). A partir do modelo abaixo ajuste o DN para as unidades/setores de sua organizaao. c
1 2 3 4 5 6 7 8 9 10 11 12

dn: cn=Fulano da Silva,ou=Reitoria,o=Universidade Federal objectClass: inetOrgPerson objectClass: posixAccount cn: Fulano da Silva sn: Silva uid: fulano givenName: Fulano da Silva uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/fulano loginShell: /bin/bash userPassword: {SSHA}TqUUQybe/Yco1nUREX0AYjqiya1wmo6T Adicionando atravs do protocolo LDAP: e $ ldapadd -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f usuario.ldif

3.7

Adicionando objectClass posixAccount a registros

Um registro pode ser formado por vrios objectClass, assim pode-se adicionar o objectClass posixa Account (AUXILIARY) a um registro existente. Tomando como exemplo o registro cn=Reinaldo de Carvalho, ou=Internet Data Center,o=Universidade Federal que possui o objectClass inetOrgPerson (STRUCTURAL), pode-se adicionar o atributo objectClass posixAccount conforme indicado: Para alterar registros, usaremos o arquivo usuario-mod.ldif com o seguinte modelo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

dn: cn=Reinaldo de Carvalho,ou=Internet Data Center,o=Universidade Federal changetype: modify add: objectClass objectClass: posixAccount add: uid uid: rei add: givenName givenName: Reinaldo add: uidNumber uidNumber: 2001 add: gidNumber gidNumber: 2000 Reinaldo de Carvalho - reinaldoc@gmail.com

27

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

18 19 20 21 22

add: homeDirectory homeDirectory: /home/rei add: loginShell loginShell: /bin/bash Aplicando a base: $ ldapmodify -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f usuario-mod.ldif

3.8

Inserindo registros posixGroup

Os registros formados a partir do objectClass posixGroup representam grupos de sistemas Linux (PAM), utilizados para o controle de acesso a arquivos. Crie um registro baseado no objectClass posixGroup na ra da sua base LDAP conforme indicado: z
1 2 3 4 5 6

dn: cn=Grupo de Redes,o=Universidade Federal objectClass: posixGroup cn: Grupo de Redes gidNumber: 2000 memberUid: ciclano memberUid: beltrano Adicionando atravs do protocolo LDAP: e $ ldapadd -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f grupo.ldif Tarefa: crie um registro baseado no objectClass container (/etc/ldap/schema/local.schema) para armazenar os grupos, e trs registros baseados no objectClass posixGroup internos ao primeiro, a e partir de um unico LDIF. Lembre-se de utilizar diferentes gidNumber.

3.9

Alterando o Relative Distinguished Name - RDN

Exemplo de arquivo no formato para modicaes de Relative Distinguished Name de registros: co


1 2

cn=Reinaldo de Carvalho,o=Universidade Federal cn=Reinaldo Gil Lima de Carvalho $ ldapmodrdn -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f rdn.ldif Tarefa: altere o RDN do registro cn=Grupo de Redes,o=Universidade Federal para cn=Grupo de Suporte,o=Universidade Federal.

Reinaldo de Carvalho - reinaldoc@gmail.com

28

Curso de OpenLdap

Cap tulo 3. Introduo ao OpenLDAP (DSA) ca

3.10

Alterando o Distinguished Name - DN

Para a alterao apenas do pai (parent) do registro, deve utilizar a opo -s com o DN de destino e ca ca o arquivo no seguinte formato:
1 2

cn=Reinaldo de Carvalho,ou=Internet Data Center,o=Universidade Federal cn=Reinaldo de Carvalho Exemplo de uso: $ ldapmodrdn -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -s "ou=Reitoria,o=Universidade Federal" -W -f rdn.ldif Resultando na alteraao do DN cn=Reinaldo de Carvalho,ou=Internet Data Center,o=Universidade c Federal para cn=Reinaldo de Carvalho,ou=Reitoria,o=Universidade Federal, sendo que o registro ou=Reitoria,o=Universidade Federal j deve existir. a Tarefa: alterar o DN do registro cn=Grupo de Suporte,o=Universidade Federal para dentro do registro espec co de grupos criado recentemente.

3.11

Inserindo registros groupOfNames

Os registros formados a partir do objectClass groupOfNames representam listas de Distinguished Names ou grupos de propsito geral (no sendo utilizados pela PAM ou Samba). O atributo member o a utilizado para enumerar DNs. Crie um registro baseado no objectClass groupOfNames em sua base e LDAP conforme indicado:
1 2 3 4 5

dn: cn=Admins,o=Universidade Federal objectClass: groupOfNames cn: Admins member: cn=Ldap Admin,o=Universidade Federal member: cn=Reinaldo de Carvalho,ou=Reitoria,o=Universidade Federal Adicionando atravs do protocolo LDAP: e $ ldapadd -h ldap.example.com -x -D "cn=Ldap Admin,o=Universidade Federal" -W -f grupo.ldif

Reinaldo de Carvalho - reinaldoc@gmail.com

29

Cap tulo 4 OpenLdap - Directory System Agent (DSA)


As conguraoes do DSA OpenLdap so centralizadas no arquivo /etc/ldap/slapd.conf, e na deniao c a c dos atributos atravs dos schemas no diretrio /etc/ldap/schema/. e o O arquivo de congurao possui diversos comentrios que podem ser removidos para facilitar ca a a visualizao das opes como um todo. O quadro abaixo indica como visualizar o arquivo de ca co conguraao sem os comentrios: c a # grep -Ev ^#|^$ /etc/ldap/slapd.conf O quadro abaixo indica como remover permanentemente os comentrios do arquivo de cona guraao, assim como, preserva o contedo original no arquivo /etc/ldap/slapd.conf.old: c u # sed -ri.old /^#|^$/d /etc/ldap/slapd.conf

4.1

Congurao ca

O arquivo de congurao dividido em: seo Global e seo de Database, sendo que esta ca e ca ca pode ser repetida diversas vezes determinando a existncia de diversas databases. O arquivo de e conguraao comentado a seguir: c e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

# # Global Configuration # # allow include include include include include include include include include include bind_v2 /etc/ldap/schema/core.schema /etc/ldap/schema/cosine.schema /etc/ldap/schema/nis.schema /etc/ldap/schema/inetorgperson.schema /etc/ldap/schema/asterisk.schema /etc/ldap/schema/dhcp.schema /etc/ldap/schema/radius.schema /etc/ldap/schema/samba.schema /etc/ldap/schema/dns.schema /etc/ldap/schema/local.schema 30

Curso de OpenLdap

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

16 17 18 19 20 21 22 23 24

pidfile argsfile loglevel modulepath moduleload sizelimit timelimit tool-threads backend

/var/run/slapd/slapd.pid /var/run/slapd/slapd.args 256 /usr/lib/ldap back_hdb unlimited 60 1 hdb

allow bind v2: permite conexes atravs do protocolo LDAP v2 (RFC 3494). O DSA OpenLo e dap no totalmente compat com este padro. O parmetro allow aceita as seguintes opoes, a e vel a a c separadas por espao: bind anon cred, bind anon dn, update anon, proxy authz anon. c include: informa arquivos que devem ser inclu dos na congurao, em geral utilizado para a ca inserao de schemas. c pidle: informa um arquivo que o DSA deve armazenar seu PID no momento da inicializaao. c argsle: informa um arquivo que o DSA deve armazenar os parmetros utilizados em sua a inicializaao. c loglevel: informa quais tipos de informaes de log devem ser enviados ao syslog. Opao co c detalhada na seo 4.4. ca modulepath: informa o diretrio que os mdulos do OpenLdap esto armazenados. o o a moduleload: carrega um mdulo espec o co. Essencialmente os mdulos provm backends o e que implementam a forma de armazenamento dos dados (hdb, bdb, relay, ldap, meta, passwd, monitor, ...), e overlays que adicionam funcionalidades ao OpenLdap (syncprov, ppolicy, valsort, unique, memberof, ...). sizelimit: limita o nmero de registros retornados em uma consulta. O parmetro limits pode u a ser utilizado para um limite mais seletivo. timelimit: limita o tempo para o processamento de uma pesquisa. O valor padro 3600 a e segundos. O parmetro limits pode ser utilizado para um limite mais seletivo. a tool-threads: nmero de threads utilizadas para atualizaao dos u c ndices nas operaoes es c escrita de atributos indexados. Use um valor menor ou igual ao nmero de cores de processau mento. backend: parmetro que dene o formato da base, sendo normalmente a ultima opao da a c conguraao global. O principal backend o HDB que baseado nas bases Database Manager c e e - DBM, embora outros estejam dispon ves. A lista completa com um breve resumo pode ser obtida atravs do comando: e $ man slapd.backends Os parmetros globais dispon a veis para utilizaao no slapd.conf podem ser obtidos atravs do c e comando: $ man slapd.conf
Reinaldo de Carvalho - reinaldoc@gmail.com

31

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

Conguraao da database #1 do backend HDB: c


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

# # Database #1 Configuration # database hdb suffix "o=Universidade Federal" #rootdn "cn=ldap,o=Universidade Federal" #rootpw goodpassword directory "/var/lib/ldap" dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 index objectClass eq lastmod on cachesize 10000 cachefree 1000 checkpoint 512 10 access to by by by by attrs=userPassword,shadowLastChange dn="cn=Ldap Admin,o=Universidade Federal" write anonymous auth self write * none

access

to dn.base="" by * read to * by dn="cn=Ldap Admin,o=Universidade Federal" write by * read

access

database: determina o in da congurao de uma database. O bloco de conguraes inicicio ca co ado por database pode ser repetido para a utilizaao de vrias bases. Procedimento demonstrado c a na seo 4.2. ca sux: informa a base DN desta base. rootdn: informa um DN com permisso total sobre a base. Pode ser habilitado para alterar a a senha do registro cn=admin. rootpw: informa a senha do DN com permisso total. Pode ser habilitado para alterar a senha a do registro cn=admin. directory: diretrio onde a base ser armazenada. o a dbcong: parmetros de congurao do backend da base. So utilizados para a criaao do a ca a c c ca arquivo DB CONFIG. Opao detalhada na seo 4.6. index: informa parmetros de indexaao. Opo detalhada na seo 4.5. a c ca ca

Reinaldo de Carvalho - reinaldoc@gmail.com

32

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

lastmod: ativa os atributos operacionais modiersName, modifyTimestamp, creatorsName, createTimestamp, entryCSN e entryUUID. E necessrio para a replicaao atravs do overlay a c e syncrepl. cachesize: informa o nmero de registros que devem permanecer em memria. O ideal u o e manter todos os registros em memria. Para melhor performace use este valor sempre acima o do nmero de registros existentes. u cachefree: informa o nmero de registros que devem ser removidos da memria, caso o valor u o de cachesize seja alcanado. c checkpoint: informa a periodicidade da operaao de checkpoint. Esta operao grava qualquer c ca registro ainda em memria para o disco e insere entradas de recuperaao no log transaao da o c c base (armazenado no mesmo diretrio da database). O primeiro argumento a quantidade o e de dados em memria ainda no escritos em disco, e o segundo o tempo em minutos desde o o a ultimo checkpoint. O que ocorrer primeiro iniciar o procedimento de checkpoint. a access: ACLs de permisso de acesso aos registros. Opo detalhada na seo 4.8. a ca ca A lista completa dos parmetros do backend HDB, dispon a veis para utilizaao no slapd.conf, pode c ser obtida atravs do comando: e $ man slapd-hdb

4.2

M ltiplas bases u

A criaao de uma nova database d-se pela repetiao da seao de conguraao de database. Assim, c a c c c pode-se copiar o trecho referente a database #1 realizando alteraoes nas opoes sux, directory e c c access, como indicado no quadro abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

# # Database #2 Configuration # database hdb suffix "o=Empresa S/A" #rootdn "cn=ldap,o=Empresa S/A" #rootpw goodpassword directory "/var/lib/ldap2" dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 index objectClass eq lastmod on cachesize 10000 cachefree 1000 checkpoint 512 10 access to attrs=userPassword,shadowLastChange by dn="cn=Ldap Admin,o=Empresa S/A" write by anonymous auth 33

Reinaldo de Carvalho - reinaldoc@gmail.com

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

22 23 24 25 26 27 28 29 30

by self write by * none access to dn.base="" by * read to * by dn="cn=Ldap Admin,o=Empresa S/A" write by * read

access

A seguir necessrio a insero do registro ra atravs do utilitrio slapadd. e a ca z e a

4.2.1

O registro raiz da database #2

Deve-se criar o arquivo root.ldif contendo a especicaao da nova ra e do registro com permisso c z a de escrita, sendo que o hash do atributo userPassword pode ser gerado com o comando slappasswd.
1 2 3 4 5 6 7 8 9 10

dn: o=Empresa S/A objectClass: organization o: Empresa S/A dn: cn=Ldap Admin,o=Empresa S/A objectClass: simpleSecurityObject objectClass: organizationalRole cn: Ldap Admin description: LDAP administrator userPassword: {SSHA}6Ng3TnWtsjw2jjt2NlBcSCJ+CoRVPMQ1 Parar o slapd: # /etc/init.d/slapd stop Adicionar o registro inicial a base ldap: # slapadd -b o=Empresa S/A -l root.ldif Gerar ndices: # slapindex -b o=Empresa S/A Alterar permisso da base ldap para o usurio openldap: a a # chown -R -v openldap: /var/lib/ldap2 Iniciar servio slapd: c # /etc/init.d/slapd start Testar a nova base: $ ldapsearch -h ldap.example.com -LLL -b "o=Empresa S/A" -x -D "cn=Ldap Admin,Empresa S/A" -W
Reinaldo de Carvalho - reinaldoc@gmail.com

34

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

4.3

TLS/SSL

O DSA OpenLdap fornece suporte a conexes criptografadas atravs de SSL com o protocolo ldaps o e ou sob TLS. Para isto, necessrio a conguraao de um certicado digital e da respectiva chave e a c privada. A congurao abaixo deve ser realizada no arquivo /etc/ldap/slapd.conf na seao de ca c conguraao global: c # Global Configuration TLSCertificateFile /etc/ssl/cert/ldap.cer TLSCertificateKeyFile /etc/ssl/cert/ldap.key A congurao acima suciente para ativar o suporte a TLS, todavia, para ativar o suporte a SSL ca e necessrio indicar que o OpenLdap deve ativar a porta 636 (padro), isto realizado atravs daopao e a a e e c -h do slapd, ou indiretamente atravs da seguinte congurao no arquivo /etc/default/slapd: e ca SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps://127.0.0.1:636/" Pode-se tambm permitir recepao de conexes a partir de qualquer interface de rede, substituindo e c o o endereo 127.0.0.1 por 0.0.0.0 como indicado: c SLAPD_SERVICES="ldap://0.0.0.0:389/ ldaps://0.0.0.0:636/" Todos os utilitrios do protocolo LDAP como ldapadd, ldapmodify, etc, utilizam as preferncias a e conguradas no arquivo /etc/ldap/ldap.conf. Para que estes possam validar a assinatura presente no certicado do DSA necessrio informar o caminho para o certicado da autoridade certicadora e a emissora. Assim, pode-se realizar a seguinte congurao no arquivo /etc/ldap/ldap.conf: ca TLS_CACERT /etc/ssl/cert/University_CA.cer

A validaao da assinatura depende do existncia do hostname utilizado no certicado digital no c e servio de DNS, em certos casos pode ser necessrio desativar a validao do certicado, embora no c a ca a seja recomendado pois no ser poss validar a autenticidade do DSA: a a vel TLS_REQCERT never

4.3.1

Consultas com TLS

Os utilitrios do protocolo LDAP podem ser utilizados atravs de TLS, atravs do parmetro -Z. a e e a Para relizar uma consulta com TLS: $ ldapsearch -x -Z -H ldap://localhost -b o=Universidade Federal Note que o hostname deve ser o mesmo utilizado no certicado.

4.3.2

Consultas com SSL

A consulta sob SSL realizada atravs da porta 636 (ldaps) conforme indicado no quadro a seguir: e e $ ldapsearch -x -H ldaps://localhost -b o=Universidade Federal Note que o hostname deve ser o mesmo utilizado no certicado.
Reinaldo de Carvalho - reinaldoc@gmail.com

35

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

4.4

N vel de log
Log name any trace packets args conns BER lter cong ACL stats stats2 shell parse sync Descrio ca ativar todos os logs de depuraao c nenhum log de depurao ca depurar a execuo com trace ca depurar manipulaao de pacotes c depurar a execuo com trace com chamadas e argumentos de funes ca co controle de conexes o exibir pacotes enviados e recebidos depurar processamento do ldap lter da consulta depurar processamento do arquivo de conguraao c depurar processamentos das ACLs exibir conexes, operaoes e resultados o c exibir DN dos registros retornados na consulta exibir comunicaao com backends em shell c depurar parser de registro depurar replicaao c Tabela 4.1: OpenLdap log

Diversos n veis de log esto dispon a veis no OpenLdap, conforme especicado na tabela a seguir: Log level -1 0 1 2 4 8 16 32 64 128 256 512 1024 2048 16384

Embora a desativaao do log possa permitir um ganho de desempenho, na maioria dos hardc ware dispon veis atualmente este tipo de procedimento no necessrio. Todavia, pode ser util em a e a hardware com baixa capacidade de processamento. A opo de n de log 256 recomendada para a maioria dos casos. Pode-se ainda ativar mais ca vel e de um n de log, seja pelo nmero ou nome identicativo, conforme demonstrado a seguir: vel u loglevel 256 512 loglevel stats stats2

4.5

Indices

Os ndices ou indexaao tem por objetivo o aumento de performace nas operaoes de pesquisa. c c Todavia, quanto mais ndices criados, maior ser uso de memria, e maior o tempo necessrio para a o a operaoes de escrita/atualizao de registros, pois os c ca ndices tambm sero atualizados. e a E recomendado a indexaao de todos os atributos utilizados em pesquisas. Pesquisas que utilizam c atributos no indexados geram entradas no log. Abaixo segue exemplo de mensagens de log para a pesquisas baseadas no atributo street:
1 2 3

Nov 4 23:39:37 w slapd[6767]: <= bdb_substring_candidates: (street) not indexed Nov 4 23:39:23 w slapd[6767]: <= bdb_equality_candidates: (street) not indexed Nov 4 23:41:12 w slapd[6767]: <= bdb_approx_candidates: (street) not indexed Os ndices so denidos pela opao index no arquivo de conguraao, sendo seguido de uma lista a c c de atributos e do tipo de indexao. Pode-se indexar cada atributo com um ou mais tipos, sendo ca que cada tipo est relacionado com a sintxe de busca utilizada (ldap lter). a a A conguraao de c ndices exemplicada no quadro abaixo: e
Reinaldo de Carvalho - reinaldoc@gmail.com

36

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

1 2 3 4

index index index index

objectclass,entryCSN,entryUUID ou,cn,mail,uid uidNumber,gidNumber,loginShell sn

eq eq,pres,sub eq,pres eq,approx,sub

pres: a pesquisa requer que o registro possua o atributo especicado, independentemente de seu valor. eq: a pesquisa requer que o registro possua o atributo com valor igual ao especicado. sub, subinitial, subnal, subany: a pesquisa requer que registro possua o atributo parcialmente igual (like) ao especicado. approx: a pesquisa requer que o registro possua uma atributo com valor semelhante ao o especicado.

Tipo de ndice pres eq sub subinitial subnal subany approx

Exemplo de consulta (uid=*) (uid=reinaldo) # ndice equivalente as trs opes abaixo juntas e co (uid=rei*) (uid=*naldo) (uid=*ein*) (uid=reynald)

Tabela 4.2: Tipos de ndice por tipo de consulta

Ao adicionar ou remover atributos a serem indexados no arquivo de conguraao, necessrio a c e a realizaao da seguinte operaao: c c
1 2 3 4 5

# # # # #

/etc/init.d/slapd stop slapindex -b o=Universidade Federal slapindex -b o=Empresa S/A chown -R -v openldap: /var/lib/ldap* /etc/init.d/slapd start

4.6

Backend HDB/BDB - dbcong

As conguraoes do backend HDB ou BDB [2] so armazenadas no arquivo DB CONFIG no c a diretrio de cada database. As opes comumentes utilizadas so: set cachesize (quantidade de o co a dados em bytes armazenados em memria) [3] e as iniciadas por set lk max (quantidade de locks) o [4], como exemplicado a seguir:
1

# cat /var/lib/ldap/DB_CONFIG

Reinaldo de Carvalho - reinaldoc@gmail.com

37

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

1 2 3 4

set_cachesize 0 2097152 0 set_lk_max_objects 1500 set_lk_max_locks 1500 set_lk_max_lockers 1500 O arquivo DB CONFIG criado na primeira interaao com a database, o que tende acontecer e c com a criaao do registro raiz atravs do utilitrio slapdadd. O arquivo criado a partir das opoes esc e a e c pecicadas no parmetro dbcong na conguraao de cada database do OpenLdap, conforme exemplo a c abaixo:

1 2 3 4 5

# Database Configuration dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 As conguraoes do backend podem ser realizadas no prprio arquivo DB CONFIG ou alterando c o o arquivo /etc/ldap/slapd.conf. Como forma de centralizar a congurao no arquivo slapd.conf a ca segunda forma recomendada. No exemplo abaixo, a quantidade de registros em memria elevada e o e para 256Mb e nmero de locks para 3000, conforme indicado: u

1 2 3 4 5

# Database Configuration dbconfig set_cachesize 0 268435456 0 dbconfig set_lk_max_objects 3000 dbconfig set_lk_max_locks 3000 dbconfig set_lk_max_lockers 3000 Assim, para que o novo arquivo DB CONFIG seja criado, necessrio que a slapd seja parado, e a e o arquivo atual removido, como indicado abaixo:

1 2 3 4

# # # #

/etc/init.d/slapd stop rm /var/lib/ldap/DB_CONFIG /etc/init.d/slapd start cat /var/lib/ldap/DB_CONFIG

1 2 3 4

set_cachesize 0 268435456 0 set_lk_max_objects 3000 set_lk_max_locks 3000 set_lk_max_lockers 3000

Reinaldo de Carvalho - reinaldoc@gmail.com

38

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

4.7

Replicao (RFC4533) ca

A replicaao um recurso utilizado para manter cpias de databases em diferentes DSAs. c e o

4.7.1

Master

A replicaao utiliza o mdulo de overlay syncprov que deve ser carregado atravs da conguraao c o e c global indicada em l.2. A ativaao do suporte a replicaao uma congurao por database, conforme c c e ca demonstrado em l.5, l.6 e l.7:
1 2 3 4 5 6 7

# Global Configuration moduleload syncprov # Database Configuration overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100

4.7.2

Slave

A conguraao do slave: c
1 2 3 4 5 6 7 8 9 10

# Database Configuration rootdn "cn=Ldap Admin,o=UFPA" # ... syncrepl rid=100 provider=ldap://ldap.example.com type=refreshOnly interval=00:00:02:00 searchbase="o=Universidade Federal" bindmethod=simple binddn="cn=Ldap Admin,o=Universidade Federal" credentials=goodpassword provider: informa o URI do DSA master. type: mtodo de conexo para replicaao. refreshOnly: a cada intervalo de tempo (interval) o e a c DSA master consultado por registros modicados desde a ultima sincronizao. refreshAnde ca Persist: a conexo car estabelecida, e o DSA master gerar noticaoes com os registros a a a c alterados. interval: utilizado pelo modo refreshOnly, e informa a periodicidade da consulta ao DSA master por registros modicados. searchbase: base DN para replicaao, em geral a raiz de uma base do DSA master. c bindmethod: ativa autenticao. ca binddn: DN para autenticao. Usurio com permisso de leitura aos atributos que devem ca a a ser replicados. credentials: senha do DN utilizado para autenticaao. c

Reinaldo de Carvalho - reinaldoc@gmail.com

39

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

4.8

ACLs

As ACLs denem as permisses concedidas a cada operao do protocolo LDAP, seja a conexo o ca a autenticada ou no (annima). O comportamento padro conceder permisso de leitura a conexes a o a e a o annimas exceto a atributos de senha. Tambm garante-se permisso de escrita ao usurio padro o e a a a cn=admin,o=OrganizacaoXYZ. O uso comum das ACLs tem objetivo de controlar o acesso a registros em operaes de pesquisa co (search) e modicao (mod), embora as ACLs possam atuar sobre as demais operaoes, como autca c enticao (bind) e comparao. ca ca O processamento das ACLs realizado de forma sequencial, da primeira at a ultima ACL, e e conforme descriminado no arquivo de conguraao do OpenLdap. Este processamento ocorre no c momento de cada operao do protocolo LDAP. O conceito fundamental do processamento das ca ACLs que, ACLs posteriores no alteram permisses concedidas por ACLs j processadas. Assim, e a o a deve-se denir as ACLs mais espec cas primeiramente. No caso prtico, uma regra geral impedir o acesso ao atributo userPassword, assim, uma ACL a e inicial tem esta funcionalidade. Desta forma, ACLs posteriores que garantem permisso de leitura a aos registros, aplicam-se a todos os atributos do registro, exceto o atributo userPassword que j teve a a permisso previamente denida. a Informaoes detalhadas e exemplos podem ser obtidos em [5]. Segue a seguir a sinpse da opo c o ca access:
1 2 3 4 5 6 7 8 9 10

access to [ <DN match> ] [ <filter> ] [ <Attrs match> ] by <Who match> <access> [ <control> ] by <Who match> <access> [ <control> ] ... by * none stop # ... access to * by * none

4.8.1

DN match
Descrio [Permisses ao(s) registro(s)...] ca o do DN especicado. do DN especicado. lhos diretos (no recursivo). a lhos, inclusive o DN especicado (recursivamente). lhos, exceto o DN especicado (recursivamente). identicados pelo ltro indicado. identicados pelo ltro indicado. Permisses ao atributo listado. o Permisses aos atributos listados. o

DN match dn=ou=CPD,o=University dn.exact=ou=CPD,o=University dn.one=ou=CPD,o=University dn.sub=ou=CPD,o=University dn.children=ou=CPD,o=University lter=(objectClass=inetOrgPerson) lter=(uid=*) attrs=homePhone attrs=userPassword,sambaLMPassword

Tabela 4.3: OpenLdap ACLs: DN match

Reinaldo de Carvalho - reinaldoc@gmail.com

40

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

4.8.2

Who match
Descrio [Autenticao...] ca ca realizada ou no. a no realizada. a realizada por qualquer DN realizada pelo prprio registro. o realizada por cn=admin,o=University realizada por cn=admin,o=University realizada por ou=CPD,o=University ou lhos. realizada por um DN listado no grupo especicado. realizada ou no a partir do IP especicado. a realizada ou no a partir da rede 192.168.1.0/24. a

Who match * anonymous users self dn=cn=admin,o=University dn.exact=cn=admin,o=University dn.sub=ou=CPD,o=University group.exact=cn=Admins,o=University peername.ip=192.168.0.3 peername.ip=192.168.1.0%255.255.255.0

Tabela 4.4: OpenLdap ACLs: Who match

4.8.3

Access
Access name none disclose auth compare search read write Access code =0 =d =x =c =s =r =w =a =z =dx =cdx =scdx =rscdx =wrscdx Descrio ca nenhum acesso. permite ao DSA retornar erros comentados ao DUA. permite acesso a partir da operaao bind. c permite o uso da operao compare. ca permite o uso da operao search. ca permite a leitura dos registros. permite o uso da operao mod (modify). ca permite o uso da operao add. ca permite o uso da operao delete. ca permite operao bind e erros comentados. ca permite tambm operaao compare. e c permite tambm operaao search. e c permite tambm a leitura de registros. e permite tambm operaao mod (modify). e c

Tabela 4.5: OpenLdap ACLs: Access

A permisso w equivalente a az. A permisso s retorna apenas o nmero de registros identicados a e a u pelo ltro utilizado, a pesquisa efetivamente depende da permisso sc. a

Reinaldo de Carvalho - reinaldoc@gmail.com

41

Curso de OpenLdap Access code +d +x +c +s +r +w +a +z +rs +wrs -d -x -c -s -r -w -a -z -rs -wrs

Cap tulo 4. OpenLdap - Directory System Agent (DSA) Descrio ca adiciona permisso ao DSA retornar erros comentados ao DUA. a adiciona permisso de acesso a partir da operaao bind. a c adiciona permisso de uso da operaao compare. a c adiciona permisso de uso da operaao search. a c adiciona permisso de leitura dos registros. a adiciona permisso de uso da operaao mod (modify). a c adiciona permisso de uso da operaao add. a c adiciona permisso de uso da operaao delete. a c adiciona permisso de leitura de registros e uso da operao search. a ca adiciona permisso de leitura de registros e uso da operao mod. a ca remove permisso ao DSA retornar erros comentados ao DUA. a remove permisso de acesso a partir da operao bind. a ca remove permisso de uso da operaao compare. a c remove permisso de uso da operaao search. a c remove permisso de leitura dos registros. a remove permisso de uso da operaao mod (modify). a c remove permisso de uso da operaao add. a c remove permisso de uso da operaao delete. a c remove permisso de leitura de registros e uso da operaao search. a c remove permisso de leitura de registros e uso da operaao mod. a c outras construoes a partir das permisses acima so vlidas. c o a a

Tabela 4.6: OpenLdap ACLs: Access aps control continue ou break o

4.8.4

Control
Control continue break stop Descrio ca processar prxima clusula Who match. o a processar prxima clusula access para o mesmo DN match. o a no processar prximas clusulas para o mesmo DN match (padro). a o a a Tabela 4.7: OpenLdap ACLs: Control

Detalhes espec cos da opo access que dene as ACLs, podem ser obtidos atravs do comando: ca e $ man slapd.access

4.8.5
1 2 3 4 5 6 7

ACLs padro a
to by by by by attrs=userPassword,shadowLastChange dn="cn=Ldap Admin,o=Empresa S/A" write anonymous auth self write * none

access

access

to dn.base="" 42

Reinaldo de Carvalho - reinaldoc@gmail.com

Curso de OpenLdap

Cap tulo 4. OpenLdap - Directory System Agent (DSA)

8 9 10 11 12

by * read access to * by dn="cn=Ldap Admin,o=Empresa S/A" write by * read

Linha 1 2 3 4 5 6 7 8 9 10 11 12

ACL item DN match Who match Who match Who match Who match DN match Who match DN match Who match Who match

Valor attrs=userPassword,shadowLastChange dn=cn=Ldap Admin,o=Empresa S/A anonymous self * dn.base= * * dn=cn=Ldap Admin,o=Empresa S/A *

Access write auth write none read write read

Tabela 4.8: OpenLdap ACLs padro a

Reinaldo de Carvalho - reinaldoc@gmail.com

43

Cap tulo 5 Interfaces - Directory User Agents (DUA)


5.1 Korreio

O Korreio uma Graphical User Interface - GUI que fornece recursos para a manipulaao de bases e c LDAP, administrao do servidor CYRUS e gerncia da la do Postx. ca e Especicamente ao protocolo LDAP, o Korreio permite a adio, modicao e remoao de regca ca c istros. Possui diversos wizards para os principais objectClass como inetOrgPerson, posixAccount, sambaSamAccount, astSipPeer, radiusProle, posixGroup, sambaGroupMapping, organization e organizationalUnit. Alm de wizards para a criaao do conjunto de registros do Samba e DHCPD, incluindo interface e c para troca de senha. Tambm oferece um conversor de CSV para LDIF. e # aptitude install python-qt3 python-ldap python-pexpect python-smbpasswd Acesse o site do projeto Korreio http://sourceforge.net/projects/korreio, e baixe o arquivo korreioYYYYMMDD.tar.gz. $ tar xzf korreio-YYYYMMDD.tar.gz $ ./korreio-YYYYMMDD/korreio.py

5.2

LUMA

O Luma uma Graphical User Interface - GUI para o acesso a administrao de bases LDAP, e ca e baseado em plugins, e os seguintes esto dispon a veis: Browser: navegaao e edio de atributos de registros. Schema browser: navegaao dos schemas c ca c dispon veis no servidor. Search: pesquisa de registros. Addressbook: adiao de registros de usurios. c a Template: denio de template para facilitar adio de registros customizados. Massive User Creca ca ation: criaao de registros em massa. Admin Utilities: ferramentas administrativas como a troca de c senha. # aptitude install luma $ luma

Curso de OpenLdap

44

Curso de OpenLdap

Cap tulo 5. Interfaces - Directory User Agents (DUA)

5.3

LdapAdmin

O LdapAdmin uma Graphical User Interface - GUI para o acesso e administraao de bases LDAP, e c inclu suporte para grupos e contas POSIX, SAMBA e alguns objetos do Postx. # aptitude install wine Acesse o site do projeto LdapAdmin http://sourceforge.net/projects/ldapadmin/les/, e baixe o executvel LdapAdminExe-X.Y.zip. Acesse o site google.com/search?q=wldap32.dll e baixe a a DLL wldap32.dll $ $ $ $ unzip LdapAdminExe-X.Y.zip unzip wldap32.zip export WINEDLLOVERRIDES="wldap32=n" wine LdapAdmin.exe

5.4

phpLdapAdmin

O phpldapadmin uma interface Web para o acesso a administrao de bases LDAP, tem uma e ca variedade de formulrios para a adiao de diversos tipos de registros. a c # aptitude install phpldapadmin O acesso pode ser realizado por: http://localhost/phpldapadmin

O instalador do phpLdapAdmin preenche algumas conguraoes do arquivo /etc/phpldapadmin/cong.p c Todavia no caso da existncia de mltiplas bases deve-se corrigir as seguintes opes: e u co $ldapservers->SetValue($i,server,base,array(o=University)); $ldapservers->SetValue($i,login,dn,cn=admin,o=University);

Reinaldo de Carvalho - reinaldoc@gmail.com

45

Cap tulo 6 Integrao: NSS e PAM ca


O Name Service Switch (NSS) e o Pluggable Authentication Module (PAM) so dois recursos fornecia dos pelos sistemas operacionais Linux modernos. Estes recursos so independentes, mas relacionados a entre si, na prtica, pode-se utilizar isoladamente o Name Service Switch (NSS) congurado em uma a base LDAP. J um sistema que utilize a Pluggable Authentication Module (PAM) autenticando em uma base a LDAP, s funcionar adequadamente se o Name Service Switch (NSS) tambm estiver apropriadao a e mente congurado, pois os arquivos criados pelo usurio autenticado utilizaro um uid number que a a deve ser convers pelo NSS. vel O NSS e a PAM atuam como Directory User Agents (DUA) realizando consultas a base LDAP. A PAM requer que os registros utilizados para autenticao de usurios possuam o objectClass posixca a Account, e os registros de grupo de usurios possuam o objectClass posixGroup. Segue exemplos dos a respectivos registros:
1 2 3 4 5 6 7 8 9 10 11 12

dn: cn=Reinaldo Carvalho,o=University objectClass: inetOrgPerson objectClass: posixAccount cn: Reinaldo Carvalho sn: Carvalho givenName: Reinaldo uid: rei uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/rei loginShell: /bin/bash userPassword: {SSHA}TqUUQybe/Yco1nUREX0AYjqiya1wmo6T dn: cn=Admins,ou=Groups,o=University objectClass: posixGroup gidNumber: 2000 cn: Admins description: Super users Opcionalmente os registros de usurios capazes de realizar login atravs da PAM podem conter o a e objectClass shadowAccount. Este objectClass prover informaes referentes ao atributo userPassword co que so controladas pela PAM. O OpenLdap no interfere nestes valores, sendo estes utilizados a a exclusivamente pela PAM.

1 2 3 4 5

Curso de OpenLdap

46

Curso de OpenLdap

Cap tulo 6. Integrao: NSS e PAM ca

shadowLastChange: contm informaao que permite calcular a data que ocorreu a ultima e c troca de senha. Na prtica, contm o nmero de dias entre 01/01/1970 e o dia que a senha a e u atual foi denida. Pode-se calcular atravs da expresso: expr $(date +%s) / 60 / 60 / 24 e a - $shadowLastChange o nmero de dias desde que a senha atual foi denida. u shadowMin: nmero de dias que devem ser aguardados para uma nova troca de senha. u shadowMax: nmero de dias que uma senha pode ser utilizada at a PAM solicitar a troca da u e senha. Caso o usurio no troque a senha, o login ser poss pelo nmero de dias congurado a a a vel u em shadowInactive. shadowInactive: nmero de dias aps o shadowMax ser atingido, para que a conta no consiga u o a mais fazer login. A senha deve ser trocada antes deste per odo terminar. shadowWarning: nmero de dias antes do dia que a troca de senha ser solicitada (shadowu a Max). Neste per odo, o usurio passar a ser avisado que deve trocar a senha. a a shadowExpire: permite informar a data ao qual a conta no mais conseguir fazer login. Na a a prtica, contm o nmero de dias entre 01/01/1970 e o dia que a conta no mais conseguir a e u a a realizar login. Pode-se calcular atravs da expresso: expr $(date +%s) / 60 / 60 / 24 + e a 17, neste caso, a conta poder realizar login pelo per a odo de 17 dias a partir da execuao do c clculo. a O quadro abaixo possui exemplo dos atributos a serem adicionados aos registros de usurios que a fazem login via PAM. Neste exemplo, a senha atual foi denida em 03/11/2009 (shadowLastChange), e s poder ser trocada novamente (via PAM) aps 06/11/2009 (shadowMin). A partir de 26/12/2009 o a o o usurio ser avisado que deve realizar a troca da senha (shadowWarning). a a Entre 02/01/2010 (shadowMax) e 07/01/2010 (shadowInactive) o comando de troca de senha ser executado automaticamente ao realizar login, caso a senha no seja trocada at 07/01/2010, a a e no ser mais poss fazer login. Independemente da senha, o conta no conseguir fazer login aps a a vel a a o 01/02/2009 (shadowExpire). O valor -1 ou a remoao do atributo desabilitar a funcionalidade do c a mesmo.
1 2 3 4 5 6 7

objectClass: shadowAccount shadowLastChange: 14552 shadowMin: 3 shadowWarning: 7 shadowMax: 60 shadowInactive: 5 shadowExpire: 14642

6.1

Name Service Switch (NSS)

A biblioteca Name Service Switch (NSS) utilizada para a converso de identicadores (uid number, e a gid number, protocol number, port number) em nomes (nome do usurio, nome do grupo, nome do proa tocolo, nome da porta), e vice-versa. Por padro esta converso baseada nos arquivos /etc/passwd, a a e /etc/group, /etc/protocols e /etc/services respectivamente. Um exemplo da necessidade desta converso ocorre quando listamos os arquivos de um diretrio a o do sistema de arquivos. O sistema de arquivos armazena apenas o uid number e gid number do proprietrio dos arquivos, sendo necessrio a converso destes dados para a exibiao adequada do a a a c nome do usurio (uid) e nome do grupo (gid). a
Reinaldo de Carvalho - reinaldoc@gmail.com

47

Curso de OpenLdap

Cap tulo 6. Integrao: NSS e PAM ca

O mesmo tambm ocorre quando utilizamos nomes para portas de rede, quando informamos que e desejamos realizar uma conexo a porta www ou smtp, estes nomes precisam ser convertidos para a as portas 80 e 25 respectivamente, esta converso realizada automaticamente pelo Name Service a e Switch (NSS). Todavia, na maioria dos casos a converso dos identicadores de protocolo e portas a permacene baseada nos arquivos /etc/protocols e /etc/services.

6.1.1

NSS: instalao do suporte a LDAP ca

A biblioteca Name Service Switch (NSS) est dispon nas atuais distribuioes do sistema Linux, a vel c entretanto seu comportamento padro utiliza os arquivos /etc/passwd, /etc/group, /etc/protocols e a /etc/services para a converso dos identicadores em nomes. O suporte a base ldap deve ser instalado a conforme indicado: # aptitude install libnss-ldap Vrias conguraes sero solicitadas, como host do servio ldap, DN do usurio para conexo ao a co a c a a ldap, senha, entre outras, neste momento basta aceitar (atravs da tecla ENTER) todas as perguntas, e pois os arquivos de conguraao sero vericados a seguir. c a Opcionalmente, pode-se instalar o mdulo de cache de consultas: o # aptitude install nscd

6.1.2

NSS: congurao do mdulo libnss ldap.so ca o

O arquivo de congurao /etc/libnss-ldap.conf: ca


1 2 3 4 5 6 7 8 9 10 11 12 13

base o=Universidade Federal uri ldap://ldap.example.com:389/ ldap_version 3 binddn uid=nss,ou=SystemAccounts,o=Universidade Federal bindpw secret # rootbinddn uid=nss-root,ou=SystemAccounts,o=Universidade Federal # echo -n secret > /etc/libnss-ldap.secret # chmod 600 /etc/libnss-ldap.secret # nss_base_passwd # nss_base_group o=Universidade Federal?sub o=Universidade Federal?sub

As opes binddn e bindpw so necessrias caso o DSA no permita consultas annimas. co a a a o Para vericar se as conguraoes esto de acordo com as indicadas, utilize o comando abaixo: c a # grep -Ev ^#|^$ /etc/libnss-ldap.conf Os parmetros de conguraao dispon a c veis podem ser listados no manual: # man libnss-ldap.conf

Reinaldo de Carvalho - reinaldoc@gmail.com

48

Curso de OpenLdap

Cap tulo 6. Integrao: NSS e PAM ca

6.1.3

NSS: ativao do mdulo libnss ldap.so ca o

a vel e a O mdulo libnss ldap.so foi congurado e est dispon para uso, entretanto necessrio indicar o que as pesquisas devem ser realizadas primeiramente no /etc/passwd, e posteriormente no ldap. /etc/nsswitch.conf passwd: group: shadow: files ldap files ldap files ldap

Pode-se testar o funcionamento adequado do NSS com os comandos abaixo, em que todos os usurios e grupos devem ser listados, seja do /etc/passwd ou do LDAP: a $ getent passwd $ getent group # getent shadow

6.2

Pluggable Authentication Module (PAM)

A biblioteca Pluggable Authentication Module (PAM) utilizada como subsistema de autenticaao e c dos SOs POSIX modernos. Assim, aplicativos que necessitam validar usurios e senhas no precisam a a implementar o acesso a inmeros formatos de base de dados, mas devem utilizar a PAM para esta u nalidade. A funcionalidade bsica da biblioteca PAM prover o suporte a autenticao em diversas bases a e ca de dados (LDAP, MySQL, PostgreSQL, entre outras) e realizar a validaao do usurio. A PAM c a tambm permite a incluso de validaoes adicionais como a restriao de horrio de logon ou de e a c c a grupo. Tambm poss e e vel a execuao de aoes no momento da autenticaao, como a criao do c c c ca home do usurio. a

6.2.1

PAM: instalao do suporte a LDAP ca

A biblioteca PAM esta dispon nas atuais distribuies do sistema Linux, entretanto seu comporvel co tamento padro validar usurios no sistema (/etc/passwd e /etc/shadow). O suporte a base ldap a e a deve ser instalado conforme indicado: # aptitude install libpam-ldap Vrias conguraes sero solicitadas, como host do servio ldap, DN do usurio para conexo ao a co a c a a ldap, senha, entre outras, neste momento basta aceitar (atravs da tecla ENTER) todas as perguntas, e pois os arquivos de conguraao sero vericados a seguir. c a

6.2.2

PAM: congurao do mdulo pam ldap.so ca o

A conguraao da biblioteca PAM deve ser realizada para que a autentiao seja associada a uma c c base LDAP, e deve ser realizada como indicado: O arquivo de congurao /etc/pam ldap.conf: ca
1 2 3

base o=Universidade Federal uri ldap://ldap.example.com:389/ ldap_version 3


Reinaldo de Carvalho - reinaldoc@gmail.com

49

Curso de OpenLdap

Cap tulo 6. Integrao: NSS e PAM ca

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

binddn uid=pam,ou=SystemAccounts,o=Universidade Federal bindpw secret rootbinddn uid=pam-root,ou=SystemAccounts,o=Universidade Federal # echo -n supersecret > /etc/pam_ldap.secret # chmod 600 /etc/pam_ldap.secret pam_password md5 # pam_password exop # pam_password exop_send_old # pam_min_uid 2000 # pam_filter (description=PAM) # pam_groupdn "<posixGroup DN>"

As opoes binddn e bindpw so necessrias caso o DSA no permita consultas annimas. A opo c a a a o ca rootbinddn requerida para que o root possa trocar a senha dos usurios, e requer ACL no DSA e a para que o usurio em questo uid=pam-root,ou=SystemAccounts,o=Universidade Federal tenha a a permisso de escrita no atributo userPassword e shadowLastChange. a Normalmente esta opao no congurada, e a troca de senha realizada pelo usurio diremente c a e e a no LDAP, por exemplo atravs de uma interface WEB, e no atravs da PAM. e a e Para vericar se as conguraoes esto de acordo com as indicadas, utilize o comando abaixo: c a # grep -Ev ^#|^$ /etc/pam_ldap.conf Os parmetros de conguraao dispon a c veis podem ser listados no manual: # man pam_ldap.conf

6.2.3

PAM: ativao do mdulo pam ldap.so ca o

O mdulo pam ldap.so est congurado e dispon o a vel para uso, sendo que cada aplicativo tem a possibilidade de utiliz-lo. A PAM possui um arquivo de congurao no diretrio /etc/pam.d/ para a ca o cada aplicativo (ex: /etc/pam.d/login, /etc/pam.d/kdm). As conguraes globais, para todos os co aplicativos, so realizadas no arquivos /etc/pam.d/common-* como indicado a seguir: a /etc/pam.d/common-account account sufficient pam_unix.so account required pam_ldap.so use_first_pass /etc/pam.d/common-auth auth sufficient pam_unix.so nullok_secure auth required pam_ldap.so use_first_pass /etc/pam.d/common-password

Reinaldo de Carvalho - reinaldoc@gmail.com

50

Curso de OpenLdap

Cap tulo 6. Integrao: NSS e PAM ca

password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password required pam_ldap.so try_first_pass /etc/pam.d/common-session session required pam_mkhomedir.so skel=/etc/skel umask=0022 session sufficient pam_unix.so session required pam_ldap.so Os arquivos acima devem conter somente a conguraao indicada. c

Reinaldo de Carvalho - reinaldoc@gmail.com

51

Cap tulo 7 Integrao: DHCP ca


O Dynamic Host Conguration Protocol Daemon (dhcpd) o servio que implementa o protocolo e c DHCP e permite a distribuiao automtica de endereos IP. O processo inicia com o envio do pacote c a c de descoberta do servidor DHCP (DHCP Discover) pela estaao em broadcast, tendo por resposta a c oferta de um endereo IP (DHCP Oer). A estaao por sua vez, pode aceitar a oferta, atravs da c c e requisiao DHCP (DHCP Request), em que o servidor termina a comunicao conrmando o aceite c ca da estaao (DHCP Acknowledgement). c

Figura 7.1: DHCP Protocol.

Alm de informar o endereo IP o qual a estao poder utilizar, o servidor DHCP envia ine c ca a formaoes de mscara de rede, gateway, servidores DNS, alm do per c a e odo ao qual a estaao deter o c a direito de uso do IP cedido. Estas informaoes, incluindo o range de IPs ao qual o IP cedido a estaao ser escolhido, podem c ` c a ser armazenadas em uma base LDAP. Desta forma, o arquivo de congurao do servidor DHCP ca limitar-se- a indicar informaoes de conexo a base LDAP. O diagrama a seguir contm a relao a c a e ca entre os elementos do servidor DHCP:

Curso de OpenLdap

52

Curso de OpenLdap

Cap tulo 7. Integrao: DHCP ca

Figura 7.2: DHCP Server.

7.1

Instalao ca

A instalaao do dhcpd indicada a seguir: c e # aptitude install dhcp3-server-ldap

7.2

Congurao ca

/etc/dhcp3/dhcpd.conf
1 2 3 4 5 6 7

ldap-server "ldap.example.com"; ldap-port 389; # ldap-username "uid=dhcp,cn=SystemAccounts,o=Universidade Federal"; # ldap-password "goodpassword"; ldap-base-dn "ou=DHCP,o=Universidade Federal"; ldap-method dynamic; ldap-debug-file "/var/log/dhcp-ldap-startup.log";

7.3

Registros

O servidor dhcpd requer os seguintes registros na base LDAP: Registro que agrupar os registros relativos a servidores DHCP. a
1 2 3

dn: ou=DHCP,o=Universidade Federal objectClass: organizationalUnit ou: DHCP

Reinaldo de Carvalho - reinaldoc@gmail.com

53

Curso de OpenLdap

Cap tulo 7. Integrao: DHCP ca

Registro que identica o nome do servidor DHCP e faz referncia ao registro que contm a e e conguraao a ser utilizada. Desta forma, vrios servidores DHCP podem apontar para uma c a unica congurao. O termo #SERVER# deve ser trocado pelo nome da mquina do servidor ca a DHCP.
1 2 3 4

dn: cn=#SERVER#,ou=DHCP,o=Universidade Federal objectClass: dhcpServer cn: #SERVER# dhcpServiceDN: cn=dhcpConfig-UFPA,ou=DHCP,o=Universidade Federal Registro que contm a conguraao do servidor DHCP. e c

1 2 3 4 5 6 7 8 9 10 11 12

dn: cn=dhcpConfig-UFPA,ou=DHCP,o=Universidade Federal objectClass: dhcpService objectClass: dhcpOptions dhcpStatements: ddns-update-style none dhcpStatements: authoritative dhcpStatements: default-lease-time 3600 dhcpStatements: max-lease-time 28800 dhcpOption: domain-name "example.com" dhcpOption: domain-name-servers 192.168.0.2 dhcpOption: netbios-name-servers 192.168.0.1 cn: dhcpConfig-UFPA dhcpPrimaryDN: cn=#SERVER#,ou=DHCP,o=Universidade Federal Registros que contm o range de IPs a ser distribu para uma determinada rede. E ree do comendado a utilizaao de um nome que descreva a rede; uma opao a utilizaao o nome da c c e c interface de rede ao qual a rede esta conectada: cn=eth0. No exemplo abaixo, optou-se pelo termo cn=RedeXYZ.

1 2 3 4 5 6 7 8 9 10 11

dn: cn=RedeXYZ,cn=dhcpConfig-UFPA,ou=DHCP,o=Universidade Federal objectClass: dhcpSharedNetwork cn: RedeXYZ dn: cn=192.168.0.0,cn=RedeXYZ,cn=dhcpConfig-UFPA,o=Universidade Federal objectClass: dhcpSubnet objectClass: dhcpOptions dhcpNetMask: 24 dhcpOption: routers 192.168.0.254 cn: 192.168.0.0 dhcpRange: 192.168.0.10 192.168.0.100 Registro que exemplica o uso de IP xo para um determinado endereo MAC. c

1 2 3 4 5 6

dn: cn=Atalaia,cn=RedeXYZ,cn=dhcpConfig-UFPA,,ou=DHCP,o=Universidade Federal objectClass: dhcpHost dhcpStatements: fixed-address 192.168.0.200 dhcpComments: Servidor Web cn: Atalaia dhcpHWAddress: ethernet aa:bb:cc:dd:ee:ff

Reinaldo de Carvalho - reinaldoc@gmail.com

54

Referncias Bibliogrcas e a
[1] Wikipedia. Uri sintax. 2009. http://en.wikipedia.org/wiki/URI scheme. [2] Oracle Corporation 1996-2006. Berkeley db programmers reference guide. http://www.eecs.harvard.edu/ uribraun/db-4.5.20.NC/docs/ref/toc.html. 2009.

[3] Oracle Corporation 1996-2006. Berkeley db programmers reference guide: set cachesize. 2009. http://www.eecs.harvard.edu/ uribraun/db-4.5.20.NC/docs/api c/db set cachesize.html. [4] Oracle Corporation 1996-2006. Berkeley db programmers reference guide: Locking subsystem. 2009. http://www.eecs.harvard.edu/ uribraun/db-4.5.20.NC/docs/ref/lock/max.html. [5] OpenLDAP Foundation 2008. Openldap software 2.4 administrators guide: Access control. 2009. http://www.openldap.org/doc/admin24/access-control.html.

Curso de OpenLdap

55

Apndice A e Questes de Concurso o


A.1 MPU 2010 (CESPE) - ANALISTA DE INFORMATICA / SUPORTE TECNICO - Cargo 27

Julgue os itens subsequentes a respeito dos padres X.500 e LDAP (lightweight directory access o protocol), usados em servios de diretrio. c o 109: o LDAP no dene o servio de diretrio em si, por isso, no contexto da arquitetura a c o cliente/servidor, o cliente, nesse padro, dependente da implementao do servio de diretrio a e ca c o que est no servidor. a 110: o padro X.500 especica um sistema de diretrio distribu que atende a consultas a o do quanto a objetos da rede. Esse padro pode ser utilizado para acessar informaoes acerca de a c servios de hardware, mas no de software. c a 111: no modelo funcional do padro X.500, o agente do usurio de diretrios um processo de a a o e aplicaao OSI (open system interconnection) que faz parte do diretrio e cuja funao fornecer c o c e aos agentes do sistema de diretrio acesso ` base de informaes. o a co 112: uma das caracter sticas do LDAP que as mensagens do protocolo de aplicao so e ca a transportadas diretamente pela camada TCP (transport control protocol) da arquitetura da Internet. Comentrios: a 109: o LDAP dene o protocolo de acesso as informaes do servio de diretrio (RFC-4511), co c o a base de dados LDAP (RFC-4512) que formam o servio de diretrio em si. O software cliente c o independente da implementaao LDAP do servio de diretrio do servidor. e c c o 110: as informaoes tipicamente armazenadas em um servio LDAP so sobre software e c c a hardware. 111: o agente do usurio de diretrios (Directory User Agent) um software utilizado para acesa o e sar as informaoes armazenadas no agentes do sistema de diretrio (Directory System Agent). c o O Directory User Agent no faz parte de Directory System Agent, e fornece ao administrador a da rede acesso a base de informaoes. ` c 112: uma das caracter sticas do LDAP que as mensagens do protocolo de aplicao so e ca a transportadas pela camada de transporte. No existe o conceito de camada TCP. a

Curso de OpenLdap

56

Apndice B e Licena c
Copyright (c) 2009 Reinaldo Gil Lima de Carvalho - reinaldoc@gmail.com

garantida a permiss~o para copiar, distribuir e/ou modificar este documento E a sob os termos da Licena de Documentaao Livre GNU (GNU Free Documentation c c~ License) Vers~o 1.2, publicada pela Free Software Foundation; com todas Seoes a c~ Secundrias Invariantes incluindo textos de Capa Frontal, e sem Textos de Quarta a Capa. Uma cpia da licena includa na seao intitulada "GNU Free Documentation o c e c~ License" ou "Licena de Documentaao Livre GNU". c c~ Uma traduo no ocial da GNU Free Documentation Licenseesta contida neste cap ca a tulo, sendo que em caso de dvidas a verso original deve ser consultada. Abaixo segue informaoes sobre u a c esta traduao: c Tradu~o: Norton T. Roman (norton@ic.unicamp.br) ca Revis~o: Jo~o S. O. Bueno Calligaris (gwidion@mpc.com.br) a a ltima Atualizaao: 01 de Maio de 2005. U c~ Cpias exatas e distribui~o deste documento s~o permitidas em qualquer meio o ca a desde que a nota de direitos autorais (copyright) e esta nota sejam preservadas.

B.1

Licena de Documentao Livre GNU c ca

Verso 1.2, Novembro de 2002 a Copyright c 2000, 2001, 2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. E permitido a qualquer um copiar e distribuir cpias exatas deste documento o de licena, embora no seja permitido alter-lo. c a a Prembulo a O propsito desta Licena fazer com que um manual, livro-texto, ou outro documento funcional o c e e util seja livre, garantindo a todos a liberdade efetiva de copi-lo e redistribui-lo, com ou sem a modicaoes, tanto comercialmente como no comercialmente. Em segundo lugar, esta Licena c a c fornece ao autor e ao editor um meio de obter crdito pelo seu trabalho, no sendo, ao mesmo e a tempo, considerados responsveis por modicaoes feitas por outros. a c Esta licena um tipo de esquerdo de cpia(copyleft), o que signica que trabalhos derivados c e o dos documentos devem, por sua vez, ser livres no mesmo sentido. Ela complementa a Licena Pblica c u Geral GNU, a qual uma licena de esquerdo de cpia criada para programas livres. e c o
Curso de OpenLdap

57

Curso de OpenLdap

Apndice B. Licena e c

Criamos esta Licena para que seja usada em manuais para programas livres, porque programas c livres precisam de documentao livre: um programa livre deveria vir com manuais que ofeream ca c as mesmas liberdades que o programa oferece. Mas esta Licena no est limitada a manuais de c a a programas de computador; ela pode ser usada para qualquer trabalho de texto, independentemente do assunto ou se publicado como um livro impresso. Ns recomendamos esta Licena principalmente e o c para trabalhos cujo propsito instruao ou referncia. o e c e Aplicabilidade e denies co Esta licena se aplica a qualquer manual ou outro trabalho, em qualquer meio, que contenha uma c nota introduzida pelo detentor dos direitos autorais dizendo que o documento pode ser distribu do sob os termos desta. Tal nota garante uma licena mundial, livre de royalties, de durao ilimitada, c ca para usar este trabalho sob as condies aqui colocadas. O Documento, abaixo, se refere a qualquer co tal manual ou trabalho. Qualquer membro do pblico um licenciado, e ser tratado por voc. u e a e Voc aceita a licena se copiar, modicar ou distribuir o trabalho de um modo que necessite de e c permisso de acordo com a lei de direitos autorais. a Uma Verso Modicadado Documento se refere a qualquer trabalho contendo o Documento ou a uma parte deste, quer seja copiado sem modicaes, quer com modicaoes e/ou traduzido para co c outra l ngua. Uma Seo Secundria um apndice com nome ou uma seao inicial do Documento que trata ca a e e c exclusivamente da relao dos editores ou autores do Documento com seu assunto geral (ou temas ca relacionados) e no contm nada que possa estar diretamente dentro do assunto geral. Assim, se a e o Documento em parte um livro-texto de matemtica, uma Seo Secundria no pode explicar e a ca a a nada de matemtica. Tal relaao pode ser uma conexo histrica com o assunto ou com temas a c a o relacionados, ou tratar de questes legais, comerciais, loscas, ticas ou pol o o e ticas com relao a ca eles. Seoes Invariantesso certas Sees Secundrias cujos t c a co a tulos so designados como sendo de a Seoes invariantes na nota que arma que o Documento publicado sob esta Licena. Se uma c e c seao no se encaixa na deniao acima de Secundria, ento no se permite que seja designada c a c a a a como Invariante. O Documento pode no conter nenhuma Seo Invariante. Se o documento no a ca a identicar quaisquer Seoes Invariantes, ento no h nenhuma. c a a a Textos de Capaso certas passagens de texto que so listada como Textos de Capa Frontal ou a a Texto de Quarta Capa, na nota que arma que o Documento publicado sob esta Licena. Um e c Texto de Capa Frontal pode ter no mximo 5 palavras, e um Texto de Quarta Capa pode ter no a mximo 25 palavras. a Uma cpia Transparentedo Documento signica uma cpia que pode ser lida pelo computador, o o representada em um formato cuja especicaao esteja dispon ao pblico geral, que seja apropric vel u ada para a imediata reviso do documento usando-se editores de texto genricos ou (para imagens a e compostas de pixeis) programas grcos genricos ou (para desenhos) algum editor de desenhos ama e plamente dispon vel, e que seja apropriado para incluso em formatadores de texto ou para traduao a c automtica para uma variedade de formatos apropriados para incluso em formatadores de texto. a a Uma cpia feita em outro formato de arquivo Transparente cuja marcao, ou ausncia desta, foi o ca e manipulada para impedir ou desencorajar modicaao subseqente pelos leitores no Transparente. c u a e Um formato de imagem no Transparente se usado em lugar de qualquer quantidade substancial a e de texto. Uma cpia que no Transparente chamada Opaca. o a e e Exemplos de formatos apropriados para cpias Transparentes incluem ASCII puro sem marcaao, o c formato de entrada Texinfo, LaTex, SGML ou XML usando um DTD publicamente dispon vel, e HTML padro simples, PostScript ou PDF projetados para modicao por humanos. Exemplos a ca de formatos de imagem transparentes incluem PNG, XCF e JPG. Formatos Opacos incluem formatos proprietrios que podem ser lidos e editados somente por processadores de texto proprietrios, a a

Reinaldo de Carvalho - reinaldoc@gmail.com

58

Curso de OpenLdap

Apndice B. Licena e c

SGML ou XML para os quais o DTD e/ou ferramentas de processamento no so largamente disponia a bilizadas, e HTML, Postscript ou PDF gerados automaticamente com propsito apenas de sa por o da alguns processadores de texto. Pgina de T a tulosignica, para um livro impresso, a prpria pgina do t o a tulo, alm das pginas e a subseqentes necessrias para conter, de forma leg u a vel, o material que esta Licena requer que aparea c c na pgina do t a tulo. Para trabalhos em formatos que no tm uma pgina de t a e a tulo assim, Pgina a de T tulosignica o texto prximo ` ocorrncia mais proeminente do t o a e tulo do trabalho, precedendo o in do corpo do texto. cio Uma seo Intitulada XYZsignica uma sub-unidade com nome do Documento cujo t ca tulo ou e precisamente XYZ ou contm XYZ em parnteses seguindo o texto que traduz XYZ em outra l e e ngua. (Aqui XYZ representa o nome de uma seao espec c ca mencionado acima, tal como Agradecimentos, Dedicatria, Apoio, ou Histrico.) Preservar o T o o tulode uma seo assim quando voc ca e modica o Documento signica que ela continua sendo uma seao Intitulada XYZde acordo com c esta deniao. c O Documento pode incluir Notas de Garantia em seguida ` nota que arma que esta Licena a c se aplica ao Documento. Estas Notas de Garantia so tidas como inclusas por referncia nesta a e Licena, mas somente com relao as notas de garantia: qualquer outra implicaao que estas Notas c ca ` c de Garantia possam ter anulada e no tem efeito algum no contedo desta Licena. e a u c Cpias literais o Voc pode copiar e distribuir o Documento em qualquer meio, comercialmente ou no-comercialmente, e a desde que esta licena, as notas de direitos autorais (copyright), e a nota de licena armando que esta c c Licena se aplica ao Documento sejam reproduzidas em todas as cpias, e que voc no inclua outras c o e a condioes, quaisquer que sejam, as condies desta Licena. Voc no pode usar de medidas tcnicas c ` co c e a e para obstruir ou controlar a leitura ou cpia futura das cpias que voc zer ou distribuir. Contudo, o o e voc pode aceitar compensaao em troca das cpias. Se voc distribuir um nmero sucientemente e c o e u grande de cpias, voc deve tambm respeitar as condioes na seao 4. o e e c c Voc pode tambm emprestar cpias, sob as mesmas condioes acima mencionadas, e voc e e o c e tambm as pode mostrar publicamente. e Copiando em quantidade Se voc publicar cpias impressas (ou cpias em um meio que normalmente tem capas impressas) e o o do documento, em nmero maior que 100, e a nota de licena do Documento requer Textos de Capa, u c voc deve encadernar as cpias em capas que carreguem, de forma clara e leg e o vel, todos estes Textos de Capa: Textos de Capa Frontal na capa frontal, e Textos de Quarta Capa na quarta capa. Ambas as capas devem tambm identicar, de forma clara e leg e vel, voc como o editor das cpias. A capa e o frontal deve apresentar o t tulo completo com todas as palavras deste igualmente proeminentes e vis veis. Voc pode adicionar outro material nas capas. Cpias com mudanas limitadas as capas, e o c ` desde que preservando o t tulo do Documento e satisfazendo estas condies, podem ser tratadas co como cpias literais em outros aspectos. o Se os textos necessrios a qualquer uma das capas so demasiado volumosos para serem inclu a a dos de forma leg vel, voc deve colocar os primeiros listados (quantos couberem razoavelmente) na prpria e o capa, e continuar o resto nas pginas adjacentes. a Se voc publicar ou distribuir cpias Opacas do Documento em nmero maior que 100, voc deve e o u e ou incluir uma cpia Transparente leg por computador juntamente com cada cpia Opaca, ou o vel o dizer em, ou juntamente com, cada cpia Opaca um endereo de rede a partir do qual o pblico geral o c u possa acessar e obter, usando protocolos de rede pblicos padro, uma cpia Transparente completa u a o do Documento, livre de material adicionado. Se voc decidir pela segunda opo, voc deve seguir e ca e passos razoavelmente prudentes, quando comear a distribuir as cpias Opacas em quantidade, para c o
Reinaldo de Carvalho - reinaldoc@gmail.com

59

Curso de OpenLdap

Apndice B. Licena e c

garantir que esta cpia transparente permanecer acess no local indicado por pelo menos um ano o a vel aps a ultima vez que voc distribuir uma cpia Opaca (diretamente ou atravs de seus agentes ou o e o e distribuidor) desta edio ao pblico. ca u E solicitado, mas no exigido, que voc contate os autores do Documento muito antes de redisa e tribuir qualquer nmero grande de cpias, para dar a eles uma chance de lhe fornecer uma verso u o a atualizada do Documento. Modicaoes c Voc pode copiar e distribuir uma Verso Modicada do Documento sob as condies das sees e a co co 2 e 3 acima, desde que voc fornea a Verso Modicada estritamente sob esta Licena, com a e c a c Verso Modicada no papel de Documento, permitindo assim a distribuio e modicaao da Verso a ca c a Modicada a quem quer que possua uma cpia desta. Alm disso, voc deve executar os seguintes o e e procedimentos na Verso Modicada: a A. Use na Pgina de T a tulo (e nas capas, se alguma) um t tulo distinto do t tulo do Documento, e dos de verses anteriores (os quais devem, se houver algum, ser listados na seo Histricodo o ca o Documento). Voc pode usar o mesmo t e tulo que uma verso prvia se o editor original daquela a e verso assim o permitir. a B. Liste na Pgina de T a tulo, como autores, uma ou mais pessoas ou entidades responsveis a pela autoria ou modicaoes na Verso Modicada, juntamente com pelo menos cinco dos autores c a principais do Documento (todos seus autores principais, se houver menos que cinco), a menos que estes lhe desobriguem desta exigncia. e C. Mencione na Pgina de T a tulo o nome do editor da Verso Modicada, como seu editor. a D. Preserve todas as notas de direitos autorais (copyright) do Documento. E. Adicione uma nota apropriada de direitos autorais para suas modicaes, adjacente as outras co ` notas de direitos autorais. F. Inclua, imediatamente aps as notas de direitos autorais, uma nota de licena dando ao pblico o c u permisso para usar a Verso Modicada sob os termos desta Licena, na forma mostrada no Adendo a a c abaixo. G. Preserve naquela nota de licena a lista completa de Seoes Invariantes e Textos de Capa c c requeridos dados na nota de licena do Documento. c H. Inclua uma cpia inalterada desta Licena. o c I. Preserve a seo intitulada Histrico, preserve seu t ca o tulo, e adicione a esta um item mencionando pelo menos o t tulo, ano, novos autores, e editor da Verso Modicada conforme inclu na a do Pgina de T a tulo. Se no houver uma seo intitulada Histricono Documento, crie uma mencioa ca o nando o t tulo, ano, autores e editor do Documento como mostrado na Pgina de T a tulo, em seguida adicione um item descrevendo a Verso Modicada como mencionado na sentena anterior. a c J. Preserve o endereo de rede, se algum, dado no Documento para acesso pblico a uma cpia c u o Transparente deste e, da mesma maneira, os endereos de rede dados no Documento para verses c o prvias nas quais este se baseia. Estes podem ser colocados na seo Histrico. Voc pode omitir e ca o e um endereo de rede para um trabalho que foi publicado pelo menos quatro anos antes do Documento c em si, ou se o editor original da verso ` qual o endereo se refere der permisso. a a c a K. Para qualquer seao intitulada Agradecimentosou Dedicatria, preserve o t c o tulo da seao, c e preserve dentro da seo toda a substncia e tom de cada um dos agradecimentos e/ou dedicatrias ca a o l mencionados. a L. Preserve todas as Sees Invariantes do Documento, inalteradas no seu texto e t co tulos. Nmeros u de seo ou o equivalente no so considerados parte dos t ca a a tulos das sees. co M. Apague qualquer seo intitulada Apoio. Tal seao no ser inclu na Verso Modicada. ca c a da a N. No modique o t a tulo de qualquer seao a ser intitulada Apoioou que resulte em conito c com t tulo de qualquer Seo Invariante. ca O. Preserve quaisquer notas de garantia.
Reinaldo de Carvalho - reinaldoc@gmail.com

60

Curso de OpenLdap

Apndice B. Licena e c

Se a Verso Modicada incluir novas sees iniciais ou apndices que sejam qualicados como a co e Seoes Secundrias, e no contiver material copiado do Documento, voc pode, a seu critrio, tornar c a a e e algumas dessas ou todas essas seoes em invariantes. Para fazer isso, adicione seus t c tulos ` lista a de Sees Invariantes na nota de licena da Verso Modicada. Estes t co c a tulos devem ser distintos de quaisquer outros t tulos de sees. co Voc pode incluir uma seo intitulada Apoio, dado que ela contenha nada alm de apoio e ca e recebido para sua Verso Modicada por vrias fontes por exemplo, notas do revisor ou de que o a a texto foi aprovado por uma organizaao como a deniao autoritativa de um padro. c c a Voc pode adicionar uma passagem de at cinco palavras como Texto de Capa Frontal, e uma e e passagem de at 25 palavras como Texto de Quarta Capa, ao m da lista de Textos de Capa na e Verso Modicada. Somente uma passagem de Texto de Capa Frontal e uma de Texto de Quarta a Capa pode ser adicionado por (ou atravs de arranjos feitos por) uma entidade qualquer. Se o e Documento j incluir um texto de capa para a mesma capa, previamente inclu por voc ou por a do e arranjo feito pela mesma entidade em cujo nome voc est agindo, voc no pode adicionar outro; e a e a mas voc pode substituir o antigo, com permisso expl e a cita do editor anterior, que o incluiu. O(s) autor(es) e editor(es) do Documento, por esta Licena, no do permisso para seus nomes c a a a serem usados para publicidade ou defesa ou apoio impl cito para qualquer Verso Modicada. a Combinando documentos Voc pode combinar o documento com outros documentos publicados sob esta Licena, sob os e c termos denidos na seo 4 acima para verses modicadas, desde que voc inclua na combinaao ca o e c todas as Seoes Invariantes de todos os documentos originais, sem modicaoes, e as liste como Seoes c c c Invariantes de seu trabalho combinado, na sua nota de licena, e que voc preserve todas as Notas c e de Garantia. O trabalho combinado somente precisa conter uma cpia desta Licena, e mltiplas Seoes Invario c u c antes idnticas podem ser substitu e das por uma unica cpia. Se houver mltiplas Sees Invariantes o u co com o mesmo nome, porm com contedos diferentes, torne o t e u tulo de cada uma destas sees co unico, adicionando ao m dele, entre parnteses, o nome do autor ou editor original desta seo, se e ca conhecido, ou ento um nmero unico. Faa o mesmo ajuste nos t a u c tulos de seao na lista de Sees c co Invariantes na nota de licena do trabalho combinado. c Na combinao, voc deve combinar quaisquer sees intituladas Histriconos vrios documenca e co o a tos originais, formando uma seao intitulada Histrico; do mesmo modo, combine quaisquer seoes c o c intituladas Agradecimentos, e quaisquer sees intituladas Dedicatria. Voc deve apagar todas co o e as sees intituladas Apoio. co Coleoes de documentos c Voc pode fazer uma coleo consistindo do Documento e outros documentos publicados sob esta e ca Licena, e substituir as cpias individuais desta Licena, nos vrios documentos, por uma unica cpia c o c a o a ser inclu na coleo, desde que voc siga as regras desta Licena para cpias literais de cada da ca e c o documento em todos os outros aspectos. Voc pode extrair um unico documento desta coleo, e distribu individualmente sob esta e ca -lo Licena, desde que voc insira uma cpia desta Licena no documento extra c e o c do, e siga esta Licena c em todos os outros aspectos com relaao a cpia literal do documento. c ` o Agregaao a trabalhos independentes c Uma compilao do Documento ou seus derivados com outros documentos ou trabalhos separados ca e independentes, dentro de ou junto a um volume de um meio de armazenagem ou distribuiao, c congura um agregadose os direitos autorais resultantes da compilao no forem usados para ca a
Reinaldo de Carvalho - reinaldoc@gmail.com

61

Curso de OpenLdap

Apndice B. Licena e c

limitar os direitos legais dos usurios desta alm do que os trabalhos individuais permitem. Quando a e o Documento inclu em um agregado, esta Licena no se aplica aos outros trabalhos no agregado e do c a que no forem, por sua vez, derivados do Documento. a Se o requerimento do Texto de Capa da seao 3 for aplicvel a estas cpias do documento, ento, c a o a se o Documento for menor que metade do agregado inteiro, os Textos de Capa do Documento podem ser colocados em capas que encerrem o Documento dentro do agregado, ou o equivalente eletrnico o das capas se o Documento estiver em formato eletrnico. Do contrrio, eles devem aparecer como o a capas impressas que envolvam o agregado inteiro. Traduoes c Uma traduao considerada como sendo um tipo de modicaao, ento voc pode distribuir c e c a e traduoes do Documento sob os termos da seo 4. A substituio de Seoes Invariantes por tradues c ca ca c co requer permisso especial dos detentores dos direitos autorais, embora voc possa incluir tradues a e co de algumas ou todas as Seoes Invariantes juntamente as verses originais destas. Voc pode incluir c ` o e uma traduao desta Licena, e todas as notas de licena no Documento, e qualquer Nota de Garantia, c c c desde que voc tambm inclua a verso original em Ingls desta Licena e as verses originais das e e a e c o notas de licena e garantia. Em caso de discordncia entre a traduao e a verso original desta c a c a Licena ou nota de licena ou garantia, a verso original prevalecer. c c a a Se uma seo no Documento for intitulada Agradecimentos, Dedicatria, ou Histrico, o ca o o requerimento (seao 4) de Preservar seu T c tulo (seao 1) tipicamente exigir a mudana do t c a c tulo em si. Trmino e Voc no pode copiar, modica, sub-licenciar, ou distribuir o Documento a exceo do modo e a ` ca expressamente provido por esta Licena. Qualquer outra tentativa de copiar, modicar, sub-licenciar c ou distribuir o Documento anulada, e implicar em trmino automtico de seus direitos sob esta e a e a Licena. Contudo, as partes que receberam cpias, ou direitos, de voc sob esta Licena no tero c o e c a a suas licenas terminadas enquanto tais partes permanecerem em total acordo com a Licena. c c Revises futuras desta licena o c A Free Software Foundation pode publicar novas verses revisadas da Licena de Documentaao o c c Livre GNU de tempos em tempos. Tais verses sero similares em esp o a rito a verso presente, embora ` a possam diferir em detalhes para abordar novos problemas ou questes. Veja http://www.gnu.org/copyleft/. o A cada verso da Licena dado um nmero de verso distinto. Se o Documento especicar que a c e u a um nmero de verso particular desta Licena ou qualquer verso posteriorse aplica a ele, voc u a c a e tem a opao de seguir os termos e condioes ou da verso especicada ou de qualquer verso posterior c c a a que tenha sido publicada (no como rascunho) pela Free Software Foundation. Se o documento no a a especicar um nmero de verso desta Licena, voc pode escolher qualquer verso j publicada (no u a c e a a a como rascunho) pela Free Software Foundation.

Reinaldo de Carvalho - reinaldoc@gmail.com

62

You might also like