Ubuntu 10.04 OpenLDAP NFS QUOTA

Pergunta-se: Como LDAP e NFS podem juntos permitir que uma pessoa, ao digitar seu login e sua senha em qualquer computador conectado à rede, possa ter acesso a sua conta particular que fica armazenada remotamente em um computador central?

A resposta é simples: o NFS permite o compartilhamento de arquivos, enquanto o LDAP fica responsável pela autenticação de usuários.

[ Hits: 58.751 ]

Por: Anderson Francisco da Silva em 07/05/2011


LDAP - Raiz, Administrador, Grupos, Usuários e Máquinas



Agora é o momento de criar a raiz do servidor LDAP além da senha de usuário. Para isso, crie o arquivo "/etc/ldap/ldaproot.ldif", lembrando de alterar o parâmetro "userPassword" para o valor obtido pelo "slappasswd". À raiz do servidor LDAP é necessário acrescentar os itens "Groups", "Users" e "Machines" (em consonância com o padrão do "ldapscripts" discutido adiante).

# LDAP Root
dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: example.com
dc: example
description: My LDAP Root
#
# LDAP Administrator
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
description: LDAP administrator
#
# Groups
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
#
# Users
dn: ou=Users,dc=example,dc=com
objectClass: organizationalUnit
ou: Users
#
# Machines
dn: ou=Machines,dc=example,dc=com
objectClass: organizationalUnit
ou: Machines

A importação do arquivo "/etc/ldap/ldaproot.ldif", pode ser realizada por meio do comando "ldapadd" e verificada pelo "ldapsearch".

# nano /etc/ldap/ldaproot.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/ldaproot.ldif

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "dc=example,dc=com"

adding new entry "cn=admin,dc=example,dc=com"

adding new entry "ou=Groups,dc=example,dc=com"

adding new entry "ou=Users,dc=example,dc=com"

adding new entry "ou=Machines,dc=example,dc=com" ...

# ldapsearch -W -x -b dc=example,dc=com -D cn=admin,dc=example,dc=com

Propõe-se aqui mudanças nas ACLs "(Access Control List)", nas quais critérios são eliminados pelo arquivo "/etc/ldap/config.ldif" (e adicionadas pelo "/etc/ldap/acl.ldif"). O arquivo 'config' foi alterado em relação ao proposto neste artigo, porque os parâmetros "olcAuthzRegexp" e "olcAccess" não existiam. Dessa forma as linhas com "delete:" foram excluídas.

dn: cn=config
changetype: modify
#
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
#
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config
#
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
#
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess

A importação do arquivo "/etc/ldap/config.ldif", pode ser realizada por meio do comando "ldapadd" e verificada pelo "ldapsearch".

# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/config.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "olcDatabase={-1}frontend,cn=config"

modifying entry "olcDatabase={0}config,cn=config"

modifying entry "olcDatabase={0}config,cn=config"

modifying entry "olcDatabase={0}config,cn=config" ...

# ldapsearch -W -x -b dc=example,dc=com -D cn=admin,dc=example,dc=com

Para alterar as permissões de acesso basta incluir as políticas desejadas nas ACL's (como o "grant" dos banco de dados relacionais). Os 3 grupos de permissões do arquivo "/etc/ldap/acl.ldif" significam a grosso modo:
  • os atributos userPassword e shadowLastChange quando acessados por "admin.example.com" podem ser alterados, enquanto os usuários anônimos podem utilizá-los somente para autenticação, já os próprios usuários podem alterá-los, e todos os demais não podem nem sequer visualizá-los.
  • as bases podem ser lidas por qualquer um.
  • todas as outras informações podem ser alteradas somente por "admin.example.com" mas qualquer um pode acessá-las.

# Change Permissions
dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read

Note que após as alterações nas permissões, deve-se utilizar o 1o formato não mais o 2o:
  • ldapmodify -W -x -D cn=admin,cn=config -f file
  • ldapadd -Y EXTERNAL -H ldapi:/// -f file

A importação do arquivo "/etc/ldap/acl.ldif", pode ser realizada por meio do comando "ldapmodify" e verificada pelo "ldapsearch".

# ldapmodify -W -x -D cn=admin,cn=config -f /etc/ldap/acl.ldif
# ldapsearch -W -x -b dc=example,dc=com -D cn=admin,dc=example,dc=com
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação do Ubuntu e NFS no Servidor e Cliente
   3. LDAP no Servidor
   4. LDAP - Esquemas, Senhas e Base de Dados
   5. LDAP - Raiz, Administrador, Grupos, Usuários e Máquinas
   6. LDAP Scripts
   7. LDAP no Cliente
   10. Quota de Usuário
   11. Conclusão e Bibliografia
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Distribuição híbrida

