Differences

This shows you the differences between two versions of the page.

Link to this comparison view

centralizando_a_autenticacao_dos_servidor_com_openldap_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Centralizando a autenticação dos servidor Linux com OpenLDAP e Debian Squeeze ======
  
 +
 +**O que é LDAP?**
 +
 +LDAP (Lightweight Directory Access Protocol) é um protocolo padrão inicialmente projetado para o acesso a serviços de diretório X.500. O LDAP é a versão reduzida de um protocolo chamado DAP (Directory Access Protocol). A principal função do DAP era a de estabelecer,​ de forma padrão, regras de comunicação de acesso com um diretório baseado no padrão X.500, mas por ser complexo permitiu o surgimento do LDAP que implementa apenas as operações básicas do DAP: Bind, Read, List, Search, Compare, Modify, Add, Delete e ModifyRDN.
 +
 +Esta introdução é importante para que saibamos exatamente o que é um serviço de diretório. Aqueles que já têm claro este conceito podem, com segurança, ignorar o próximo parágrafo.
 +
 +Um serviço de diretório contém informações em forma de entradas. Um bom exemplo poderia ser uma lista telefônica,​ que contém entradas: nomes de pessoas, nomes de empresas, etc. Cada entrada contém uma série de dados que, de maneira formal, chamamos de atributos. Estes dados podem ser o nome da empresa, telefone, endereço, etc. Uma lista telefônica destaca-se por ser um guia no qual podemos realizar consultas com freqüência,​ ao qual poucas vezes, porém, iremos adicionar novas entradas. Vale a pena destacar também que, muitas vezes, poderemos fazer consultas nesta lista por ordem alfabética,​ pelo tipo de empresa, por endereço. Em poucas palavras, um diretório é uma base de dados contendo diferentes tipos de informações (a lista telefônica foi apenas um exemplo) e oferece uma versatilidade muito grande na hora de buscar a informação desejada.
 +
 +Então, para que serve o LDAP? O LDAP é simplesmente um protocolo encarregado por definir a maneira através da qual se realizam as pesquisas em uma base de dados de "​entradas"​ (como o exemplo mencionado anteriormente). Protocolo é um conjunto de regras que devem ser seguidas na hora de se criar uma aplicação que siga um padrão, no caso, o padrão LDAP.
 +
 +Anteriormente falamos sobre X.500. Este é um protocolo que era utilizado antigamente de forma bastante ampla como serviço de diretório. Inicialmente o LDAP foi criado somente para servir de interface entre os clientes que queriam fazer consultas ao servidor X.500. Isto foi decorrente das deficiências que este protocolo tinha e de sua extrema lentidão. Mais adiante concluiu-se que, como a maioria das consultas chegava normalmente através da interface LDAP, seria muito mais vantajoso utilizar o LDAP como um serviço independente de diretório sem a necessidade de se utilizar o X.500.
 +
 +**O que é OpenLDAP?**
 +
 +Agora que já sabemos o que é LDAP, veremos o que é OpenLDAP. OpenLDAP é simplesmente um projeto colaborativo livre e totalmente funcional que centraliza a criação de uma série de ferramentas que implementam o protocolo LDAP. Pode ser um servidor LDAP ou qualquer ferramenta onde o cliente possa acessar ou gerenciar a informação através deste servidor.
 +
 +O servidor LDAP nada mais é que um pedaço de software encarregado de gerenciar de forma interna a informação,​ porém não é responsável por armazená-la. Isto ocorre porque o protocolo LDAP não é designado para o armazenamento,​ mas sim para a gestão da informação armazenada. Ou seja, o protocolo não define a forma de armazenar esta informação,​ como, por exemplo, a informação dos telefones de uma lista telefônica. Ele simplesmente é capaz de gerenciá-la,​ não importando aonde esta estiver armazenada.
 +
 +Vejamos um exemplo:
 +
 +{{:​imagem_ldap_pt.png|}}
 +
 +
 +O cliente faz uma consulta qualquer no diretório LDAP, que gerencia esta consulta devolvendo a informação solicitada, buscada na base de dados. Isto é feito de uma forma bastante simples, pois o cliente somente precisa saber como fazer a consulta. O servidor encarrega-se de buscar estes dados na base de dados correta.
 +
 +**O que é Active Directory?​**
 +
 +Active Directory é uma outra implementação do protocolo LDAP, sob a responsabilidade da Microsoft. Isto somente é possível porque o protocolo LDAP é um padrão aberto, permitindo que cada um o implemente da sua maneira. Existem muitas outras implementações,​ mas neste handbook nosso foco será nas mais conhecidas: OpenLDAP e Active Directory.
 +
 +A implementação do Active Directory é um bom exemplo do potencial do protocolo LDAP, não se limitando somente ao funcionamento definido pelo protocolo, mas estendendo-o com a criação de novas funcionalidades,​ o que o torna um sistema muito mais amplo que um simples serviço de diretórios. O Active Directory implementa, além do protocolo LDAP, outras funcionalidades como o DNS (Domain Name System) e o protocolo de autenticação Kerberos.
 +
 +O Active Directory é utilizado como base de dados centralizada de informações necessárias para a operação de uma rede distribuída de computadores. Para poder operar como servidor central de uma rede distribuída,​ é necessário que armazene informações de usuários e suas permissões,​ grupos, máquinas existentes na rede, recursos comuns, seja de disco ou físicos, como impressoras e outros periféricos. Além disto, deve possuir um sistema de autenticação. ​
 +
 +**Conclusão**
 +
 +O LDAP trata-se de um protocolo aberto, rápido e eficaz que nos permite criar ferramentas de servidores ou de clientes compartilhando um mesmo padrão e facilitando a interoperabilidade em ambientes heterogêneos com diferentes máquinas, sistemas operacionais ou implementações do mesmo. Desta forma, um servidor OpenLDAP pode ser capaz de interoperar com clientes ou ferramentas de gestão desenvolvidas por outros fabricantes,​ como Microsoft, Novell, etc. Entretanto, com ferramentas livres desenvolvidas pelo projeto OpenLDAP é possível interoperar com um servidor Active Directory, inclusive chegando a integrar uma máquina em Linux dentro de um domínio gerenciado por Active Directory.
 +
 + Ideia principal deste how to é mostrar como podemos centralizar a autenticação de nossos servidores Linux na rede de uma forma fácil, controlando os nosso usuário e grupos com um frontend web. 
 +
 +  - Ip do servidor: 10.0.0.26
 +  - Domínio: douglasqsantos.com.br
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Sempre quanto terminar a edição de algum arquivo .ldif no vim sempre pressione F7 para ele remover os espaços nos finais de linha que sempre da merda ;)
 +
 +Vamos fazer a instalação dos pacotes necessários.
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y && aptitude install slapd ldap-utils -y
 +#Aqui vamos ter que informar a senha para o Administrador do nosso LDAP.
 +</​sxh>​
 +
 +Agora vamos checar se o nosso servidor esta trabalhando.
 +<sxh bash>
 +
 +ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +dn: cn=config
 +dn: cn=module{0},​cn=config
 +dn: cn=schema,​cn=config
 +dn: cn={0}core,​cn=schema,​cn=config
 +dn: cn={1}cosine,​cn=schema,​cn=config
 +dn: cn={2}nis,​cn=schema,​cn=config
 +dn: cn={3}inetorgperson,​cn=schema,​cn=config
 +dn: olcBackend={0}hdb,​cn=config
 +dn: olcDatabase={-1}frontend,​cn=config
 +dn: olcDatabase={0}config,​cn=config
 +dn: olcDatabase={1}hdb,​cn=config
 +</​sxh>​
 +
 +Agora vamos inserir a senha do admin do nosso LDAP, mas primeiro temos que gerar um hash da senha.
 +<sxh bash>
 +
 +slappasswd -s senha
 +{SSHA}F4oAyMcAPBlNgRascGQgR5KspB6/​HWos
 +</​sxh>​
 +
 +**OBS: NÃO PODE HAVER ESPAÇOS APÓS APÓS O ÚLTIMO CARACTER DA LINHA NO ARQUIVO .LDIF SENÃO VAMOS OBTER ERRO NA IMPORTAÇÃO DOS ARQUIVOS EXEMPLO DE ERRO** ​
 +<sxh bash>
 +
 +ldap_add: Invalid syntax (21) additional info: objectClass:​ value #1 invalid per syntax
 +</​sxh>​
 +
 +Vamos consultar a nossa base LDAP
 +<sxh bash>
 +
 +ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcRootDN olcRootPW
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +dn: cn=config
 +
 +dn: cn=module{0},​cn=config
 +
 +dn: cn=schema,​cn=config
 +
 +dn: cn={0}core,​cn=schema,​cn=config
 +
 +dn: cn={1}cosine,​cn=schema,​cn=config
 +
 +dn: cn={2}nis,​cn=schema,​cn=config
 +
 +dn: cn={3}inetorgperson,​cn=schema,​cn=config
 +
 +dn: olcBackend={0}hdb,​cn=config
 +
 +dn: olcDatabase={-1}frontend,​cn=config
 +
 +dn: olcDatabase={0}config,​cn=config
 +olcRootDN: cn=admin,​cn=config
 +
 +dn: olcDatabase={1}hdb,​cn=config
 +olcRootDN: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +olcRootPW: {SSHA}ICTJMI27hEsmf2Y29dNuuj31+viZNUMp
 +</​sxh>​
 +
 +OBS: Em alguns casos note que não temos um olcRootPW depois de dn: olcDatabase={0}config,​cn=config,​ que é a senha da administração da configuração do LDAP, com isso vamos ter que inserir uma, caso contrário podemos modificar ela.
 +
 +Agora vamos criar o arquivo para ser importado com a senha do nosso admin do config LDAP, caso ela ainda não exista.
 +<sxh bash>
 +
 +vim /​root/​admin.mod.ldif
 +dn: olcDatabase={0}config,​cn=config
 +changetype: modify
 +replace: olcRootPW
 +olcRootPW: {SSHA}F4oAyMcAPBlNgRascGQgR5KspB6/​HWos
 +</​sxh>​
 +
 +Agora vamos importar a nova senha para o LDAP
 +<sxh bash>
 +
 +ldapmodify -Y EXTERNAL -H ldapi:/// -f /​root/​admin.mod.ldif ​
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +modifying entry "​olcDatabase={0}config,​cn=config"​
 +</​sxh>​
 +
 +Agora se precisarmos trocar a senha do admin da instalação do LDAP temos que criar o arquivo para efetuar a modificação da senha e importar ele aqui eu vou utilizar a mesma senha tanto para o admin de consultas como para o admin interno do LDAP
 +<sxh bash>
 +
 +vim ~/root.ldif
 +dn: olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +replace: olcRootPW
 +olcRootPW: {SSHA}F4oAyMcAPBlNgRascGQgR5KspB6/​HWos
 +</​sxh>​
 +
 +Vamos agora importar a nossa senha.
 +<sxh bash>
 +
 +ldapmodify -Y EXTERNAL -H ldapi:/// -f ~/​root.ldif ​
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +modifying entry "​olcDatabase={1}hdb,​cn=config"​
 +</​sxh>​
 +
 +Agora vamos fazer uma consulta a respeito dos admins do nosso LDAP
 +<sxh bash>
 +
 +ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcRootDN olcRootPW
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +dn: cn=config
 +
 +dn: cn=module{0},​cn=config
 +
 +dn: cn=schema,​cn=config
 +
 +dn: cn={0}core,​cn=schema,​cn=config
 +
 +dn: cn={1}cosine,​cn=schema,​cn=config
 +
 +dn: cn={2}nis,​cn=schema,​cn=config
 +
 +dn: cn={3}inetorgperson,​cn=schema,​cn=config
 +
 +dn: olcBackend={0}hdb,​cn=config
 +
 +dn: olcDatabase={-1}frontend,​cn=config
 +
 +dn: olcDatabase={0}config,​cn=config
 +olcRootDN: cn=admin,​cn=config
 +olcRootPW: {SSHA}F4oAyMcAPBlNgRascGQgR5KspB6/​HWos
 +
 +dn: olcDatabase={1}hdb,​cn=config
 +olcRootDN: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +olcRootPW: {SSHA}F4oAyMcAPBlNgRascGQgR5KspB6/​HWos
 +</​sxh>​
 +
 +Vamos agora criar o nosso sufixo para o nosso domínio e a configuração de acesso.
 +
 +<sxh bash>
 +
 +vim ~/​config.ldif
 +dn: olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +replace: olcSuffix
 +olcSuffix: dc=douglasqsantos,​dc=com,​dc=br
 +-
 +replace: olcRootDN
 +olcRootDN: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +-
 +replace: olcAccess
 +olcAccess: to attrs=userPassword by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write by anonymous auth by self write by * none
 +olcAccess: to attrs=shadowLastChange by self write by * read
 +olcAccess: to dn.base=""​ by * read
 +olcAccess: to * by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write by * read
 +</​sxh>​
 +
 +Agora vamos inserir essas configurações no nosso servidor LDAP.
 +<sxh bash>
 +
 +ldapmodify -Y EXTERNAL -H ldapi:/// -f ~/​config.ldif ​
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +modifying entry "​olcDatabase={1}hdb,​cn=config"​
 +</​sxh>​
 +
 +Vamos checar agora a configuração do nosso servidor LDAP.
 +<sxh bash>
 +
 +ldapsearch -xLLL -b cn=config -D cn=admin,​cn=config -W olcDatabase={1}hdb ​
 +Enter LDAP Password: senha
 +dn: olcDatabase={1}hdb,​cn=config
 +objectClass:​ olcDatabaseConfig
 +objectClass:​ olcHdbConfig
 +olcDatabase:​ {1}hdb
 +olcDbDirectory:​ /​var/​lib/​ldap
 +olcLastMod: TRUE
 +olcRootPW: {SSHA}NY5Op1B2glPKpZWTFb266Jyir9dzG+Rt
 +olcDbCheckpoint:​ 512 30
 +olcDbConfig:​ {0}set_cachesize 0 2097152 0
 +olcDbConfig:​ {1}set_lk_max_objects 1500
 +olcDbConfig:​ {2}set_lk_max_locks 1500
 +olcDbConfig:​ {3}set_lk_max_lockers 1500
 +olcDbIndex: objectClass eq
 +olcSuffix: dc=douglasqsantos,​dc=com,​dc=br
 +olcRootDN: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +olcAccess: {0}to attrs=userPassword by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write by anonymous auth by self write by * none
 +olcAccess: {1}to attrs=shadowLastChange by self write by * read
 +olcAccess: {2}to dn.base=""​ by * read
 +olcAccess: {3}to * by dn="​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ write by * read
 +</​sxh>​
 +
 +Agora vamos criar o dominio do nosso LDAP
 +<sxh bash>
 +
 +vim ~/raiz.ldif
 +dn: dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ top
 +objectClass:​ dcObject
 +objectclass:​ organization
 +o: ConfianceIT
 +dc: confianceit
 +description:​ LDAP Server
 +</​sxh>​
 +
 +Agora vamos importar o nosso domínio para a base LDAP
 +<sxh bash>
 +
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​raiz.ldif ​
 +Enter LDAP Password: ​
 +adding new entry "​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Caso já tenha sido configurado pela instalação o domínio vamos obter a seguinte saída ​
 +<sxh bash>
 +
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​raiz.ldif ​
 +Enter LDAP Password: ​
 +adding new entry "​dc=douglasqsantos,​dc=com,​dc=br"​
 +ldap_add: Already exists (68)
 +</​sxh>​
 +
 +Agora vamos criar os contêiner que vão ficar armazenados os nossos usuários, grupos e máquinas
 +<sxh bash>
 +
 +vim ~/​ous.ldif ​
 +dn: ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +ou: Usuarios
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +
 +dn: ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +ou: Grupos
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +
 +dn: ou=Maquinas,​dc=douglasqsantos,​dc=com,​dc=br
 +ou: Maquinas
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +</​sxh> ​
 +
 +Agora temos que importar o nosso arquivo para o LDAP
 +<sxh bash>
 +
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​ous.ldif ​
 +Enter LDAP Password: ​
 +adding new entry "​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​
 +
 +adding new entry "​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br"​
 +
 +adding new entry "​ou=Maquinas,​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Vamos acertar o arquivo que controla o cliente LDAP /​etc/​ldap/​ldap.conf
 +<sxh bash>
 +vim /​etc/​ldap/​ldap.conf
 +URI ldap://​10.0.0.26/​
 +BASE dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos criar o admin do LDAP
 +
 +Vamos gerar a senha
 +<sxh bash>
 +
 +slappasswd -s senha
 +{SSHA}gIeWDqs/​mJwIGFuNeGbwg8G0/​tZav3d8
 +</​sxh>​
 +
 +Agora que já temos a senha vamos criar o arquivo para importar para o LDAP
 +<sxh bash>
 +
 +vim ~/​admin.ldif
 +dn: cn=admin, dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ top
 +objectClass:​ simpleSecurityObject
 +objectclass:​ organizationalRole
 +cn: admin
 +description:​ LDAP administrator
 +userPassword:​ {SSHA}gIeWDqs/​mJwIGFuNeGbwg8G0/​tZav3d8
 +</​sxh>​
 +Agora vamos importar o arquivo do admin
 +<sxh bash>
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​admin.ldif
 +Enter LDAP Password: ​
 +adding new entry "​cn=admin,​ dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Caso o nosso admin já tenho sido criado na instalação do ldap vamos ter o seguinte retorno no comando acima 
 +<sxh bash>
 +
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​admin.ldif
 +Enter LDAP Password: ​
 +adding new entry "​cn=admin,​ dc=douglasqsantos,​dc=com,​dc=br"​
 +ldap_add: Already exists (68)
 +</​sxh>​
 +
 +**OBS:** Acho melhor excluir os usuários locais deixar somente o usuário root para o sistema local, caso ache necessário utilize a seguinte padronização somente nome do usuário para efetuar login no servidor local e nome.sobrenome para logar na base do LDAP.
 +
 +Vou disponibilizar um script para efetuar a migração dos usuários locais para um arquivo ldif que pode ser importado para a base LDAP
 +<sxh bash>
 +
 +vim expldif.sh
 +#!/bin/bash
 +#Aqui neste script estamos fazendo migração dos usuários que tem uid com 4 digitos
 +SUFFIX='​dc=douglasqsantos,​dc=com,​dc=br'​
 +LDIF='​usuariosldif.ldif'​
 +
 +for line in $(grep "​x:​[1-9][0-9][0-9][0-9]:"​ /etc/passwd | sed -e "s/ /%/")
 +do
 + ​UID1=$(echo $line | cut -d: -f1)
 + ​NAME=$(echo $line | cut -d: -f5 | cut -d, -f1)
 + if [  "​$NAME"​ ]
 + then
 + ​NAME=$UID1
 + else
 + ​NAME=$(echo $NAME | sed -e "s/%/ /")
 + fi
 + ​SN=$(echo $NAME | awk '​{print $2}')
 + if [  "​$SN"​ ]
 + then
 + ​SN=$NAME
 + fi
 + ​GIVEN=$(echo $NAME | awk '​{print $1}')
 + ​UID2=$(echo $line | cut -d: -f3)
 + ​GID=$(echo $line | cut -d: -f4)
 + ​PASS=$(grep $UID1 /etc/shadow | cut -d: -f2)
 + ​SHELL=$(echo $line | cut -d: -f7)
 + ​HOME=$(echo $line | cut -d: -f6)
 + ​EXPIRE=$(passwd -S $UID1 | awk '​{print $7}')
 + ​FLAG=$(grep $UID1 /etc/shadow | cut -d: -f9)
 + if [  "​$FLAG"​ ]
 + then
 + ​FLAG="​0"​
 + fi
 + ​WARN=$(passwd -S $UID1 | awk '​{print $6}')
 + ​MIN=$(passwd -S $UID1 | awk '​{print $4}')
 + ​MAX=$(passwd -S $UID1 | awk '​{print $5}')
 + ​LAST=$(grep $UID1 /etc/shadow | cut -d: -f3)
 + echo "dn: uid=$UID1,​ou=usuarios,​$SUFFIX"​ >> $LDIF
 + echo "​objectClass:​ inetOrgPerson"​ >> $LDIF
 + echo "​objectClass:​ posixAccount"​ >> $LDIF
 + echo "​objectClass:​ shadowAccount"​ >> $LDIF
 + echo "uid: $UID1" >> $LDIF
 + echo "sn: $SN" >> $LDIF
 + echo "​givenName:​ $GIVEN"​ >> $LDIF
 + echo "cn: $NAME" >> $LDIF
 + echo "​displayName:​ $NAME" >> $LDIF
 + echo "​uidNumber:​ $UID2" >> $LDIF
 + echo "​gidNumber:​ $GID" >> $LDIF
 + echo "​userPassword:​ {crypt}$PASS"​ >> $LDIF
 + echo "​gecos:​ $NAME" >> $LDIF
 + echo "​loginShell:​ $SHELL"​ >> $LDIF
 + echo "​homeDirectory:​ $HOME" >> $LDIF
 + echo "​shadowExpire:​ $EXPIRE"​ >> $LDIF
 + echo "​shadowFlag:​ $FLAG" >> $LDIF
 + echo "​shadowWarning:​ $WARN" >> $LDIF
 + echo "​shadowMin:​ $MIN" >> $LDIF
 + echo "​shadowMax:​ $MAX" >> $LDIF
 + echo "​shadowLastChange:​ $LAST" >> $LDIF
 + echo >> $LDIF
 +done
 +</​sxh>​
 +
 +Agora vamos gerar o nosso arquivo ldif com os usuários locais.
 +<sxh bash>
 +
 +bash expldif.sh
 +</​sxh>​
 +
 +Agora é só importar a base que foi gerada para o LDAP
 +<sxh bash>
 +ldapadd -x -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f usuariosldif.ldif ​
 +Enter LDAP Password: senhaadmin
 +adding new entry "​uid=douglas,​ou=usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +Aqui no meu caso só tinha um usuário com um uid com 4 dígitos então foi só o que a minha base importou.
 +
 +Agora vamos para o script que faz a migração de grupos locais para um arquivo ldif
 +<sxh bash>
 +
 +vim gruposldif.sh
 +#!/bin/bash
 +#Aqui neste script estamos fazendo a migração dos grupos que tem gid com 4 digitos
 +SUFFIX='​dc=douglasqsantos,​dc=com,​dc=br'​
 +LDIF='​gruposldif.ldif'​
 +
 +for line in $(grep "​x:​[1-9][0-9][0-9][0-9]:"​ /etc/group)
 +do
 + ​CN=$(echo $line | cut -d: -f1)
 + ​GID=$(echo $line | cut -d: -f3)
 + echo "dn: cn=$CN,​ou=grupos,​$SUFFIX"​ >> $LDIF
 + echo "​objectClass:​ posixGroup"​ >> $LDIF
 + echo "cn: $CN" >> $LDIF
 + echo "​gidNumber:​ $GID" >> $LDIF
 + echo >> $LDIF
 +done
 +</​sxh>​
 +
 +Agora vamos gerar o nosso ldif com os grupos
 +
 +<sxh bash>
 +
 +bash gruposldif.sh
 +</​sxh>​
 +
 +Agora vamos importar os grupos para o ldap
 +<sxh bash>
 +
 +ldapadd -x -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f gruposldif.ldif ​
 +Enter LDAP Password: senhaadmin
 +adding new entry "​cn=douglas,​ou=grupos,​dc=douglasqsantos,​dc=com,​dc=br"​
 +</​sxh>​
 +
 +Agora vamos a instalação e configuração do Ldap Account Manager
 +<sxh bash>
 +
 +aptitude install ldap-account-manager php5-ldap php5-gd php-fpdf libjs-jquery libjs-jquery-ui debconf php5-mcrypt ldap-account-manager-lamdaemon -y
 +</​sxh>​
 +
 +Vamos configurar ele agora o arquivo é /​usr/​share/​ldap-account-manager/​config/​lam.conf
 +<sxh bash>
 +
 +vim /​usr/​share/​ldap-account-manager/​config/​lam.conf
 +[...]
 +admins: cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +treesuffix: dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +defaultLanguage:​ pt_BR.utf8:​UTF-8:​Português (Brasil)
 +[...]
 +types: suffix_user:​ ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +types: suffix_group:​ ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +types: suffix_host:​ ou=Maquinas,​dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +types: suffix_smbDomain:​ dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos acessar a nosso console web http://​10.0.0.26/​lam ​
 +
 +Agora informe a senha do admin do ldap
 +
 +Aqui vamos criar um grupo e um usuário para testes.
 +
 +Vamos criar o grupo
 +  - Selecione nessa tela principal na parte superior o item Grupos
 +  - Agora selecione novo grupo
 +  - Informe Nome do grupo: ti-admin
 +  - Numero GID: não informe nada que vai ser gerado automaticamente
 +  - Agora informe uma descrição:​ Grupo de Admins
 +  - Agora selecione salvar
 +  - Agora selecione voltar a lista de grupos
 +  - Como pode ser notado o nosso grupo esta ali.
 +  - Para efetuar alguma alteração nele basta selecionar o ícone com um bloco de notas e um lápis.
 +
 +Agora vamos criar o usuário
 +  - Selecione Usuários
 +  - Agora novo usuário.
 +  - Informe o que achar necessário aqui, quanto mais informações melhor.
 +  - Selecione Unix
 +  - Informe o nome de usuario dele ex: douglas.santos
 +  - Nome comun: Douglas Quintiliano dos Santos
 +  - Número uid: deixe vazio para ele gerar um automaticamente
 +  - Selecione definir senha
 +  - Digite uma senha e confirme ela.
 +  - Selecione ok
 +  - Selecione Sombra que é quem controla as senhas
 +  - Selecione Adicionar uma extensão de Conta Shadow
 +  - Em aviso de senha selecione 10 (Dias antes da senha expirar em que o usuário será alertado sobre a expiração de sua senha. Se atribuir valor, este deve ser maior que 0. Pode ser vazio.)
 +  - Em expiração de senha selecione 1 (Número de dias que um usuário poderá iniciar uma sessão mesmo que sua senha tenha expirado. -1=sempre. Pode ser vazio.)
 +  - Em idade mínima para senha selecione 7 (Número de dias que um usuário irá esperar até que este esteja habilitado para trocar sua senha novamente. Se habilitado, deve ser um valor maior que 0. Pode ser vazio.)
 +  - Em idade máxima da senha informe 15 (Número de dias que um usuário irá esperar até que este esteja habilitado para trocar sua senha novamente. Se habilitado, deve ser um valor maior que 0. Pode ser vazio.)
 +  - Agora selecione salvar
 +  - Pronto temos o nosso usuario
 +  - Selecione Voltar à lista de usuários
 +
 +Agora vamos ver como configuramos o cliente, como o nosso servidor LDAP vai ser cliente LDAP também vamos configurar ele.
 +
 +Vamos a instalação de alguns pacotes necessários
 +<sxh bash>
 +
 +aptitude install libnss-ldap libpam-ldap ldap-utils -y
 +</​sxh>​
 +Informe a respostas como abaixo
 +  - ldap://​127.0.0.1/​
 +  - dc=douglasqsantos,​dc=com,​dc=br
 +  - 3
 +  - cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +  - senhaadmin
 +  - ok
 +  - yes
 +  - no
 +  - cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +  - senhadmin
 +
 +Agora vamos fazer um backup do arquivo que controla aonde vai ser consultado os usuários, grupos e senhas no sistema
 +<sxh bash>
 +
 +cp -Rfa /​etc/​nsswitch.conf{,​.bkp}
 +</​sxh>​
 +Vamos editar ele agora /​etc/​nsswitch.conf
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +passwd: ​        ​compat ldap
 +group: ​         compat ldap
 +shadow: ​        ​compat ldap
 +
 +hosts: ​         files dns
 +networks: ​      files
 +
 +protocols: ​     db files
 +services: ​      db files
 +ethers: ​        db files
 +rpc:            db files
 +
 +netgroup: ​      ldap
 +</​sxh>​
 +
 +Vamos acertar o arquivo que controla o cliente LDAP /​etc/​ldap/​ldap.conf
 +<sxh bash>
 +
 +vim /​etc/​ldap/​ldap.conf
 +URI ldap://​10.0.0.26/​
 +BASE dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Vamos efetuar um backup da pam
 +<sxh bash>
 +
 +cp -Rfa /​etc/​pam.d{,​.bkp}
 +</​sxh>​
 +
 +Vamos efetuar alguns ajustes na pam primeiro no arquivo que controla as senhas deixe o arquivo /​etc/​pam.d/​common-password como abaixo
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-password
 +password ​       [success=2 default=ignore] ​     pam_unix.so obscure sha512
 +password ​       [success=1 user_unknown=ignore default=die] ​    ​pam_ldap.so try_first_pass
 +password ​       requisite ​                      ​pam_deny.so
 +password ​       required ​                       pam_permit.so
 +</​sxh>​
 +
 +Agora vamos efetuar o ajuste no arquivo que controla as sessões caso o diretório home não exista o sistema vai cria deixe o arquivo /​etc/​pam.d/​common-session como abaixo
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session [default=1] ​                    ​pam_permit.so
 +session requisite ​                      ​pam_deny.so
 +session required ​                       pam_permit.so
 +session required ​       pam_unix.so
 +session optional ​                       pam_ldap.so
 +session optional pam_mkhomedir.so skel=/​etc/​skel umask=077
 +</​sxh>​
 +
 +Agora vamos efetuar o ajuste do arquivo de autenticação do ssh é o arquivo /​etc/​pam.d/​sshd o arquivo vai ter que ficar parecido com o abaixo.
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​sshd
 +auth       ​required ​    ​pam_env.so # [1]
 +auth       ​required ​    ​pam_env.so envfile=/​etc/​default/​locale
 +@include common-auth
 +account ​   required ​    ​pam_nologin.so
 +#adicionar as linhas abaixo para limitarmos o acesso ao ssh dessa maquina somente aos usuarios do grupo ti-admin
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +@include common-account
 +@include common-session
 +session ​   optional ​    ​pam_motd.so # [1]
 +session ​   optional ​    ​pam_mail.so standard noenv # [1]
 +session ​   required ​    ​pam_limits.so
 +@include common-password
 +</​sxh>​
 +
 +Vamos também limitar o acesso ao console do servidor limitando também que somente o root e o grupo ti-admin tenha acesso vamos editar o arquivo /​etc/​pam.d/​login o arquivo vai ter que ficar parecido com o abaixo.
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​login
 +auth       ​optional ​  ​pam_faildelay.so ​ delay=3000000
 +auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so
 +auth       ​requisite ​ pam_nologin.so
 +#adicionar essas 2 novas linhas abaixo
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
 +session ​      ​required ​  ​pam_env.so readenv=1
 +session ​      ​required ​  ​pam_env.so readenv=1 envfile=/​etc/​default/​locale
 +@include ​  ​common-auth
 +auth       ​optional ​  ​pam_group.so
 +session ​   required ​  ​pam_limits.so
 +session ​   optional ​  ​pam_lastlog.so
 +session ​   optional ​  ​pam_motd.so
 +session ​   optional ​  ​pam_mail.so standard
 +@include common-account
 +@include common-session
 +@include common-password
 +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
 +</​sxh>​
 +Agora vamos reiniciar o servidor e testar
 +<sxh bash>
 +
 +telinit 6
 +</​sxh>​
 +
 +Agora após iniciar o servidor novamente logue com o usuário root e vamos trocar para o usuário douglas.santos
 +<sxh bash>
 +
 +su - douglas.santos
 +Criando o diretório '/​home/​douglas.santos'​.
 +douglas.santos@debian22:​~$ ​
 +</​sxh>​
 +
 +
 +Agora vamos configurar um cliente Debian Squeeze
 +Vamos a instalação de alguns pacotes necessários
 +<sxh bash>
 +
 +aptitude install libnss-ldap libpam-ldap ldap-utils -y
 +</​sxh>​
 +Informe a respostas como abaixo
 +  - ldap://​10.0.0.26/​
 +  - dc=douglasqsantos,​dc=com,​dc=br
 +  - 3
 +  - cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +  - senhaadmin
 +  - ok
 +  - yes
 +  - no
 +  - cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +  - senhadmin
 +
 +Agora vamos fazer um backup do arquivo que controla aonde vai ser consultado os usuários, grupos e senhas no sistema
 +<sxh bash>
 +
 +cp -Rfa /​etc/​nsswitch.conf{,​.bkp}
 +</​sxh>​
 +Vamos editar ele agora /​etc/​nsswitch.conf
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +passwd: ​        ​compat ldap
 +group: ​         compat ldap
 +shadow: ​        ​compat ldap
 +
 +hosts: ​         files dns
 +networks: ​      files
 +
 +protocols: ​     db files
 +services: ​      db files
 +ethers: ​        db files
 +rpc:            db files
 +
 +netgroup: ​      ldap
 +</​sxh>​
 +
 +Vamos acertar o arquivo que controla o cliente LDAP /​etc/​ldap/​ldap.conf
 +<sxh bash>
 +
 +vim /​etc/​ldap/​ldap.conf
 +URI ldap://​10.0.0.26/​
 +BASE dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Vamos efetuar um backup da pam
 +<sxh bash>
 +
 +cp -Rfa /​etc/​pam.d{,​.bkp}
 +</​sxh>​
 +
 +Vamos efetuar alguns ajustes na pam primeiro no arquivo que controla as senhas deixe o arquivo /​etc/​pam.d/​common-password como abaixo
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-password
 +password ​       [success=2 default=ignore] ​     pam_unix.so obscure sha512
 +password ​       [success=1 user_unknown=ignore default=die] ​    ​pam_ldap.so try_first_pass
 +password ​       requisite ​                      ​pam_deny.so
 +password ​       required ​                       pam_permit.so
 +</​sxh>​
 +
 +Agora efetuar o ajuste no arquivo que controla as sessões caso o diretório home não exista o sistema vai cria deixe o arquivo /​etc/​pam.d/​common-session como abaixo
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session [default=1] ​                    ​pam_permit.so
 +session requisite ​                      ​pam_deny.so
 +session required ​                       pam_permit.so
 +session required ​       pam_unix.so
 +session optional ​                       pam_ldap.so
 +session optional pam_mkhomedir.so skel=/​etc/​skel umask=077
 +</​sxh>​
 +
 +Agora vamos efetuar o ajuste do arquivo de autenticação do ssh /​etc/​pam.d/​sshd o arquivo vai ter que ficar parecido com o abaixo
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​sshd
 +auth       ​required ​    ​pam_env.so # [1]
 +auth       ​required ​    ​pam_env.so envfile=/​etc/​default/​locale
 +@include common-auth
 +account ​   required ​    ​pam_nologin.so
 +#adicionar a linha abaixo para limitarmos o acesso ao ssh dessa maquina somente aos usuarios do grupo ti-admin
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +@include common-account
 +@include common-session
 +session ​   optional ​    ​pam_motd.so # [1]
 +session ​   optional ​    ​pam_mail.so standard noenv # [1]
 +session ​   required ​    ​pam_limits.so
 +@include common-password
 +</​sxh>​
 +
 +Vamos também limitar o acesso ao console do servidor limitando também que somente o root e o grupo ti-admin tenha acesso vamos editar o arquivo /​etc/​pam.d/​login o arquivo vai ter que ficar parecido com o abaixo.
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​login
 +auth       ​optional ​  ​pam_faildelay.so ​ delay=3000000
 +auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so
 +auth       ​requisite ​ pam_nologin.so
 +#adicionar essas linhas no arquivo
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
 +session ​      ​required ​  ​pam_env.so readenv=1
 +session ​      ​required ​  ​pam_env.so readenv=1 envfile=/​etc/​default/​locale
 +@include ​  ​common-auth
 +auth       ​optional ​  ​pam_group.so
 +session ​   required ​  ​pam_limits.so
 +session ​   optional ​  ​pam_lastlog.so
 +session ​   optional ​  ​pam_motd.so
 +session ​   optional ​  ​pam_mail.so standard
 +@include common-account
 +@include common-session
 +@include common-password
 +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
 +</​sxh>​
 +Agora vamos reiniciar o cliente e testar
 +<sxh bash>
 +
 +telinit 6
 +</​sxh>​
 +Agora logue novamente no cliente com o usuário root e vamos mudar para o usuário douglas.santos
 +<sxh bash>
 +
 +su - douglas.santos
 +Criando o diretório '/​home/​douglas.santos'​.
 +</​sxh>​
 +
 +Como podemos notar está funcionando tudo ok
 +
 +Vamos fazer um acesso via ssh no cliente utilizando o usuário douglas.santos que temos somente no LDAP
 +<sxh bash>
 +
 +$ ssh 10.0.0.73 -l douglas.santos
 +douglas.santos@10.0.0.73'​s password: ​
 +Linux 02-debian 2.6.32-5-686 #1 SMP Mon Jun 13 04:13:06 UTC 2011 i686
 +
 +The programs included with the Debian GNU/Linux system are free software;
 +the exact distribution terms for each program are described in the
 +individual files in /​usr/​share/​doc/​*/​copyright.
 +
 +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +permitted by applicable law.
 +[16:29:38] douglas.santos@02-debian [~] $ pwd
 +/​home/​douglas.santos
 +[16:30:49] douglas.santos@02-debian [~] $ 
 +</​sxh>​
 +
 +Agora vamos configurar um cliente Centos 6
 +
 +Vamos instalar os pacotes necessários
 +<sxh bash>
 +
 +yum install openldap-clients nss-pam-ldapd -y
 +</​sxh>​
 +
 +Agora vamos ajustar os arquivos do sistema
 +
 +Vamos acertar o arquivo que controla o cliente LDAP /​etc/​openldap/​ldap.conf
 +<sxh bash>
 +
 +vim /​etc/​openldap/​ldap.conf
 +URI ldap://​10.0.0.26/​
 +BASE dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo /​etc/​nslcd.conf
 +<sxh bash>
 +
 +vim /​etc/​nslcd.conf
 +#Insira no final do arquivossl no
 +uri ldap://​10.0.0.26/​
 +base dc=douglasqsantos,​dc=com,​dc=br
 +</​sxh>​
 +
 +Agora vamos a configuração do /​etc/​pam_ldap.conf
 +<sxh bash>
 +
 +vim /​etc/​pam_ldap.conf
 +#Comente a linhas 17 deixe como abaixo
 +#host 127.0.0.1
 +#Na linha 20 deixe como abaixo
 +base dc=douglasqsantos,​dc=com,​dc=br
 +[...]
 +#Agora acrescente no final do arquivo
 +uri ldap://​10.0.0.26/​
 +ssl no
 +</​sxh>​
 +
 +Agora vamos configurar o /​etc/​pam.d/​system-auth o seu arquivo vai ter que ficar parecido com o abaixo.
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​system-auth
 +#%PAM-1.0
 +# This file is auto-generated.
 +# User changes will be destroyed the next time authconfig is run.
 +auth        required ​     pam_env.so
 +auth        sufficient ​   pam_fprintd.so
 +auth        sufficient ​   pam_unix.so nullok try_first_pass
 +auth        requisite ​    ​pam_succeed_if.so uid >= 500 quiet
 +#insira a linha abaixo
 +auth        sufficient ​   pam_ldap.so use_first_pass
 +auth        required ​     pam_deny.so
 +
 +account ​    ​required ​     pam_unix.so
 +account ​    ​sufficient ​   pam_localuser.so
 +account ​    ​sufficient ​   pam_succeed_if.so uid < 500 quiet
 +#insira a linha abaixo
 +account ​    ​[default=bad success=ok user_unknown=ignore] pam_ldap.so
 +account ​    ​required ​     pam_permit.so
 +
 +password ​   requisite ​    ​pam_cracklib.so try_first_pass retry=3 type=
 +password ​   sufficient ​   pam_unix.so sha512 shadow nullok try_first_pass use_authtok
 +#insira a linha abaixo
 +password ​   sufficient ​   pam_ldap.so use_authtok
 +password ​   required ​     pam_deny.so
 +
 +session ​    ​optional ​     pam_keyinit.so revoke
 +session ​    ​required ​     pam_limits.so
 +session ​    ​[success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
 +session ​    ​required ​     pam_unix.so
 +session ​    ​optional ​     pam_ldap.so
 +#insira a linha abaixo
 +session ​    ​optional ​     pam_mkhomedir.so skel=/​etc/​skel umask=077
 +</​sxh>​
 +Vamos acertar o arquivo /​etc/​nsswitch.conf
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +passwd:​files ldap # line 33: deixe como no exemplo
 +shadow:​files ldap # linha 34: deixe como no exemplo
 +group:files ldap  # linha 35: deixe como no exemplo
 +
 +netgroup:​ldap ​   # linha 57: deixe como no exemplo
 +automount: files ldap #linha 61: deixe como no exemplo
 +</​sxh>​
 +
 +Agora precisamos alterar o ultimo arquivo /​etc/​sysconfig/​authconfig
 +<sxh bash>
 +
 +sed -i "​s/​USELDAP=no/​USELDAP=yes/"​ /​etc/​sysconfig/​authconfig
 +</​sxh>​
 +
 +Agora vamos deixar o nslcd na inicialização
 +<sxh bash>
 +
 +chkconfig nslcd on
 +telinit 6
 +</​sxh>​
 +
 +Agora é só logar no sistema utilizando um usuário que esteja cadastrado no LDAP
 +
 +Agora vamos configurar o acesso ao cliente via ssh vamos editar o arquivo /​etc/​pam.d/​sshd
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​sshd
 +#%PAM-1.0
 +#adicione essa linha abaixo
 +auth       ​sufficient ​  ​pam_ldap.so
 +auth       ​required ​    ​pam_sepermit.so
 +auth       ​include ​     password-auth
 +account ​   required ​    ​pam_nologin.so
 +#adicione essa linha abaixo note que somente os usuarios do grupo ti-admin vao conseguir ter acesso via ssh 
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +account ​   include ​     password-auth
 +password ​  ​include ​     password-auth
 +# pam_selinux.so close should be the first session rule
 +session ​   required ​    ​pam_selinux.so close
 +session ​   required ​    ​pam_loginuid.so
 +# pam_selinux.so open should only be followed by sessions to be executed in the user context
 +session ​   required ​    ​pam_selinux.so open env_params
 +#adiciona essa linha abaixo
 +session ​   required ​    ​pam_mkhomedir.so ​       skel=/​etc/​skel umask=0027
 +session ​   optional ​    ​pam_keyinit.so force revoke
 +session ​   include ​     password-auth
 +</​sxh>​
 +
 +Agora vamos fazer mais um ajuste nos acessos vamos permitir que vão logar no console do servidor somente o grupo ti-admin e o grupo do root vamos editar o arquivo /​etc/​pam.d/​login
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​login
 +#%PAM-1.0
 +auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
 +auth       ​sufficient ​  ​pam_ldap.so
 +auth       ​include ​     system-auth
 +account ​   required ​    ​pam_nologin.so
 +#adicione essa linha abaixo note que somente os usuarios do grupo ti-admin vao conseguir ter acesso via ssh 
 +account ​   sufficient ​  ​pam_succeed_if.so user ingroup root
 +account ​   requisite ​   pam_succeed_if.so user ingroup ti-admin
 +account ​   include ​     system-auth
 +password ​  ​include ​     system-auth
 +# pam_selinux.so close should be the first session rule
 +session ​   required ​    ​pam_selinux.so close
 +session ​   required ​    ​pam_loginuid.so
 +session ​   optional ​    ​pam_console.so
 +# pam_selinux.so open should only be followed by sessions to be executed in the user context
 +session ​   required ​    ​pam_selinux.so open
 +session ​   required ​    ​pam_namespace.so
 +session ​   required ​    ​pam_mkhomedir.so ​       skel=/​etc/​skel umask=0027
 +session ​   optional ​    ​pam_keyinit.so force revoke
 +session ​   include ​     system-auth
 +-session ​  ​optional ​    ​pam_ck_connector.so
 +</​sxh>​
 +Agora vamos fazer um teste de conexão via ssh com um usuário do grupo ti-admin
 +<sxh bash>
 +
 +ssh 10.0.0.30 -l douglas.santos
 +santos@10.0.0.30'​s password: ​
 +Last login: Wed Aug 10 17:31:33 2011 from douglas.douglasqsantos.com.br
 +</​sxh>​
 +
 +====== Referências ======
 +
 +  - http://​www.openldap.org/​
 +  - http://​www.openldap.org/​doc/​admin24/​
 +  - http://​www.openldap.org/​doc/​admin24/​quickstart.html
 +  - http://​adoldap.codeplex.com/​
 +  - http://​www.openldap.org/​doc/​admin24/​OpenLDAP-Admin-Guide.pdf
 +  - http://​www.samba.org/​samba/​docs/​Samba3-HOWTO.pdf