1 - Instalando Samba com LDAP
- O objetivo deste artigo é explicar o processo de instalação do servidor Samba atuando como PDC e utilizando o OpenLdap como backend (banco de dados).
2 - Contexto da instalação:
Este é o contexto utilizado neste documento.
- Debian 5.0 - Lenny
- Linguagem: pt_br
- Endereço do servidor remoto: 10.1.0.17
- Principais pacotes a serem instalados:
- slapd
- ldap-utils
- phpldapadmin
- samba
- smbldap-tools
- libnss-ldap
3 - Configurar o debconf
A instalação inicial do debconf é necessária para que as mesmas perguntas destes documento sejam feitas quando a instalação for realizada.
# dpkg-reconfigure debconf
Escolher prioridade de perguntas "baixa".
4 - Servidor LDAP
Instalação do pacote do servidor LDAP:
# aptitude install slapd ldap-utils
- Omitir a configuração do servidor LDAP? Não
- Nome do domínio DNS: debian-go.org
- Nome da organização: debian-go
- Senha do admin: segredo
- "Backend" de base de dados a ser usado: BDB
- Você deseja que sua base de dados seja removida quando o slapd for expurgado? Não
- Mover base de dados antiga? Sim
- Permitir Protocolo LDAP v2? Não
Confira se as configurações respondidas via debconf estão de acordo com o arquivo de configuração:
# vi /etc/ldap/slapd.conf
Reinicialize o servidor:
# /etc/init.d/slapd restart
Verifique os dados iniciais disponíveis no servidor LDAP através do comando slapcat:
# slapcat
dn: dc=debian-go,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: debian-go
dc: debian-go
structuralObjectClass: organization
entryUUID: ab548b92-0361-102d-9ca7-a5cb93af3e92
creatorsName:
modifiersName:
createTimestamp: 20080821001304Z
modifyTimestamp: 20080821001304Z
entryCSN: 20080821001304Z#000000#00#000000
dn: cn=admin,dc=debian-go,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fUU1UXFQZ09zZFQ0YmM=
structuralObjectClass: organizationalRole
entryUUID: ab555aea-0361-102d-9ca8-a5cb93af3e92
creatorsName:
modifiersName:
createTimestamp: 20080821001304Z
modifyTimestamp: 20080821001304Z
entryCSN: 20080821001304Z#000001#00#000000
5 - Frontend PHPLdapadmin
O Phpldapadmin é um frontend que permite gerenciar o servidor LDAP através de uma interface Web.
6 - Instalação do PHPldapadmin
# aptitude install phpldapadmin apache2
- tipo de autenticação: session
- servidores web com quais será configurado automaticamente: apache2 (pelo menos)
- reiniciar o servidor web: sim
7 - Conferindo a instalação do phpldapadmin
Utilizando um navegador web, aponte para o endereço:
http://10.1.0.17/phpldapadmin
E efetue o logon utilizando o usuário:
cn=admin,cn=debian-go,cn=org
Utilize a senha fornecida na instalação do servidor LDAP: "segredo".
8 - Instalação do servidor SAMBA
# aptitude install samba
- Domínio: debian-go.org
- Usar senhas criptografadas? Sim
- Modificar smb.conf para usar configurações WINS fornecidas via DHCP? Não
- Como você deseja que o Samba seja executado? daemons
- Gerar a base de dados para senhas /var/lib/samba/samba.tdb? Não
9 - Configurando o LDAP para dar suporte ao Samba
# aptitude install samba-doc
# cd /usr/share/doc/samba-doc/examples/LDAP/
# cp samba.schema.gz /etc/ldap/schema/
# cd /etc/ldap/schema
# gunzip samba.schema.gz
# vi /etc/ldap/slapd.conf
...
include /etc/ldap/schema/samba.schema
...
access to attrs=userPassword,shadowLastChange,sambaNTPassword,
sambaLMPassword by dn="cn=admin,dc=debian-go,dc=org" write
As últimas linhas fazem com que o LDAP tenha suporte ao schema dos objetos LDAP do Samba e o usuário admin ter acesso a escrita aos atributos userPassword, shadowLastChange, sambaNTPassword e sambaLMPassword.
/etc/init.d/slapd restart
10 - Configurando o Samba
# vi /etc/samba/smb.conf
security = user
domain logons = yes
# passdb backend = tdbsam
# invalid users = root
...
# nao utilizar as restrições impostas pelo PAM
obey pam restrictions = no
# Na linha abaixo especifique o IP do servidor Slapd
passdb backend = ldapsam:ldap://127.0.0.1
ldap passwd sync = yes
ldap delete dn = Yes
# Especifique o seu domínio
ldap admin dn = cn=admin,dc=debian-go,dc=org
ldap suffix = dc=debian-go,dc=org
ldap machine suffix = ou=Computadores
ldap user suffix = ou=Usuarios
ldap group suffix = ou=Grupos
ldap idmap suffix = ou=Idmap
# Novamente o IP do servidor Slapd
idmap backend = ldap:ldap://127.0.0.1
idmap uid = 10000-20000
idmap gid = 10000-20000
#Nas linhas abaixo é necessário especificar corretamente a
#path dos utilitários para gerenciamento de usuários e grupos
#para samba+ldap estes utilitários são do pacote smbldap-tools
add user script = /usr/sbin/smbldap-useradd -m "%u"
delete user script = /usr/sbin/smbldap-userdel "%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"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
11 - Geração da senha de acesso do samba ao LDAP
# rm /var/lib/samba/secrets.tdb
# smbpasswd -w segredo
# net getlocalsid
SID for domain LAB11 is: S-1-5-21-739826692-572011436-1394361479
O primeiro comando remove o arquivo secrets.tdb, que contém informações de senha. A remoção deste é necessária para um nova instalação do Samba integrado ao LDAP. O segundo comando insere a senha do usuário admin do ldap no arquivo /var/lib/samba/secrets.tdb. O último comando fornece um identificador para a rede Windows, este será necessário para o próximo passo.
12 - Configuração do smbldap-tools
# aptitude install smbldap-tools
# vi /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=admin,dc=debian-go,dc=org"
slavePw="segredo"
masterDN="cn=admin,dc=debian-go,dc=org"
masterPw="segredo"
# vi /etc/smbldap-tools/smbldap.conf
# Esta primeira linha você deve especificar o SID da rede,
#para isso use o comando: net getlocalsid
SID="S-1-5-21-739826692-572011436-1394361479"
# Especifique o workgroup do samba
sambaDomain="debian-go.org"
# Ip do servidor Slapd
slaveLDAP="127.0.0.1"
slavePort="389"
# Ip do servidor Slapd
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify=""
cafile=""
clientcert=""
clientkey=""
suffix="dc=debian-go,dc=org"
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Computadores,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format=""
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome="\lab17\%U"
userProfile="\lab17\%U"
userHomeDrive="H:"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
13 - Popular o LDAP
#smbldap-populate
Este comando acima irá popular a base de dados ldap com objetos necessários para a administração do smbldap-tools. Verifique no phpldapadmin os objetos ldap criados, especialmente note os grupos e usuários criados.
14 - Instalação do libnss-ldap
# aptitude install libnss-ldap
- Identificador Uniforme de Recursos do servidor LDAP: ldap://127.0.0.1
- Nome distitnto da base de pesquisa: dc=debian-go,dc=org
- Versão LDAP a usar: 3
- A base de dados LDAP requer login: Sim
- Privlegios especiais LDAP para o root? Sim
- Permitir a leitura/escrita no ficheiro de configuração apenas para o dono? Não
- Conta LDAP para o root: cn=admin,dc=debian-go,dc=org
- Password da conta root do LDAP: segredo
- Utilizador sem privilegios da base de dados: cn=admin,dc=debian-go,dc=org
- Password da conta para fazer login na base de dados: segredo
15 - Configuração do libnss
# vi /etc/nsswitch.conf
#passwd: compat
passwd: files ldap
#group: compat
group: files ldap
16 - Inclusão de usuário para testes
# vi /etc/nextuid.ldif
dn: cn=NextFreeUnixId,dc=debian-go,dc=org
objectClass: inetOrgPerson
objectClass: sambaUnixIdPool
uidNumber: 10000
gidNumber: 10000
cn: NextFreeUnixId
sn: NextFreeUnixId
# ldapadd -x -D cn=admin,dc=debian-go,dc=org -W -f nextuid.ldif
# smbldap-useradd teste
# smbldap-usershow teste
# smbldap-passwd teste
# smbpasswd -a teste
# smbldap-usershow teste
# mkdir /home/teste
Note a diferença entre os dois comandos smbldap-usershow acima.
17 - Inclusão do usuário root
# smbldap-useradd root
# smbldap-usershow root
# smbldap-passwd root
# smbpasswd -a root
# smbldap-usershow root
18 - Teste com cliente Windows
- Entrar no Windows como administrador
- Mouse botão-direito no Meu Computador
- Aba "Nome do computador"
- Clicar em mudar
- Botão renomear o computador
- Selecionar a opção domínio;
- Alterar o domínio desejado (debian-go.org)
19 - Referências: