Differences

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

Link to this comparison view

instalando_e_configurando_samba_pdc_com_openldap_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e configuração de Servidor Samba PDC + OpenLDAP + Debian Squeeze ======
  
 +
 +  - Domínio que vamos utilizar: **douglasqsantos.com.br**
 +  - Faixa de ip: **10.0.0.0/​24**
 +  - Ip do Servidor: **10.0.0.26**
 +
 +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 atualizar os repositórios e fazer um upgrade do sistema
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +** Agora vamos a instalação e configuração do OpenLDAP ​ **
 +
 +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 hdb do LDAP e trocar a senha do admin do config do 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={0}config,​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: Douglas
 +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>​
 +
 + ​Exemplo de erro de importação da ous por casa de espaço no aquivo ​
 +<sxh bash>
 +ldapadd -x -c -D cn=admin,​dc=douglasqsantos,​dc=com,​dc=br -W -f ~/​ous.ldif ​
 +Enter LDAP Password: ​
 +ldapadd: attributeDescription "​dn":​ (possible missing newline after line 10, entry "​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"?​)
 +ldapadd: attributeDescription "​dn":​ (possible missing newline after line 11, entry "​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"?​)
 +adding new entry "​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br"​
 +ldap_add: Type or value exists (20)
 +    additional info: objectClass:​ value #0 provided more than once
 +
 +</​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
 +<code 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 cliente para os grupos ti-admin e douglas-usuarios que tem que ser criado e inserido os usuários não administrativos para poder logar na maquina, siga os mesmos passos para criar o grupo ti-admin e o usuário, para criar o grupo douglas-usuarios e vamos permitir o login do root. 
 +<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 ​   sufficient ​  ​pam_succeed_if.so user ingroup ti-admin
 +account ​   requisite ​   pam_succeed_if.so user ingroup douglas-usuarios
 +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 um exemplo de log de acesso de um usuário logando localmente na maquina, porém este usuário pertence ao grupo douglas-usuarios ​
 +<sxh bash>
 +tail -f /​var/​log/​auth.log
 +Feb 29 14:30:38 debian login[1166]:​ pam_unix(login:​auth):​ authentication failure; logname=LOGIN uid=0 euid=0 tty=/​dev/​tty1 ruser= rhost= ​ user=jose.silva
 +Feb 29 14:30:38 debian login[1166]:​ pam_succeed_if(login:​account):​ requirement "user ingroup root" not met by user "​jose.silva"​
 +Feb 29 14:30:38 debian login[1166]:​ pam_succeed_if(login:​account):​ requirement "user ingroup ti-admin"​ not met by user "​jose.silva"​
 +Feb 29 14:30:38 debian login[1166]:​ pam_succeed_if(login:​account):​ requirement "user ingroup douglas-usuarios"​ was met by user "​jose.silva"​
 +Feb 29 14:30:38 debian login[1166]:​ pam_unix(login:​session):​ session opened for user jose.silva by LOGIN(uid=0)
 +</​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>​
 +
 +Vamos também limitar o acesso ao console do cliente para os grupos ti-admin e douglas-usuarios que tem que ser criado e inserido os usuários não administrativos para poder logar na maquina, siga os mesmos passos para criar o grupo ti-admin e o usuário, para criar o grupo douglas-usuarios e vamos permitir o login do root. 
 +<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 ​   sufficient ​  ​pam_succeed_if.so user ingroup ti-admin
 +account ​   requisite ​   pam_succeed_if.so user ingroup douglas-usuarios
 +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>​
 +
 +====== Integrando o Samba ao LDAP ======
 +
 +Agora vamos para a configuração do Samba como PDC utilizando os usuários do LDAP
 +
 +Vamos instalar os pacotes necessários
 +<sxh bash>
 +aptitude -y install samba smbclient samba-doc cifs-utils smbfs
 +</​sxh>​
 +
 +Nas perguntas escolha as padrões pois vamos mudar tudo.
 +
 +Agora vamos copiar o schema do samba para o LDAP
 +<sxh bash>
 +cp /​usr/​share/​doc/​samba-doc/​examples/​LDAP/​samba.schema.gz /​etc/​ldap/​schema/ ​
 +</​sxh>​
 +
 +Vamos descompactar ele
 +<sxh bash>
 +gzip -d /​etc/​ldap/​schema/​samba.schema.gz ​
 +</​sxh>​
 +
 +Agora vamos criar o arquivo com as referencias de schemas para o samba
 +<sxh bash>
 +vim /​root/​schema_convert.conf ​
 +include /​etc/​ldap/​schema/​core.schema
 +include /​etc/​ldap/​schema/​collective.schema
 +include /​etc/​ldap/​schema/​corba.schema
 +include /​etc/​ldap/​schema/​cosine.schema
 +include /​etc/​ldap/​schema/​duaconf.schema
 +include /​etc/​ldap/​schema/​dyngroup.schema
 +include /​etc/​ldap/​schema/​inetorgperson.schema
 +include /​etc/​ldap/​schema/​java.schema
 +include /​etc/​ldap/​schema/​misc.schema
 +include /​etc/​ldap/​schema/​nis.schema
 +include /​etc/​ldap/​schema/​openldap.schema
 +include /​etc/​ldap/​schema/​ppolicy.schema
 +include /​etc/​ldap/​schema/​samba.schema
 +</​sxh>​
 +
 +Agora vamos criar o diretorio para a conversão dos nossos schemas
 +<sxh bash>
 +cd /root
 +mkdir -p ./​tmp/​ldif_output ​
 +</​sxh>​
 +Agora vamos converter o schema
 +<sxh bash>
 +slapcat -f schema_convert.conf -F ./​tmp/​ldif_output -n0 -s "​cn={12}samba,​cn=schema,​cn=config"​ > ./​tmp/​cn=samba.ldif ​
 +</​sxh>​
 +
 +Agora vamos acertar o nosso schema antes de importar ele
 +<sxh bash>
 +vim ./​tmp/​cn=samba.ldif ​
 +# Nas linhas 1,3: remova o  {12} )
 +dn: cn=samba,​cn=schema,​cn=config
 +objectClass:​ olcSchemaConfig
 +cn: samba
 +
 +# Agora remove as linhas 186 até o final do arquivo vão ser linhas semelhantes as abaixo.
 +structuralObjectClass:​ olcSchemaConfig
 +entryUUID: bd8a7a82-3cb8-102f-8d5f-070b4e5d16f8
 +creatorsName:​ cn=config
 +createTimestamp:​ 20100815125953Z
 +entryCSN: 20100815125953.198505Z#​000000#​000#​000000
 +modifiersName:​ cn=config
 +modifyTimestamp:​ 20100815125953Z
 +</​sxh>​
 +
 +Agora vamos importar o schema para o ldap
 +<sxh bash>
 +ldapadd -Y EXTERNAL -H ldapi:/// -f ./​tmp/​cn=samba.ldif ​
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +adding new entry "​cn=samba,​cn=schema,​cn=config"​
 +</​sxh>​
 +
 +Agora vamos criar o Indexes para o LDAP
 +<sxh bash>
 +vim /​root/​samba_indexes.ldif ​
 +dn: olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +add: olcDbIndex
 +olcDbIndex: uidNumber eq
 +olcDbIndex: gidNumber eq
 +olcDbIndex: loginShell eq
 +olcDbIndex: uid eq,pres,sub
 +olcDbIndex: memberUid eq,pres,sub
 +olcDbIndex: uniqueMember eq,pres
 +olcDbIndex: sambaSID eq
 +olcDbIndex: sambaPrimaryGroupSID eq
 +olcDbIndex: sambaGroupType eq
 +olcDbIndex: sambaSIDList eq
 +olcDbIndex: sambaDomainName eq
 +olcDbIndex: default sub
 +</​sxh>​
 +
 +Agora vamos importar os nosso indexes
 +<sxh bash>
 +ldapmodify -Y EXTERNAL -H ldapi:/// -f /​root/​samba_indexes.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 reiniciar o nosso ldap
 +<sxh bash>
 +/​etc/​init.d/​slapd restart
 +Stopping OpenLDAP: slapd.
 +Starting OpenLDAP: slapd.
 +</​sxh>​
 +
 +Agora vamos instalar o smbldap-tools que é a ferramenta de apoio para trabalhar Samba + LDAP
 +<sxh bash>
 +aptitude -y install smbldap-tools ​
 +</​sxh>​
 +
 +Agora vamos fazer um backup do arquivo de configuração do samba
 +<sxh bash>
 +mv /​etc/​samba/​smb.conf /​etc/​samba/​smb.conf.bkp
 +</​sxh>​
 +Agora vamos configurar o nosso samba
 +<sxh bash>
 +vim /​etc/​samba/​smb.conf ​
 +# Global parameters
 +[global]
 +    workgroup = DOUGLASQSANTOS
 +    netbios name = SAMBA
 +    enable privileges = yes
 +    #interfaces = 192.168.5.11
 +    username map = /​etc/​samba/​smbusers
 +    server string = Samba Server %v
 +    security = user
 +    encrypt passwords = Yes
 +#   min passwd length = 3
 +    unix password sync = yes
 +    ldap passwd sync = yes
 +    passwd program = /​usr/​sbin/​smbldap-passwd -u "​%u"​
 +    passwd chat = "​Changing *\nNew password*"​ %n\n "​*Retype new password*"​ %n\n
 +
 +    log level = 0
 +    syslog = 0
 +    log file = /​var/​log/​samba/​log.%U
 +    max log size = 100000
 +    time server = Yes
 +    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 +    mangling method = hash2
 +    Dos charset = CP932
 +    Unix charset = UTF-8
 +
 +    logon script = logon.bat
 +    logon drive = U:
 +    logon home = \\%L\%U
 +    logon path = \\%L\profiles\%U
 +
 +    domain logons = Yes
 +    domain master = Yes
 +    os level = 100
 +    preferred master = Yes
 +    wins support = yes
 +    passdb backend = ldapsam:​ldap://​127.0.0.1/​
 +    ldap admin dn = cn=admin,​dc=douglasqsantos,​dc=com,​dc=br
 +    ldap suffix = dc=douglasqsantos,​dc=com,​dc=br
 +    ldap group suffix = ou=Grupos
 +    ldap user suffix = ou=Usuarios
 +    ldap machine suffix = ou=Maquinas
 +    #ldap idmap suffix = ou=Idmap
 +    add user script = /​usr/​sbin/​smbldap-useradd -m "​%u"​
 +    #ldap delete dn = Yes
 +    delete user script = /​usr/​sbin/​smbldap-userdel "​%u"​
 +    add machine script = /​usr/​sbin/​smbldap-useradd -t 0 -w "​%u"​
 +    add group script = /​usr/​sbin/​smbldap-groupadd -p "​%g" ​
 +    delete group script = /​usr/​sbin/​smbldap-groupdel "​%g"​
 +    add user to group script = /​usr/​sbin/​smbldap-groupmod -m "​%u"​ "​%g"​
 +    delete user from group script = /​usr/​sbin/​smbldap-groupmod -x "​%u"​ "​%g"​
 +    set primary group script = /​usr/​sbin/​smbldap-usermod -g '​%g'​ '​%u'​
 +    admin users = domainadm
 +    ldap ssl = no
 +    # printers configuration
 +    #printer admin = @"​Print Operators"​
 +    load printers = Yes
 +    create mask = 0640
 +    directory mask = 0750
 +    #force create mode = 0640
 +    #force directory mode = 0750
 +    nt acl support = yes
 +    printing = cups
 +    printcap name = cups
 +    deadtime = 10
 +    guest account = nobody
 +    map to guest = Bad User
 +    dont descend = /​proc,/​dev,/​etc,/​lib,/​lost+found,/​initrd
 +    show add printer wizard = yes
 +    ; to maintain capital letters in shortcuts in any of the profile folders:
 +    preserve case = yes
 +    short preserve case = yes
 +    case sensitive = no
 +
 +[homes]
 +    path = /​home/​diretorios/​%U
 +    comment = Diretorio home
 +    browseable = no
 +    writable = yes
 +    valid users = %U
 +    create mode = 0700
 +    directory mode = 0700
 +    preexec = /bin/bash /​etc/​samba/​valida.sh %U %G
 +    preexec close = yes
 +[netlogon]
 +    path = /​home/​netlogon/​
 +    browseable = No
 +    read only = yes
 +
 +[profiles]
 +    path = /​home/​profiles
 +    read only = no
 +    create mask = 0600
 +    directory mask = 0700
 +    browseable = No
 +    guest ok = Yes
 +    profile acls = yes
 +    csc policy = disable
 +    # next line is a great way to secure the profiles ​
 +    #force user = %U 
 +    # next line allows administrator to access all profiles ​
 +    #valid users = %U "​Domain Admins"​
 +
 +[printers]
 +        comment = Network Printers
 +        #printer admin = @"​Print Operators"​
 +        guest ok = yes 
 +        printable = yes
 +        path = /​home/​spool/​
 +        browseable = No
 +        read only  = Yes
 +        printable = Yes
 +        print command = /​usr/​bin/​lpr -P%p -r %s
 +        lpq command = /​usr/​bin/​lpq -P%p
 +        lprm command = /​usr/​bin/​lprm -P%p %j
 +        # print command = /​usr/​bin/​lpr -U%U@%M -P%p -r %s
 +        # lpq command = /​usr/​bin/​lpq -U%U@%M -P%p
 +        # lprm command = /​usr/​bin/​lprm -U%U@%M -P%p %j
 +        # lppause command = /​usr/​sbin/​lpc -U%U@%M hold %p %j
 +        # lpresume command = /​usr/​sbin/​lpc -U%U@%M release %p %j
 +        # queuepause command = /​usr/​sbin/​lpc -U%U@%M stop %p
 +        # queueresume command = /​usr/​sbin/​lpc -U%U@%M start %p
 +
 +[print$]
 +        path = /​home/​printers
 +        guest ok = No
 +        browseable = Yes
 +        read only = Yes
 +        valid users = @"​Print Operators"​
 +        write list = @"​Print Operators"​
 +        create mask = 0664
 +        directory mask = 0775
 +
 +[public]
 +    path = /​srv/​publica
 +    guest ok = yes
 +    browseable = Yes
 +    writable = yes
 +[TI]
 +        path = /​srv/​Programas
 +        comment = Programas TI
 +        browsable = yes
 +        writable = yes
 +        create mask = 0664
 +        directory mask = 0775
 +        locking = no
 +        valid users =  @ti-admin
 +
 +</​sxh>​
 +
 +Criando o arquivo de mapeamento de usuários Samba/​Windows
 +<sxh bash>
 +vim /​etc/​samba/​smbusers
 +#ARQUIVO DE MAPEMENTO DE USUARIOS
 +#Formato: Unix_ID = Windows_ID
 +#EXEMPLO:
 +# root = Administrator
 +# douglas = "​Douglas Santos"​
 +root = Administrator
 +root = Administrador
 +</​sxh>​
 +
 +Vamos criar os diretórios necessários e acertar as permissões
 +<sxh bash>
 +mkdir -p /​home/​{netlogon,​profiles,​diretorios}
 +chmod -R 777 /​home/​netlogon
 +chmod -R 1777 /​home/​{profiles,​diretorios}
 +</​sxh>​
 +
 +Vamos criar o diretório de programas para a TI e vamos criar a pasta pública.
 +<sxh bash>
 +mkdir /​srv/​{Programas,​publica}
 +chmod -R 777 /​srv/​Programas
 +chmod -R 1777 /​srv/​publica
 +</​sxh>​
 +
 +Agora vamos colocar no compartilhamento programas o registro para importar no Win7 para ele poder fazer parte do domínio samba.
 +<sxh bash>
 +vim /​srv/​Programas/​win7.reg
 +Windows Registry Editor Version 5.00
 +       ; Win7_Samba3DomainMember
 +       ​[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters]
 +       "​DNSNameResolutionRequired"​=dword:​00000000
 +       "​DomainCompatibilityMode"​=dword:​00000001
 +
 +       ; Speedup settings
 +       ​[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
 +       "​SlowLinkDetectEnabled"​=dword:​00000000
 +       "​DeleteRoamingCache"​=dword:​00000001
 +       "​WaitForNetwork"​=dword:​00000000
 +       "​CompatibleRUPSecurity"​=dword:​00000001
 +
 +       ; Can drive you nuts
 +       ​[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
 +       "​EnableLUA"​=dword:​00000000
 +</​sxh>​
 +
 +Caso tenha maquinas Windows 7 na rede e precisar colocar no domínio samba precisa importar este registro primeiro.
 +
 +Agora vamos criar o arquivo que valida se existe o diretório home do usuário e cria caso não exista.
 +<sxh bash>
 +vim /​etc/​samba/​valida.sh
 +#!/bin/bash
 +
 +DIRETORIO="/​home/​diretorios/​${1}"​
 +
 +if [ ! -d ${DIRETORIO} ]; then
 +    mkdir -p ${DIRETORIO}
 +    chown -R ${1}:${2} ${DIRETORIO}
 +    chmod -R 750 ${DIRETORIO}
 +fi
 +</​sxh>​
 +
 +Agora vamos dar permissão para o nosso script
 +<sxh bash>
 +chmod 755 /​etc/​samba/​valida.sh
 +</​sxh>​
 +
 +Agora vamos criar o script de logon
 +<sxh bash>
 +vim /​home/​netlogon/​logon.bat
 +@echo off
 +       echo.
 +       echo AVISO: Não feche esta janela!!!
 +       echo.
 +       NET USE P: /DELETE
 +       NET USE P: \\10.0.0.26\public /​PERSISTENT:​YES
 +       NET TIME \\10.0.0.26 /SET /YES
 +       echo.
 +</​sxh>​
 +
 +Agora vamos instalar um utilitário para fazer a conversão do formato Unix para DOS
 +<sxh bash>
 +aptitude install tofrodos -y
 +</​sxh>​
 +
 +Agora vamos converter o arquivo de registro e o arquivo de logon
 +<sxh bash>
 +todos /​home/​netlogon/​logon.bat
 +todos /​srv/​Programas/​win7.reg
 +</​sxh>​
 +
 +Vamos instalar o servidor de NTP para que os clientes possam sincronizar o horário com o servidor PDC
 +<sxh bash>
 +aptitude install ntp ntpdate -y
 +</​sxh>​
 +
 +Agora vamos acertar o /​etc/​ntp.conf
 +<sxh bash>
 +vim /​etc/​ntp.conf
 +[...]
 +server 3.debian.pool.ntp.org iburst
 +#Inserir a seguinte linha
 +server pdc.douglasqsantos.com.br iburst
 +[...]
 +</​sxh>​
 +
 +Vamos criar um arquivo necessário para o NTP
 +<sxh bash>
 +touch /​var/​lib/​ntp/​ntp.drift
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço e ver como que ele está.
 +<sxh bash>
 +/​etc/​init.d/​ntp restart
 +Stopping NTP server: ntpd.
 +Starting NTP server: ntpd.
 +</​sxh>​
 +
 +Vamos ver como ele esta trabalhando
 +<sxh bash>
 +ntpq -p 127.0.0.1
 +     ​remote ​          ​refid ​     st t when poll reach   ​delay ​  ​offset ​ jitter
 +==============================================================================
 +*srv4.spbrasil.c 200.160.7.193 ​   2 u   ​19 ​  ​64 ​   1   ​10.694 ​  ​99.759 ​  8.996
 + ​srv7.spbrasil.c 200.160.7.193 ​   2 u   ​18 ​  ​64 ​   1   ​10.434 ​ 101.498 ​ 19.271
 + ​roma.coe.ufrj.b 146.164.48.5 ​    2 u   ​17 ​  ​64 ​   1   ​26.731 ​ 107.312 ​  1.786
 + ​d.st1.ntp.br ​   .ONBR. ​          1 u   ​17 ​  ​64 ​   1   ​60.915 ​ 121.360 ​  9.016
 + ​pdc.douglas.wik .STEP. ​          16 u   ​- ​  ​64 ​   0    0.000    0.000   0.000
 +</​sxh>​
 +
 +Vamos sincronizar o nosso relógio com o ntp da usp
 +<sxh bash>
 +ntpdate -u ntp.usp.br
 +29 Feb 15:24:00 ntpdate[3116]:​ adjust time server 143.107.255.15 offset 0.126564 sec
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo /​etc/​security/​limits.conf para não ficar mostrando erro no samba
 +<sxh bash>
 +vim /​etc/​security/​limits.conf
 +#colocar no final do arquivo
 +root hard nofile 131072
 +root soft nofile 65536
 +mioutente hard nofile 32768
 +mioutente soft nofile 16384
 +</​sxh>​
 +
 +Agora vamos reiniciar o samba
 +<sxh bash>
 +/​etc/​init.d/​samba restart
 +Stopping Samba daemons: nmbd smbd.
 +Starting Samba daemons: nmbd smbd.
 +</​sxh>​
 +
 +Agora vamos armazenar o admin do LDAP no samba
 +<sxh bash>
 +smbpasswd -W
 +Setting stored password for "​cn=admin,​dc=douglasqsantos,​dc=com,​dc=br"​ in secrets.tdb
 +New SMB password: #senha admin do LDAP
 +Retype new SMB password: #senha admin do LDAP
 +</​sxh>​
 +
 +Agora vamos desempacotar o arquivo que vamos fazer a configuração final do samba + LDAP
 +<sxh bash>
 +gzip -d /​usr/​share/​doc/​smbldap-tools/​configure.pl.gz ​
 +</​sxh>​
 +
 +Agora vamos executar o arquivo que vai conter a base para popular o LDAP com os dados do Samba
 +<sxh bash>
 + perl /​usr/​share/​doc/​smbldap-tools/​configure.pl ​
 +$# is no longer supported at /​usr/​share/​doc/​smbldap-tools/​configure.pl line 314.
 +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 +       ​smbldap-tools script configuration
 +       ​-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 +Before starting, check
 + . if your samba controller is up and running.
 + . if the domain SID is defined (you can get it with the 'net getlocalsid'​)
 +
 + . you can leave the configuration using the Crtl-c key combination
 + . empty value can be set with the "​."​ character
 +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 +Looking for configuration files...
 +
 +Samba Configuration File Path [/​etc/​samba/​smb.conf] > 
 +
 +The default directory in which the smbldap configuration files are stored is shown.
 +If you need to change this, enter the full directory path, then press enter to continue.
 +Smbldap-tools Configuration Directory Path [/​etc/​smbldap-tools/​] > 
 +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 +Let's start configuring the smbldap-tools scripts ...
 +
 +. workgroup name: name of the domain Samba act as a PDC
 +  workgroup name [DOUGLASQSANTOS] > #ENTER
 +. netbios name: netbios name of the samba controler
 +  netbios name [SAMBA] > #ENTER
 +. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: '​H:'​
 +  logon drive [H:] > #ENTER
 +. logon home: home directory location (for Win95/98 or NT Workstation).
 +  (use %U as username) Ex:'​\\DOUGLASQSANTOS\%U'​
 +  logon home (press the "​."​ character if you don't want homeDirectory) [\\%L\%U] > . #aqui vai um .
 +. logon path: directory where roaming profiles are stored. Ex:'​\\DOUGLASQSANTOS\profiles\%U'​
 +  logon path (press the "​."​ character if you don't want roaming profile) [\\DOUGLASQSANTOS\profiles\%U] > . #aqui vai um .
 +. home directory prefix (use %U as username) [/home/%U] > #ENTER
 +. default users' homeDirectory mode [700] > #ENTER
 +. default user netlogon script (use %U as username) [logon.bat] > #ENTER
 +  default password validation time (time in days) [45] > #ENTER
 +. ldap suffix [dc=douglasqsantos,​dc=com,​dc=br] > #ENTER
 +. ldap group suffix [ou=Grupos] > #ENTER
 +. ldap user suffix [ou=Usuarios] > #ENTER
 +. ldap machine suffix [ou=Maquinas] > #ENTER
 +. Idmap suffix [ou=Idmap] > #ENTER
 +. sambaUnixIdPooldn:​ object where you want to store the next uidNumber
 +  and gidNumber available for new users and groups
 +  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=DOUGLASQSANTOS] > #ENTER
 +. ldap master server: IP adress or DNS name of the master (writable) ldap server
 +  ldap master server [127.0.0.1] > #ENTER
 +. ldap master port [389] > #ENTER
 +. ldap master bind dn [cn=admin,​dc=douglasqsantos,​dc=com,​dc=br] > #ENTER
 +. ldap master bind password [] > #senha do admin do LDAP
 +. ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one
 +  ldap slave server [127.0.0.1] > #ENTER
 +. ldap slave port [389] > #ENTER
 +. ldap slave bind dn [cn=admin,​dc=douglasqsantos,​dc=com,​dc=br] > #ENTER
 +. ldap slave bind password [] > #senha do admin do LDAP
 +. ldap tls support (1/0) [0] > #ENTER
 +. SID for domain DOUGLASQSANTOS:​ SID of the domain (can be obtained with 'net getlocalsid DOUGLASQSANTOS'​)
 +  SID for domain DOUGLASQSANTOS [S-1-5-21-134422187-1209443084-3402600680] > #ENTER
 +. unix password encryption: encryption used for unix passwords
 +  unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > MD5 #MD5
 +. default user gidNumber [513] > #ENTER
 +. default computer gidNumber [515] > #ENTER
 +. default login shell [/bin/bash] > #ENTER
 +. default skeleton directory [/etc/skel] > #​ENTER ​
 +. default domain name to append to mail adress [] > #ENTER
 +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 +Use of uninitialized value $# in concatenation (.) or string at /​usr/​share/​doc/​smbldap-tools/​configure.pl line 314, <​STDIN>​ line 33.
 +backup old configuration files:
 +  /​etc/​smbldap-tools/​smbldap.conf->/​etc/​smbldap-tools/​smbldap.conf.old
 +  /​etc/​smbldap-tools/​smbldap_bind.conf->/​etc/​smbldap-tools/​smbldap_bind.conf.old
 +writing new configuration file:
 +  /​etc/​smbldap-tools/​smbldap.conf done.
 +  /​etc/​smbldap-tools/​smbldap_bind.conf done.
 +</​sxh>​
 +
 +Agora vamos popular o nosso LDAP com os dados do Samba
 +<sxh bash>
 +smbldap-populate ​
 +Populating LDAP directory for domain DOUGLASQSANTOS (S-1-5-21-134422187-1209443084-3402600680)
 +(using builtin directory structure)
 +
 +entry dc=douglasqsantos,​dc=com,​dc=br already exist. ​
 +entry ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br already exist. ​
 +entry ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br already exist. ​
 +entry ou=Maquinas,​dc=douglasqsantos,​dc=com,​dc=br already exist. ​
 +adding new entry: ou=Idmap,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: uid=root,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: uid=nobody,​ou=Usuarios,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Domain Admins,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Domain Users,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Domain Guests,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Domain Computers,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Administrators,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Account Operators,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Print Operators,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Backup Operators,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +adding new entry: cn=Replicators,​ou=Grupos,​dc=douglasqsantos,​dc=com,​dc=br
 +entry sambaDomainName=DOUGLASQSANTOS,​dc=douglasqsantos,​dc=com,​dc=br already exist. Updating it...
 +
 +Please provide a password for the domain root: 
 +Changing UNIX and samba passwords for root
 +New password: #senha para o root do LDAP
 +Retype new password: #senha para o root do LDAP
 +</​sxh>​
 +
 +Agora vamos criar o domain admin para o samba e LDAP, vamos criar o grupo e depois o usuário
 +<sxh bash>
 +smbldap-groupadd -a domainadm
 +smbldap-useradd -am -g domainadm domainadm
 +</​sxh>​
 +
 +Agora vamos setar a senha para o nosso domainadm
 +<sxh bash>
 +smbldap-passwd domainadm
 +Changing UNIX and samba passwords for domainadm
 +New password: #senha
 +Retype new password: #​senha ​
 +</​sxh>​
 +
 +Vamos ver se o ldap já esta reconhecendo o nosso domainadm
 +<sxh bash>
 +su - domainadm
 +domainadm@pdc:​~$ pwd
 +/​home/​domainadm
 +</​sxh>​
 +
 +Agora vamos adicionar o root ao grupos de administradores do domínio
 +<sxh bash>
 +smbldap-usermod --group "​Domain Admins","​Domain Users" root
 +</​sxh>​
 +
 +Agora vamos setar uma senha para ele
 +<sxh bash>
 +smbldap-passwd root
 +Changing UNIX and samba passwords for root
 +New password: ​
 +Retype new password: ​
 +</​sxh>​
 +
 +Como pode ser notado tudo ok
 +
 +Agora vamos reiniciar o serviço do samba e do LDAP
 +<sxh bash>
 +/​etc/​init.d/​slapd restart && /​etc/​init.d/​samba restart
 +Stopping OpenLDAP: slapd.
 +Starting OpenLDAP: slapd.
 +Stopping Samba daemons: nmbd smbd.
 +Starting Samba daemons: nmbd smbd.
 +</​sxh>​
 +
 +Agora vamos criar um novo usuário para testar o samba
 +  - Crie um novo usuário em http://​10.0.0.26/​lam
 +  - Crie um usuário como no exemplo anterior porém antes de gravar
 +  - Na guia UNIX informe o grupo primário como ti-admin
 +  - Agora vamos acessar a guia samba 3 e selecione adicionar uma extensão samba3.
 +  - Aqui vamos informar o nome para identificação pois o nome para login foi definido na guia Unix
 +  - Agora informe em **caminho padrão do usuário** \\10.0.0.26\nome_usuario
 +  - Em **caminho do perfil** informe \\10.0.0.26\profiles\nome_usuario ​
 +  - Agora em **script de login** informe logon.bat
 +  - Por último escolha **usuário especial** Admins do Domínio
 +  - Não esqueça de definir a senha para o usuário.
 +
 +Agora vamos listar os compartilhamentos com o novo usuário
 +<sxh bash>
 +smbclient -L  //127.0.0.1 -U DOUGLASQSANTOS/​maria.madalena
 +Enter DOUGLASQSANTOS/​maria.madalena'​s password: ​
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +    Sharename ​      ​Type ​     Comment
 +    --------- ​      ​---- ​     -------
 +    IPC$            IPC       IPC Service (Samba Server 3.5.6)
 +    TI              Disk      Programas TI
 +    public ​         Disk      ​
 +    print$ ​         Disk      ​
 +    maria.madalena ​ Disk      Diretorio home
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +
 +    Server ​              ​Comment
 +    --------- ​           -------
 +    DOUGLASQSANTOS ​             Samba Server 3.5.6
 +
 +    Workgroup ​           Master
 +    --------- ​        
 +</​sxh>​
 +Aqui em -U é o nome do usuário utilizei dominio/​nome_usuario
 +
 +Agora vamos logar no compartilhamento publico para testar
 +<sxh bash>
 +smbclient ​ //​127.0.0.1/​public -U DOUGLASQSANTOS/​maria.madalena
 +Enter DOUGLASQSANTOS/​maria.madalena'​s password: ​
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> mkdir novo
 +smb: \> ls
 +  .                                   ​D ​       0  Wed Feb 29 15:54:01 2012
 +  ..                                  D        0  Thu Feb 23 16:15:46 2012
 +  .X11-unix ​                         DH        0  Wed Feb 29 14:08:59 2012
 +  lost+found ​                         D        0  Thu Feb 23 15:57:21 2012
 +  .ICE-unix ​                         DH        0  Wed Feb 29 14:08:59 2012
 +  novo                                D        0  Wed Feb 29 15:54:01 2012
 +
 +        47100 blocks of size 8192. 43382 blocks available
 +smb: \> quit
 +</​sxh>​
 +
 +Pronto conseguimos criar o nosso diretório novo sem problemas.
 +
 +Agora vamos testar o compartilhamento que somente o grupo ti-admin deve ter acesso
 +<sxh bash>
 +smbclient //​127.0.0.1/​TI -U DOUGLASQSANTOS/​maria.madalena
 +Enter maria.madalena'​s password: ​
 +Domain=[DOUGLASQSANTOS] OS=[Unix] Server=[Samba 3.5.6]
 +smb: \> ls
 +  .                                   ​D ​       0  Wed Feb 29 15:38:54 2012
 +  ..                                  D        0  Wed Feb 29 15:10:39 2012
 +  win7.reg ​                                  ​353 ​ Wed Feb 29 15:38:54 2012
 +
 +        41276 blocks of size 8192. 20439 blocks available
 +smb: \> mkdir Maria
 +smb: \> ls
 +  .                                   ​D ​       0  Wed Feb 29 16:02:37 2012
 +  ..                                  D        0  Wed Feb 29 15:10:39 2012
 +  win7.reg ​                                  ​353 ​ Wed Feb 29 15:38:54 2012
 +  Maria                               ​D ​       0  Wed Feb 29 16:02:37 2012
 +
 +        41276 blocks of size 8192. 20439 blocks available
 +smb: \> quit
 +</​sxh>​
 +
 +Como pode ser notado o usuário maria.madalena que coloquei no grupo ti-admin consegui acessar sem problemas e criou um diretório chamado Maria sem problemas.
 +
 +** Reinicie o servidor para ele recarregar todas as configurações. **
 +
 +Vamos colocar uma maquina Windows XP no domínio samba para testar
 +
 +  - Logue como administrador
 +  - Agora em Menu Iniciar/​Executar digite: sysdm.cpl
 +  - Agora na guia Nome do computador/​Alterar
 +  - Aqui informe um nome para o seu computador vou informar douglas-xp
 +  - Agora em domínio informe o nosso dominio: DOUGLASQSANTOS
 +  - informe o usuário e a senha do root que foi definido no comando smbldap-populate ou utilize o usuário domainadm
 +  - Agora se obteve sucesso é so reiniciar ​
 +  - Agora logue com o usuário que foi criado com a extensão samba3.
 + 
 +** Caso o Bind seja configurado para responder o serviço do LDAP na porta 389 então não é para ser necessário usar NetBios sobre TCP/IP mais caso seja necessário temos que fazer como abaixo para ajustar.**
 +
 +
 +  - Caso o cliente não ache o servidor podemos resolver da seguinte forma
 +  - Vamos acertar a configuração de TCP/IP
 +  - Em Menu Iniciar/​Executar digite: ncpa.cpl
 +  - Selecione a interface de rede com o botão direito, agora em propriedades
 +  - Agora selecione Protocolo TCP/IP , Agora selecione Propriedades
 +  - Agora selecione Avançado, Agora selecione a guia WINS
 +  - Agora selecione Ativar NetBIOS sobre TCP/IP, Agora selecione OK
 +  - Ok novamente, Agora fechar.
 +  - Agora como administrador
 +  - Agora em Menu Iniciar/​Executar digite: sysdm.cpl
 +  - Agora na guia Nome do computador/​Alterar
 +  - Aqui informe um nome para o seu computador vou informar douglas-xp
 +  - Agora em domínio informe o nosso dominio: DOUGLASQSANTOS
 +  - informe o usuário e a senha do root que foi definido no comando smbldap-populate ou utilize o usuário domainadm
 +  - Agora se obteve sucesso é so reiniciar.
 +  - Agora logue com o usuário que foi criado com a extensão samba3.
 +
 +
 +Agora vamos listar a nossa maquina que foi colocada no domínio ​
 +<sxh bash>
 +ldapsearch -xLLL
 +[...]
 +dn: uid=douglas-xp$,​ou=Maquinas,​dc=douglasqsantos,​dc=com,​dc=br
 +objectClass:​ top
 +objectClass:​ account
 +objectClass:​ posixAccount
 +cn: douglas-xp$
 +uid: douglas-xp$
 +uidNumber: 1001
 +gidNumber: 515
 +homeDirectory:​ /dev/null
 +loginShell: /bin/false
 +description:​ Computer
 +gecos: Computer
 +</​sxh>​
 +
 +As configurações do ambiente Windows do usuário vão ficar salvas em /​home/​profiles/​nome_usuario
 +
 +O usuário vai ter o mapeamento do diretório home dele no servidor para o usuário vai ser a unidade U: e ela está localizada no servidor em /​home/​diretorios/​nome_usuario.
 +
 +====== Referências ======
 + 
 +
 +  - http://​www.openldap.org/​
 +  - http://​www.openldap.org/​doc/​admin24/​
 +  - http://​www.openldap.org/​doc/​admin24/​quickstart.html
 +  - http://​adoldap.codeplex.com/​
 +  - www.openldap.org/​doc/​admin24/​OpenLDAP-Admin-Guide.pdf
 +  - www.samba.org/​samba/​docs/​Samba3-HOWTO.pdf
 +  - https://​wiki.samba.org/​index.php/​Windows7