Instalação do Nagios Core no CentOS 5.5

Assistindo vídeos no XMMS

Instalando Apache Hadoop

Configurando uma placa de rede no Linux

  
Comentários
[1] Comentário enviado por ricardoolonca em 12/05/2011 - 11:32h

Parabéns pelo artigo. Muito bem detalhado. Só não está perfeito porque faltam as páginas 8 e 9 rsrsrsr.

[2] Comentário enviado por roberto06 em 02/08/2011 - 16:21h

Excelente artigo. Eu só queria saber como faço para não logar com o mesmo usuário em máquinas diferentes. Pq aqui, com qualquer usuario, eu consigo logar com ele em varias maquinas ao mesmo tempo.

[3] Comentário enviado por anderson.pocos em 02/08/2011 - 16:32h

olá Roberto, obrigado pelo comentário! Temo que talvez você esteja pensando na contramão! A ideia é que se um computador zuar, o usuário possa ir para a máquina do lado. No mais qual é o problema de uma pessoa usar a máquina da outra se o que verá é sempre o próprio desktop? Estamos usando essa solução aqui a 6 meses e já estamos com 700 usuários e uns 130 computadores... emocionante véi...!!!

[4] Comentário enviado por roberto06 em 03/08/2011 - 15:40h

Anderson, acho que não entendeu minha pergunta. Exemplo: Eu logo com o usuario aluno na máquina 1. Depois sem encerrar a sessão, eu consigo logar com o mesmo usuário aluno na maquina 2 ao mesmo tempo. só queria que isso não fosse possível,. Mas no resto, isso tá perfeito. Valeu cara!!!

[5] Comentário enviado por anderson.pocos em 03/08/2011 - 15:54h

olá Roberto, sua tem ideia tem fundamento sim... bloquear dois logins da mesma pessoa, né? entendi! aqui ainda não tentamos bloquear isso não mas obrigado pela dica!

[6] Comentário enviado por roberto06 em 03/08/2011 - 15:57h

valeu cara, vo contiuar caçando aki na net como eu posso fazer isso. obrigado

[7] Comentário enviado por roberto06 em 12/09/2011 - 10:22h

gostaria de saber, como faz o backup de tudo ...

[8] Comentário enviado por anderson.pocos em 12/09/2011 - 10:56h

### BACKUP ###
root@dell:/# /etc/init.d/slapd stop
root@dell:/# ldapsearch -x -D cn=admin,dc=example,dc=com -w SENHAADMINLDAP -b dc=example, dc=com -LLL > backup-2011-09-12.ldif
root@dell:/# /etc/init.d/slapd start

### RESTORE ###
root@dell:/# /etc/init.d/slapd stop
root@dell:/# slapadd -l backup-2011-09-12.ldif
root@dell:/# slapindex -v
root@dell:/# chown openldap: /var/lib/ldap/*
root@dell:/# /etc/init.d/slapd start

"_ eu posso invocar espíritos!"
"_ mas eles virão se você os chamar?"

[9] Comentário enviado por roberto06 em 12/09/2011 - 11:51h

Valeu andersooon! tu é fera!!!

[10] Comentário enviado por roberto06 em 15/09/2011 - 09:37h

Mas está dando o seguinte erro!!! Can't contact LDAP server (-1)


[11] Comentário enviado por anderson.pocos em 16/09/2011 - 21:42h

e aí... já conseguiu conectar?

[12] Comentário enviado por roberto06 em 20/09/2011 - 09:19h

ainda não cara!!! da erro

[13] Comentário enviado por Paulo Oliveira em 22/09/2011 - 12:49h

Roberto06,

Algumas observações muito importantes:

Para o comando ldapsearch a base deverá estar funcionando, já para o ldapcat é desaconselhável.
1º - tente startar a base (/etc/init.d/slapd start) e depois execute (ldapsearch -x -D cn=admin,dc=example,dc=com -w SENHAADMINLDAP -b dc=example, dc=com -LLL > backup-2011-09-12.ldif)
2º Caso o erro ainda persista, verifique os parâmetros da sua base no comando ldapsearch.

[14] Comentário enviado por fetc em 17/12/2011 - 15:08h

Cara, parabéns, muito bem e explicativo o artigo, só um problema, gerei a senha em MD% com o slapdpasswd, porém quando vou verificar a senha com o ldapsearch e a digito, aparece ldap_bind: Invalid credentials (49), tentei com a senha secret e o seu MD5 e também não deu, sabe o que pode ser amigo?
Obrigado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts