Configuração simples Samba + LDAP
Precisei configurar o Samba+LDAP no Alferes Linux (distribuição da Polícia Militar de Minas Gerais) e como só encontrei poucas e confusas informações na internet, resolvi escrever este artigo.
Parte 3: Configuração do Samba
Para usar o Samba com LDAP usei os seguintes pacotes:
- samba-3.0.14
- smbldap-tools-0.9.2
[global]
workgroup = seudominio
server string = Servidor de Rede
netbios name =servidor
printcap name = /etc/printcap
load printers = yes
printing = lprng
logon script = %G.bat
guest account=nobody
log file = /var/log/samba/log.%m
max log size = 50
security = user
encrypt passwords=yes
smb passwd file=/etc/samba/smbpasswd
passwd program=/usr/bin/passwd %u
passwd chat = *New*password* %n *Retype*new*password* %n
*passwd:*all*authentication*t
okens*updated*successfully*
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = yes
os level = 65
domain master = yes
preferred master = yes
domain logons = yes
wins support = yes
wins proxy = yes
dns proxy = yes
time server = yes
name resolve order = bcast wins lmhosts
ldap ssl = 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=seudominio,dc=com,dc=br
ldap suffix = dc=seudominio,dc=com,dc=br
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/local/sbin/smbldap-useradd -m "%u"
delete user script = /usr/local/sbin/smbldap-userdel "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/local/sbin/smbldap-groupdel "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script =
/usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
workgroup = seudominio
server string = Servidor de Rede
netbios name =servidor
printcap name = /etc/printcap
load printers = yes
printing = lprng
logon script = %G.bat
guest account=nobody
log file = /var/log/samba/log.%m
max log size = 50
security = user
encrypt passwords=yes
smb passwd file=/etc/samba/smbpasswd
passwd program=/usr/bin/passwd %u
passwd chat = *New*password* %n *Retype*new*password* %n
*passwd:*all*authentication*t
okens*updated*successfully*
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = yes
os level = 65
domain master = yes
preferred master = yes
domain logons = yes
wins support = yes
wins proxy = yes
dns proxy = yes
time server = yes
name resolve order = bcast wins lmhosts
ldap ssl = 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=seudominio,dc=com,dc=br
ldap suffix = dc=seudominio,dc=com,dc=br
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/local/sbin/smbldap-useradd -m "%u"
delete user script = /usr/local/sbin/smbldap-userdel "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/local/sbin/smbldap-groupdel "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script =
/usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
Depois de ter alterado o smb.conf, é necessário definir a senha do administrador LDAP para o Samba. Primeiro apague o arquivo "secrets.tdb", também seria legal apagar os logs antigos:
# rm -f /var/lib/samba/secrets.tdb
# rm -f /var/log/samba/*
Agora podemos definir a senha, use o comando:
# smbpasswd -w suasenha
(esta senha é a mesma usada no comando para gerar a chave para a configuração do servidor slapd)
Feito isso podemos inicializar o Samba:
# /etc/init.d/samba start
Vamos configurar os arquivos do smbldap-tools, o primeiro é o /etc/smbldap-tools/smbldap_bind.conf:
slaveDN="cn=admin,dc=seudominio,dc=com,dc=br"
slavePw="suasenha"
masterDN="cn=admin,dc=seudominio,dc=com,dc=br"
masterPw="suasenha"
slavePw="suasenha"
masterDN="cn=admin,dc=seudominio,dc=com,dc=br"
masterPw="suasenha"
O próximo é o /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-2238445359-3023380572-354343709"
# Especifique o workgroup do samba
sambaDomain="seudominio"
# 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=dal"
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Computadores,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=seudominio,${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="\SERVIDOR\%U"
userProfile="\SERVIDORprofiles\%U"
userHomeDrive="H:"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
# use o comando: net getlocalsid
SID="S-1-5-21-2238445359-3023380572-354343709"
# Especifique o workgroup do samba
sambaDomain="seudominio"
# 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=dal"
usersdn="ou=Usuarios,${suffix}"
computersdn="ou=Computadores,${suffix}"
groupsdn="ou=Grupos,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=seudominio,${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="\SERVIDOR\%U"
userProfile="\SERVIDORprofiles\%U"
userHomeDrive="H:"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
Feito isso é hora de criar os grupos no slapd, o pessoal costuma dizer "Vamos popular o Slapd", para isso deve-se usar o comando:
# smbldap-populate
Depois disso teste tudo com o comando:
# getent group
Se tiver aparecido novos grupos "Domain Users", "Guests", etc, quer dizer que está tudo funcionando.
Para adicionar usuários ao domínio, use o utilitário smbldap-useradd:
# smbldap-useradd -a -m -c "nomedousuario" nomedousuario
Para definir senha para o usuário:
# smbldap-passwd nomedousuario
E para expirar a senha do usuário e pedir senha nova no primeiro logon:
# smbldap-usermod -A 1 -B 1 nomedousuario
Pronto, seu Samba+LDAP está rodando.
Valew