miércoles, 16 de junio de 2010

Centos 5x: Samba 3.3.x+LDAP Windows 7

Aqui de nuevo, ya para Agosto 2010 MS tiene planeado dejar de vender licencias de Windows XP, entonces tenemos que nosotros tambien actualizar nuestros PDC a una version compatible con Windows 7 porque van a empezar a llegar computadoras con este OS.

Que a mi punto de vista es mucho mejor que Windows Vista.

Bien Red Hat por no quedarse atras, decidio tener una version compatible con Windos 7 de Samba, la version 6 de Red Hat ya viene lista para ello, mientras tenemos solo 1 camino, migrar todo a samba 3.3.8 que viene por default o buscar una version mas reciente.

Para saber que dice el equipo de samba aqui tiene el link samba-windows7

Estamos usando la ultima version de Centos, ya que ellos dependen 100% de Red Hat, asi que estamos hablando de la 5.5 Release.

Todo esta hecho dentro de maquinas virtuales, todo corriendo bajo Ubuntu 9.10, para virtualizar tenemos VirtualBox.

Bien vamos suponiendo que ya tenemos nuestro Centos operando y actualizado. Algo que me gustaria aclarar es que ldap no tiene nada que ver con los problemas de samba y windows 7, asi que ldap sigue su operacion normal.

Pero vamos hacer todo desde 0 para no usar otros links y hacerlo muy tedioso.

Empiezo.

NOTA: Por el momento no vamos a usar DNS.

1; Centos actualizado con IP fija y hostname:

IP: 172.16.5.152
Hostname: pdc-srv.pinole.com

2; Modificar el archivo /etc/hosts:

[root@pdc-srv home]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.16.5.152 pdc-srv.pinole.com pdc-srv

3; Instalar los siguientes repos.

Ver siguiente link repos

Una vez instalados correr:

yum update, actualizar y reinciar.

4; Instalar los siguientes paquetes:

samba3x.
samba3x-client
samba3x-common
samba3x-doc
samba3x-winbind
openldap-servers
openldap-clients

Estamos manejando la version 3.3.8 de samba.

5; Configurar ldap.

Nombre del dominio: pinole.com

a) creamos un folder llamado pinole en /var/lib/ldap/

mkdir /var/lib/ldap/pinole

b) Copeamos el archivo de nombre DB_CONFIG.example en el folder creado eliminando la extension.

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/pinole/DB_CONFIG

c) Cambiamos el permiso de ese folder hacia el usuario ldap:
chown ldap:ldap /var/lib/ldap/pinole

d) Sacamos el password para el usuario de la BD en ldap:
[root@pdc-srv home]# slappasswd
New password:
Re-enter new password:
{SSHA}garabatosdecaracteres

e) editamos el archivo del servidor de ldap, llamado slapd.conf y lo dejamos asi:
NOTA: Muchos parametros los voy a eliminar para hacer la informacion mas digerible.

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

database bdb
suffix "dc=pinole,dc=com"
rootdn "cn=Manager,dc=pinole,dc=com"
rootpw {SSHA}garabatosdecaracteres

directory /var/lib/ldap/pinole
loglevel 256

# Indices to maintain for this database
index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq

f) Como estamos habilitando el log de ldap tenemos que actualizar syslog para que se encargue de el:

touch /var/log/ldap.log

Agregar esta linea a /etc/syslog.conf
local4.* /var/log/ldap.log

Salvar y reiniciar a syslog.

service syslog restart

g) Iniciamos el servicio de ldap.

[root@pdc-srv home]# service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

h) Probamos que el servicio este operando:

[root@pdc-srv home]# service ldap status
slapd (pid 29680) is running...

6; Hasta aqui tenemos ya a ldap operable, ahora sigue configurar samba. Para ello tenemos dejar el archivo general(/etc/samba/smb.conf) como sigue:

[global]
workgroup = PINOLE
server string = PDC Domain
netbios name = PDC-SRV
hosts allow = 172.16.5. 127.
interfaces = eth0
bind interfaces only = Yes
hosts deny = 0.0.0.0

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:ldap://172.16.5.152/
enable privileges = yes
pam password change= Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn * passwd:*all*authentication*tokens*updated*successfully*
unix password sync = Yes

