Este pequeno tutorial serve para quem estiver interessado, e também para minha referência futura.

A distribuição utilizada foi Debian Lenny, usando os repositórios por defeito.

Instalação de pacotes necessários

apt-get update && apt-get upgrade

apt-get install krb5-config krb5-user libkrb53 libpam-krb5 samba-common samba winbind smbclient

Depois disto passamos à configuração. No /etc/samba/smb.conf podemos apagar tudo e copiar para lá o essencial, ou seja, isto:

[global]
workgroup = DOMINIO
realm = DOMINIO.LOC
netbios aliases = fileserver
server string = %h
security = ADS
obey pam restrictions = Yes
passdb backend = tdbsam
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
log level = 1
syslog = 1
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
wins server = ip.do.wins.server
panic action = /usr/share/samba/panic-action %d
idmap backend = idmap_rid:DOMINIO=100000-200000
idmap uid = 100000-200000
idmap gid = 100000-200000
template shell = /bin/bash
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
A negrito aquilo que deve ser alterado de acordo com as vossas necessidades.
Seguidamente tratamos do Kerberos (/etc/krb5.conf)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMINIO.LOC
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
krb4_get_tickets = false
krb4_convert = true
[realms]
DOMINIO.LOC = {
kdc = servidor.do.dc.1
kdc = servidor.do.dc.2
admin_server = pdc.do.dominio
}
krb4_get_tickets = false
[domain_realm]
.mit.edu = ATHENA.MIT.EDU
mit.edu = ATHENA.MIT.EDU
.media.mit.edu = MEDIA-LAB.MIT.EDU
media.mit.edu = MEDIA-LAB.MIT.EDU
.csail.mit.edu = CSAIL.MIT.EDU
csail.mit.edu = CSAIL.MIT.EDU
.whoi.edu = ATHENA.MIT.EDU
whoi.edu = ATHENA.MIT.EDU
.stanford.edu = stanford.edu
.slac.stanford.edu = SLAC.STANFORD.EDU
[login]
krb4_convert = true
Por último a ordem de autenticações no /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference’ and `info’ packages installed, try:
# `info libc “Name Service Switch”‘ for information about this file.
passwd:         files winbind compat
group:          files winbind compat
shadow:         files winbind compat
hosts:          files dns wins
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis
Reiniciamos os serviços (samba e winbind) e podemos instalar o servidor no domínio. Podemos testar antes de mais o funcionamento do mesmo
:~# kinit -V hugo.ferreira
Password for hugo.ferreira@DOMINIO.LOC:
Authenticated to Kerberos v5
:~#
Tendo sucesso, colocamos o servidor no domínio
net ads join -u administrator
Joined ‘servidor’ to realm ‘DOMINIO.LOC’
Para colocarmos um share  com permissões para um determinado grupo da AD configuramos o smb.conf da seguinte forma
[homedir]
comment = Homedir
path = /home/hugo.ferreira
valid users = @%D%hugo.ferreira
read only = no
browseable = yes
Reiniciamos o samba e testamos (\\servidor\homedir). Et voilá, temos acesso :-)

Talvez relacionados:

  1. Samba Remote Exploit
  2. E assim vai o jornalismo “tecnológico” em Portugal…

*