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.088 ]

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

Sim, quebre o Debian!

LILO gráfico e animado no Slackware

google-drive-ocamlfuse - Monte seu Google Drive usando o FUSE

Criando facilmente um servidor APACHE2 + PHP5 (ou PHP4) + SNMP + MRTG

Instalação do Funtoo GNU/Linux em VirtualBox

  
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