# Log options
log level = 1
log file = /var/log/samba/%m.log
max log size = 500
syslog = 1

# Name resolution
name resolve order = wins hosts bcast lmhost

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes

# Dos-Attribute
map hidden = No
map system = No
map archive = No
map read only = No
store dos attributes = Yes

# printers - configured to use CUPS and automatically load them
load printers = No
printcap name =
# printing =
cups options =
show add printer wizard = No
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

# LDAP-iConfiguration
#ldap delete dn = Yes
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pinole,dc=com
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=Manager,dc=pinole,dc=com
idmap backend = ldap:ldap://172.16.5.152
idmap uid = 10000-20000
idmap gid = 10000-20000

# logon options
logon script =
logon path =
logon path =
logon home =
logon drive =

# setting up as domain controller
username map = /etc/samba/usermap
preferred master = Yes
wins support = Yes
domain logons = Yes
domain master = Yes
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
password level = 6

#Si tiene clientes windows98 debene habilitar estos parametros (solo para samba 3.3.x+, #samba 3.0.x los tiene por default habilitados.
#lanman auth = Yes
#client lanman auth = Yes

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
Locking = no

[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No

[Public]
comment = Public Folder
path = /opt/public
available = Yes
browseable = Yes
public = Yes
read only = No
guest ok = Yes
writeable = yes
create mode = 0775
directory mode = 0775
admin users = root

[Share]
comment = Private Share
path = /opt/share
valid users = @it
write list = @PINOLE\it
force group = @PINOLE\it
read only = No
force create mode = 0770
directory mask = 0770

*Salvamos y salimos.

7; Debemos crear algunos foder ahi dados de alta:

mkdir /home/samba
mkdir /home/samba/netlogon

8; Crear el archivo usermap y dejarlo asi:

touch /etc/samba/usermap

root = Manager administrator admin
nobody = guest pcguest smbguest

9; Grabar el password de ldap en samba.

[root@pdc-srv home]# smbpasswd -W
Setting stored password for "cn=Manager,dc=pinole,dc=com" in secrets.tdb
New SMB password:
Retype new SMB password:

Este password es el que usamos cuando ejecutamos "slappaswd".

10; Compilar e instalar smbldap-tools, no podemos usar la version que nos propociona centos desde sus repos, por que esa aun depende de samba 3.0.x y les va a decir que eliminen la version que tienen instalada y si lo hacen van a volver de nuevo a el pasado.

Para ello necesitamos nosotros mismos hacer nuestra propia version. Asi:

a) yum install rpm-build
b) wget http://packages.sw.be/smbldap-tools/smbldap-tools-0.9.5-1.rf.src.rpm
c) rpm -ihv smbldap-tools-0.9.5-1.rf.src.rpm
d) Nos movemos a el folder /usr/src/redhat/SPECS
e) abrimos este archivo(smbldap-tools.spec ) y dejamos la siguiente linea asi:
Requires: perl >= 5.6, openldap, openldap-clients, samba3x
f) creamos el rpm:
rpmbuild -bb ./smbldap-tools.spec
g) nos movemos a el siguiente folder
cd /usr/src/redhat/RPMS/noarch
h) Instalamos el rpm
yum --nogpgcheck --enablerepo=rpmforge install smbldap-tools-0.9.5-1.rf.noarch.rpm

Esto nos va a instalar todo lo que necesita smbldap-tools.

11; Ahora necesitamos saber el SID del dominio, se saca asi:

[root@pdc-srv samba]# net getlocalsid
SID for domain PDC-SRV is: S-1-5-21-1790762827-2518552153-1965868529

Esta informacion debemos tenerla a la mano.

12; Configurar smbldap-tools.

a) abrir archivo /etc/smbldap-tools/smbldap.conf y dejarlo asi:

SID="S-1-5-21-1790762827-2518552153-1965868529"
sambaDomain="PINOLE"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify="require"
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.iallanis.info.pem"
clientkey="/etc/smbldap-tools/smbldap-tools.iallanis.info.key"
suffix="dc=pinole,dc=com"
usersdn="ou=Users,${suffix}"
computersdn="ou=Computers,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
scope="sub"
hash_encrypt="SSHA"
crypt_salt_format="%s"
userLoginShell="/sbin/nologin"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="999"
userSmbHome="\\PDC-SRV\%U"
userProfile=""
userHomeDrive="W:"
userScript=""
mailDomain="pinole.com"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

NOTA: No voy a manejar profiles en la red.

b) Sigue el archivo /etc/smbldap-tools/smbldap_bind.conf

slaveDN="cn=Manager,dc=pinole,dc=com"
slavePw="supassword"
masterDN="cn=Manager,dc=pinole,dc=com"
masterPw="supassword"

13; Crear los grupos y usuarios del dominio:

smbldap-populate -l 99

Al final nos va a pedir el password de ldap, se lo damos y listo.

14; Configuramos centos para que haga uso de ldap para su autentificacion, necesitamos editar 2 archivos, /etc/ldap.conf /etc/openldap/ldap.con, vamos empezando con el primero, que da asi:

host 127.0.0.1
base dc=pinole,dc=com
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

Ahora /etc/openldap/ldap.conf

HOST 127.0.0.1
URI ldap://127.0.0.1/
BASE dc=pinole,dc=com
TLS_CACERTDIR /etc/openldap/cacerts

15; Configurar Centos para que haga uso de los usuarios de ldap, tenemos una utileria en la consola, se llama authconfig-tui, la ejecutamos y seleccionamos ldap en ambos lados, lo que hace este programa es leer los dos archivos del punto 14 y de saca la informacion de como contactar a ldap.



16; Ldap esta operando, ahora vamos a probar si la estructura de nuestro dominio esta correcta.

[root@pdc-srv samba]# net groupmap list
Domain Admins (S-1-5-21-1790762827-2518552153-1965868529-512) -> Domain Admins
Domain Users (S-1-5-21-1790762827-2518552153-1965868529-513) -> Domain Users
Domain Guests (S-1-5-21-1790762827-2518552153-1965868529-514) -> Domain Guests
Domain Computers (S-1-5-21-1790762827-2518552153-1965868529-515) -> Domain Computers
Administrators (S-1-5-32-544) -> Administrators
Account Operators (S-1-5-32-548) -> Account Operators
Print Operators (S-1-5-32-550) -> Print Operators
Backup Operators (S-1-5-32-551) -> Backup Operators
Replicators (S-1-5-32-552) -> Replicators

Ahora los usuarios

[root@pdc-srv samba]# getent passwd | grep Domain
root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false

17; Ejecutando a samba, ya sigue la parte mas importante de todo esto, con esta version de samba, ya divieron el demonio smb y nmb asi que tenemos que iniciar a cada por su cuenta:

[root@pdc-srv samba]# service smb start
Starting SMB services: [ OK ]
[root@pdc-srv samba]# service nmb start
Starting NMB services: [ OK ]
[root@pdc-srv samba]# service winbind start
Starting Winbind services: [ OK ]

Winbind sigue siendo independiente.

18; Agrendo usuarios a el dominio:

[root@pdc-srv samba]# smbldap-useradd -a -m test6
[root@pdc-srv samba]# smbldap-passwd test6
Changing UNIX and samba passwords for test6
New password:
Retype new password:

Debemos tener un folder en /home de este usuario:

[root@pdc-srv samba]# ll /home/
total 32
drwx------ 2 notelaacabas Domain Users 4096 Jun 16 10:19 notelaacabas
drwxr-xr-x 3 root root 4096 Jun 16 09:48 samba
drwx------ 2 test1 Domain Users 4096 Jun 16 10:07 test1
drwx------ 2 test2 Domain Users 4096 Jun 16 10:07 test2
drwx------ 2 test3 Domain Users 4096 Jun 16 10:07 test3
drwx------ 2 test4 Domain Users 4096 Jun 16 10:08 test4
drwx------ 2 test5 Domain Users 4096 Jun 16 10:06 test5
drwx------ 2 test6 Domain Users 4096 Jun 16 13:05 test6

Yo ya tengo varios.

Vamos viendo la informacion de este usuario:

[root@pdc-srv samba]# pdbedit -Lv test6
Unix username: test6
NT username: test6
Account Flags: [U ]
User SID: S-1-5-21-1790762827-2518552153-1965868529-3024
Primary Group SID: S-1-5-21-1790762827-2518552153-1965868529-513
Full Name: test6
Home Directory: \\PDC-SRV\test6
HomeDir Drive: W:
Logon Script:
Profile Path:
Domain: PINOLE
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Mon, 18 Jan 2038 19:14:07 PST
Kickoff time: Mon, 18 Jan 2038 19:14:07 PST
Password last set: Wed, 16 Jun 2010 13:05:30 PDT
Password can change: Wed, 16 Jun 2010 13:05:30 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

[root@pdc-srv samba]# smbldap-usershow test6
dn: uid=test6,ou=Users,dc=pinole,dc=com
objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
cn: test6
sn: test6
givenName: test6
uid: test6
uidNumber: 1012
gidNumber: 513
homeDirectory: /home/test6
loginShell: /sbin/nologin
gecos: System User
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
displayName: test6
sambaSID: S-1-5-21-1790762827-2518552153-1965868529-3024
sambaPrimaryGroupSID: S-1-5-21-1790762827-2518552153-1965868529-513
sambaHomePath: \\PDC-SRV\test6
sambaHomeDrive: W:
sambaLMPassword: F5CF000C05721947AAD3B435B51404EE
sambaAcctFlags: [U]
sambaNTPassword: 059D9B5115D7554D006DD6E6B3403B6C
sambaPwdLastSet: 1276718730
sambaPwdMustChange: 1363032330
userPassword: {SSHA}xcHbH7IIFXLNrpL9S4kbFD+r+ol0ZTUv
shadowLastChange: 14776
shadowMax: 999

Hasta aqui todo va bien.

19; Revisando si samba ya tomo el control del dominio, para esto tenemos que leer el archivo log de nmb:

[root@pdc-srv samba]# tail log.nmbd

Samba server PDC-SRV is now a domain master browser for workgroup PINOLE on subnet 172.16.5.152

*****
[2010/06/16 13:02:33, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(395)
*****

Samba name server PDC-SRV is now a local master browser for workgroup PINOLE on subnet 172.16.5.152

*****

Perfecto.

20; Probando los accesos de los usuarios a cada uno de sus directorios personales:
[root@pdc-srv samba]# smbclient \\\\pdc-srv\\test6 -U test6
Enter test6's password:
Domain=[PINOLE] OS=[Unix] Server=[Samba 3.3.8-0.51.el5]
smb: \> mkdir seis
smb: \> quit
[root@pdc-srv samba]#

Listo no marco error de acceso, para que vean si funciona, vamos tratando hacer lo mismo, pero usando otro usuario:
[root@pdc-srv samba]# smbclient \\\\pdc-srv\\test6 -U test1
Enter test1's password:
Domain=[PINOLE] OS=[Unix] Server=[Samba 3.3.8-0.51.el5]
tree connect failed: NT_STATUS_ACCESS_DENIED

Correcto acceso denegado.

Bien, hasta aqui samba esta listo para recibir a sus clientes, ustedes ya saben como agregar sus equipos con Windows XP a el dominio, es casi el mismo proceso en windows 7, nomas que deben llevar a cabo unos cambios en el register, el principio del blog les puse el link donde dice como hacer esto.

LDAP Slave Server

Ya tenemos un servidor PDC con samba y LDAP, todo funciona correctamente, nuestros clientes se estan conectando, todo mundo esta trabajando sin problemas. Pero resulta que la empresa crecio y ahora los logeos estan un poco lentos.

Samba+LDAP segun la documentacion dice que por cada 50 usuarios debemos tener un BDC para que ayude a los logeos asi el PDC no se sature y alente la red.

La ventaja de LDAP es que tiene la opcion de replica hacia otro LDAP en tiempo real, no es necesario apagar el servicio y hacer rsync o cp o tar para llevar la BD de un servidor a otro.

LDAP tiene muchas maneras de llevar a cabo esto, cual es la mas eficiente no se, solo he trabajado con una muy estable y no estamos cambiando a cada rato los settings del PDC asi que para mi es mas que suficiente.

Esto funciona a grandes razgos asi, el PDC tiene el servidor LDAP maestro, necesitamos un BDC con un servidor LDAP esclavo. Cuando se hace algun cambio en la BD del PDC, el LDAP maestro envia los cambios a el LDAP esclavo que se esta ejecutando en el BDC, asi de simple.

Con esto tendremos redundancia de servidores de logeo, si cae uno el otro hara la chamba, lo unico malo que si el PDC cae y alguien quisiera hacer un cambio en su cuenta va a estar dificil por que el PDC manda, nada es perfecto, nunca me ha tocado esto.

Hacer esto no es nada dificil, lo unico que tenemos que hacer es o siguiente:

1; Datos del BDC:

IP: 172.16.5.153
Hostname: bdc-srv.pinole.com

2; Aqui estamos usando ya PFSENSE, asi que doy de alta los datos de mis equipos en el DNS asi me olvido de editar el /etc/hosts.

3; Software a instalar. Vamos a seguir del PDC los pasos del #4 a el 5-C.

4; Configurando el LDAP esclavo:

Aqui vamos a agregar a el final del archivo slapd.conf esto:

updatedn "cn=Manager,dc=pinole,dc=com"
updateref ldap://pdc-srv.pinole.com:389/

5; Seguir los pasos #14 y #15 para que nuestro BDC accese los usuarios del PDC via LDAP, probar.

6; Copear la BD de LDAP maestro a el esclavo y enviarla a el LDAP esclavo, cargar el LDAP esclavo con el respaldo traido desde el maestro.

a)Maestro.
slapcat -l pinole.ldif
b) Enviar este archivo a el esclavo, aqui yo use ssh para esto con llave publica.
c) slapadd -l pinole.ldif
NOTA: aqui necesitamos cambiar los permisos del directorio /var/lib/ldap/pinole de nuevo:
chown -R ldap:ldap /var/lib/ldap/pinole

7; Seguir paso #5-f.

8; Iniciar el LDAP esclavo.

9; En el LDAP maestro necesitamos apagarlo y agregar lo siguiente a el final del archivo slapd.conf:

#Replicas of this database
replogfile /var/lib/ldap/pinole/replog
replica host=bdc-srv.pinole.com:389
binddn="cn=Manager,dc=pinole,dc=com"
credentials=ldap-password
bindmethod=simple

10; Crear el archivo replog y poner los permisos de ldap:

touch /var/lib/ldap/pinole/replog
chown -R ldap:ldap /var/lib/ldap/pinole/

11; Reiniciar el servicio de ldap:

service ldap restart

Aqui ya tenemos nuestros dos servicios arriba, necesitamos saber si funcionan. Para esto, tanto el PDC como el BDC deben tener dados de alta ambos en el archivo ldap.conf, asi si uno no responde sabran usar el otro.

Asi quedaria el /etc/ldap.conf en ambos, solo se le agrega un parametro solemente:

host 127.0.0.1 bdc-srv.pinole.com

Como podran ver solo agregamos el bdc.

El /etc/openldap/ldap.conf lo mismo:

HOST 127.0.0.1 bdc-srv.pinole.com
URI ldap://127.0.0.1/ ldap://bdc-srv.pinole.com/
BASE dc=pinole,dc=com
TLS_CACERTDIR /etc/openldap/cacerts

Si quieren probar esto apaguen el LDAP maestro y pidan la informacion del algun usuario del dominio, debe arrojarselas aunque el LDAP maestro este apagado.

Ahora de nuevo prendan el LDAP maestro, agreguen un usuario o cambien el password de uno usuario, la replica la hace rapido. Apaguen el LDAP maestro y traten de pedir info del usuario creado, van a ver que en cualquiera de los 2 servidores les mostrara la informacion, lo que significa que funciona.

BDC, ahora seguimos con el BDC, aqui es donde entra Samba. La configuracion es parecida a el PDC, solo unas cosillas cambian, aqui les muestro el smb.conf del BDC.

#Global parameters
[global]
workgroup = PINOLE
server string = BDC Domain
netbios name = BDC-SRV
hosts allow = 172.16.5. 127.
interfaces = eth0, lo
bind interfaces only = Yes
remote announce = 172.16.5.255
hosts deny = 0.0.0.0
smb ports = 139 445

# passwd backend
encrypt passwords = yes
passdb backend = ldapsam:"ldap://172.16.5.152/ ldap://172.16.5.153/"
enable privileges = yes

# Log options
log level = 1
log file = /var/log/samba/%m.log
max log size = 500
syslog = 1

# Name resolution
name resolve order = wins hosts bcast lmhost

# misc
timeserver = No
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
use sendfile = yes

# Dos-Attribute
map hidden = No
map system = No
map archive = No
map read only = No
store dos attributes = Yes

# printers - configured to use CUPS and automatically load them
load printers = No
printcap name =
cups options =
show add printer wizard = No

# LDAP-Configuration
ldap ssl = off
ldap passwd sync = Yes
ldap suffix = dc=pinole,dc=com
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=Manager,dc=pinole,dc=com
idmap backend = ldap:ldap://172.16.5.152 ldap://172.16.5.153
idmap uid = 10000-20000
idmap gid = 10000-20000

# logon options
logon script =
logon path =
logon path =
logon home =
logon drive =

# setting up as domain controller
username map = /etc/samba/usermap
preferred master = Yes
wins support = No
wins server = 172.16.5.152
domain logons = Yes
domain master = No
local master = Yes
os level = 64
map acl inherit = Yes
unix charset = UTF8
password level = 6
map to guest = Bad User

Vamos a crear el archivo /etc/samba/usermap y agregar los datos al igual que el PDC.

touch /etc/samba/usermap
root = Manager administrator admin
nobody = guest pcguest smbguest

Guardar el passwd del ldap master:

[root@bdc-srv samba]# smbpasswd -W
Setting stored password for "cn=Manager,dc=pinole,dc=com" in secrets.tdb
New SMB password:
Retype new SMB password:

Guardar el SID del PDC.
[root@bdc-srv samba]# net rpc getsid PINOLE
Storing SID S-1-5-21-1790762827-1111111111-111111111 for Domain PINOLE in secrets.tdb

Unir a el dominio:

[root@bdc-srv samba]# net rpc join -U root
Enter root's password:
Joined domain PINOLE.

o

[root@bdc-srv samba]# net rpc join
Enter root's password:
Joined domain PINOLE.

Vean cual les funciona, la 1ra en otro dominio de prueba marco este error:

net rpc join -U root
Enter root's password:
[2010/06/21 22:50:14, 0] libsmb/clientgen.c:cli_receive_smb(165)
Receiving SMB: Server stopped responding
Could not connect to server SMBPDC
Connection failed: NT_STATUS_IO_TIMEOUT

Usando la 2da version funciono.

Verificamos en el PDC si la cuenta fue creada:
[root@pdc-srv pinole]# smbldap-groupmod -m test7 inv
adding user test7 to group inv
[root@pdc-srv pinole]# pdbedit -Lv bdc-srv$
Unix username: bdc-srv$
NT username: bdc-srv$
Account Flags: [S ]
User SID: S-1-5-21-1790762827-2518552153-1965868529-1003
Primary Group SID: S-1-5-21-1790762827-2518552153-1965868529-515
Full Name: Computer
Home Directory:
HomeDir Drive:
Logon Script:
Profile Path:
Domain: PINOLE
Account desc: Computer
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Mon, 21 Jun 2010 06:17:10 PDT
Password can change: Mon, 21 Jun 2010 06:17:10 PDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ya solo hechamos a volar el samba y a probar.

smbclient -L \\bdc-srv -U root

14 comentarios:

Unknown dijo...

Pedro,
estamos implementando samba+ldap en centos, para habilitar un pdc. Me funcionó muy bien tu tutorial, ahora respecto a una interfaz de administración cual consideras mas completa para incorporar y editar los grupos, usuarios y controles de acceso. ¿Openldap o MDS Mandriva?.
Por otro lado, necesitamos respaldar la información de los usuarios manejan en la carpeta escritorio y mis documentos, que se encuentran en la carpeta home del pdc, que recomiendas como plataforma de respaldo?

Pedro Moreno dijo...

Hola felipe.

Me agrada que te sirviera. Mira yo estoy contento con Mandriva para administrar el dominio.

Para respaldo, vete por bacula, pronto voy a terminar el tema de bacula, dale una revisada a el site de bacula y veras todo lo que se puede hacer con el, tiene todo para codearse con los grandes, yo lo tengo usando mas de 3 anos.

Cualquier cosa estamos a tus ordenes!!!

erac dijo...

Hola Pedro
Gracias por tu guia, la he llevado paso a paso, todo caminaba bien hasta el paso 20, Probando los accesos de los usuarios a cada uno de sus directorios personales
Pero me da el siguiente error:

tree connect failed: NT_STATUS__BAD_NETWORK_NAME

me podrias ayudar?

De antemano muchas gracias

Pedro Moreno dijo...

Hola erac disculpa la tardanza.
Mira esos errores tienen que ver con la resolucion de nombres.

Prueba dando de alta tu servidor en el hosts.

Debes poner pingear por nombre del ahi debe funcionarte, me dices como te fue saludos y animo!!!

Nicolas dijo...

Amigo:

excelente tutorial me funciono súper, aun que tengo que comentarte algo que me paso.

Esta guia la ise hace un tiempo atras y me funciono perfecto, de hecho lo integre con LAM y excelente, el problema que ahora quise hacerlo denuevo(la maquina anterior se iso humo!!) y en los repo solo esta samba en su version 3.5, me di cuenta que anteriormente lo ise con samba 3.3.8, el problema es que con samba 3.5 no me funciona y no tengo de donde diablos obtener el samba 3.3.8

Sabes por que puede ser?

GalileoWeb dijo...

Excelente tutorial compañero. Muchas gracias, me ha sido de enorme utilidad.

Un saludo desde España.

Nicolas dijo...

Solucionado!!

Tontera mia nomas lo volvi a hacer y funciona perfecto, una vez mas compadre muchisisisisimas gracias!!!

Ing. Tony Medina dijo...

Saludos, estoy leyendo el tutorial aun, para estar seguro de lo que voy a hacer, tengo dudas con el paso donde dices que en el home debe haber una carpeta por cada usuario creado:

[root@pdc-srv samba]# ll /home/
total 32
drwx------ 2 notelaacabas Domain Users 4096 Jun 16 10:19 notelaacabas
drwxr-xr-x 3 root root 4096 Jun 16 09:48 samba
drwx------ 2 test1 Domain Users 4096 Jun 16 10:07 test1
drwx------ 2 test2 Domain Users 4096 Jun 16 10:07 test2
drwx------ 2 test3 Domain Users 4096 Jun 16 10:07 test3
drwx------ 2 test4 Domain Users 4096 Jun 16 10:08 test4
drwx------ 2 test5 Domain Users 4096 Jun 16 10:06 test5
drwx------ 2 test6 Domain Users 4096 Jun 16 13:05 test6


Esto es porque motivo??.
Por otro lado tengo instalada la versio samba 3.5, con esta version funciona igualmente el tutorial...???

Pedro Moreno dijo...

Hola.

Claro que debe funcionar, ya que la configuracion de openldap es independiente de la version de samba/OS, hasta la fecha no he visto que amarren openldap con alguna version de samba, es transparente por ello es bonito los protocolos abiertos.

Por que folder por usuario? bien supongamos que decidas que cada usuario tenga sus archivos en el server, estos por diseno son privados, nadie mas puede mas que el mismo usuario, como garantizas que la info esta protegida?

Tipo roaming profile de windows, cada usuario su klabaza, si uno desea que mas de uno accesen a la info mejor se abre un directorio compartido y listo.

Con eso garantizas confidenciabilidad a el usuario.

Saludos!!!

Ing. Tony Medina dijo...

Saludos, Bueno lo estuve montando en centos 6.2 y me da varios errores todo esto debido a que los directorios en esta version del SO cambian respecto a la version 5, ademas tambien algunas ordenes por consola cambian. Probare con la version 5.7 de Centos.

Pedro Moreno dijo...

Hola Tony.

Voy a probar la version 6.x para ver esto que comentas, saludos!!!

Ing. Tony Medina dijo...

Saludos: por fin lograste probar la version Centos 6.2 ???, es que quede con la duda..

Pedro Moreno dijo...

Por suerte necesita hacer una migracion de centos 5x hacia 6.3, ando en esto, esta semana tengo que hacerlo, saludos!!!

Pedro Moreno dijo...

Tony buenos dias.

Fijate que si cambio la forma de trabajar de OpenLDAP, samba sigue igual, esta semana voy a trabajar sobre esto y actualizare el blog con este tema.

Saludos!!!