Configuración de PDC en Linux Debian Leny - Primary Domain Controller

DEBIAN

Un Primary Domain Controller (PDC) o Controlador de Dominio, es una de las mejores cosas que hizo Microsoft en sus días, lo llamó Active Directory. Básicamente Active directory es un conjunto de herramientas para la gestión de los usuarios de un dominio, nos permitirá la creación, modificación, de las máquinas del PDC así como los usuarios y grupos del Dominio.



Para la autenticación utilizaremos OpenLdap, OpenLdap es una base de datos para directorios de acceso y lectura rapidos pero en detrimento a la velocidad para escribir.

Esta base de datos se utilizan generalmente para la representación de directorios y arboles de dependendencias y para la representación de datos vinculadas con el organigrama de una empresa que rara ves se modifica.

Recopilemos los datos antes de la instalación para estar listos una ves que nos pidan.

Contraseña del admin de OpenLdap XXXXXXX

Nombre del dominio miempresa.com

Nombre de la Organización miempresa.com

Motor de la Bases de datos LDAP. BDB

Version de Ldap 2


A partir de aquí nos haremos amigos de la consola de comandos.


Instalaremos OpenLdap y Shells scripts de utilidad afines a Ldap

# apt-get install slapd ldap-utils

Nos pedira la contraseña del administrador de base de datos y le ingresamos la que anotamos arriba.


Luego reconfiguraremos el paquete slip para ingresarle mas datos acerca del nombre del domino y la organización, ademas de introducir el motor de base de datos funcional al fomato de Berkeley y cuestiones de seguridad y copiado.


# dpkg-reconfigure slapd


Dato solicitado Dato a introducir

Omitir la configuración de OpenLDAP no

Nombre de dominio miempresa.com

Nombre de organización Descripción de la empresa

Contraseña del admin XXXXXXX

Confirme la contraseña del admin XXXXXXX

Motor de base de datos a utilizar BDB

Borrar la base de datos al purgar slapd no

Mover la base de datos antigua sí

Permitir LDAP v2 sí


Ahora comprobamos el buen funcionamiento de nuestra bd


# ldapsearch -x -b "dc=miempresa,dc=com"


Con esto buscamos cualquier entrada en la bd que contenga la entrada miempresa.com, nos debera de mostrar alguna información, luego de esto vamos a instalar el administrador visual de ldap que sera accesible via web. Instalamos el servidor apache con encriptación ssl


# apt-get install apache-ssl


Mientras se instala el paquete apache-ssl se le pedirá la siguiente información:

Dato solicitado Dato a introducir

Nombre del país PY

Estado o provincia ÑE

Localidad Pilar

Nombre de la organización miempresa.com

Nombre de la unidad organizativa info.miempresa.com

Nombre del host pdc.miempresa.com

Los datos que se introducira va de acuerdo al pais de localizacion, el estado y la ciudad en donde la empresa se desempeña.


La encriptación ssl permitira tener mayor seguridad cada ves que administramos nuestro directorio ldap y ademas de darnos la certeza de que nuestros datos no estan siendo escuchados.


Lego de esto instalaremos librerias de ldap hechas en phyton que nos permitira la administración mas eficiente del servidor. En la consola ejecutamos


# apt-get install smbldap-tools


Ahora sí es momento para instalar el phpldapadmin:

# apt-get install phpldapadmin


Luego hay que instalar una utilidad para hashear los password de samba. Debido a que esta utilidad no ha sido incluida en el paquete smbldap-tools de Debian, habrá que descargar sus archivos fuente de Internet y compilarlos en nuestro sistema para que nos genere el ejecutable de mkntpwd.


En la consola ejecutar


# wget http://juanpablo.netne.net/descargas/mkntpwd.tar.gz


Descomprimimos

# tar –xvf mkntpwd.tar.gz

Nos vamos al directorio

# cd mkntpwd


Instalamos las librerias que haran posible compilar en debian, para ello ejecutamos.

# apt-get install build-essential


Luego de esto hacemos make para compilar


# make


Una vez compilado copiamos los ejecutables creados


# cp mkntpwd /usr/local/bin


Ya esta, ahora instalamos samba, el servicio que permitira coorer al Server como pdc


# apt-get install samba samba-doc


Se le pedira una serie de datos


Nombre del dominio --> miempresa.com --> Se usa el mismo que se usó para LDAP
Usar passwords encriptados --> sí --> Puede que NO se le pregunte este dato
Modificar smb.conf para que use la configuración WINS proveniente de DHCP --> no


Luego de esto necesitamos configurar Openldap para que cargue el esquema de representación de datos compatibles con smaba para que este ultimo sea capaz de utilizar a ldap como backend.


Para ello en la consola


#:/usr/src/mkntpwd# cd /usr/share/doc/samba-doc/examples/LDAP
#:/usr/share/doc/samba-doc/examples/LDAP# gunzip samba.schema.gz
#:/usr/share/doc/samba-doc/examples/LDAP# cp samba.schema /etc/ldap/schema


Utilizamos el archivo de schema que trae samba por defecto.


Editamos el archivo de configuración de slapd.conf


/# vi /etc/ldap/slapd.conf

En el apartado de includes agregamos la sgte linea.


/etc/ldap/schema/samba.schema


Ahora necesitamos el password hasheado para slapd, para ello ejecutar


~# slappasswd

New password: suclave ( La clave anotada desde un principio)

Re-enter new password: suclave (Repita nomas)

{SSHA}irPHhNbDt4WjBW5mzECBLGxnwM/CNzNm


Este valor dado lo copiamos y luego volvemos al archivo de configuración de slapd


/# vi /etc/ldap/slapd.conf

En esta linea


rootdn "cn=admin,dc=miempresa,dc=com"


Agregamos una mas que representa al password de root hasheado para poder ingresar al directorio ldap


rootpw {SSHA}irPHhNbDt4WjBW5mzECBLGxnwM/CNzNm


Para reforzar la seguridad buscamos la linea


access to attrs=userPassword,shadowLastChange


y la cambiamos por


access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword


Para que los atributos sambaLMPassword y sambaNTPassword NO sean accesibles a todos. Guardamos los cambios realizados en este archivo, reiniciamos el servicio de openldap .


/# /etc/init.d/slapd restart



Abrimos el explorador y tecleamos


http://pdc.miempresa.com/phpldapadmin (recordemos ingresar un registro de tipo A para que pdc.miempresa.com tenga correspondencia en nuestro dns).


En los campos

Usuario --> cn=admin,dc=miempresa,dc=com
Password --> suclave


Si ingresamos es porque anda todo bien, luego de esto, hacemos un populate del directorio de la empresa, esto significa crear los ususarios y grupos uinicailes de nuestro directorio, ejecutamos el comando.


# smbldap-populate


Se creara los grupos y usuarios y se nos volvera a preguntar si mantenemos el password para lo cual reingresaremos suclave (Password anotado desde un principio), es importante manejar siempre un password para no dar lugar a olvidos catastroficos.


Luego de esto es necesario crear los directorios para que samba pueda replicar los directorios de los usuarios de windows a Linux ademas de administrar otros recursos de redes, para ello en la consola.


/# mkdir -p /home/samba/netlogon
/# mkdir -p /home/samba/profiles
/# chmod 777 -R /home/samba/profiles

Ahora llego el momento de configurar samba para que haga todo lo que tenemos previsto, para ello editamos el archivo /etc/samba/smb.conf. Cada linea con el prefijo # indica comentario y su proposito es explicativo.

Ejecutamos en la consola

# vi /etc/samba/smb.conf

Agregamos esto

[global]

### Configuracion basica del servidor ###

workgroup = miempresa.com #Asi se vera en la exploracion de la red

netbios name = fderecho # Esto se difundira por la red avisando acerca del nuevo

server string = Servidor de Archivos de Miempresa

# socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192

### Configuracion para que la maquina sea el PDC master ###

os level = 65 # constituir preferencia por sobre otras maquinas de la red

preferred master = yes # Indicamos que sera pdc

local master = yes # lo anterior

domain master = yes # Sobre PD

domain logons = yes # Autenticable

### Configuracion de seguridad y conexion ###

security = user # tipo de seguridad usuario y passdword

guest ok = no

encrypt passwords = true # Encriptación de password

null passwords = no

wins support = yes

name resolve order = wins lmhosts host bcast

dns proxy = no

time server = yes

### Otras configuraciones varias para SAMBA ###

log file = /var/log/samba/log.%m

log level = 2

max log size = 50

hide unreadable = yes

hide dot files = yes

panic action = /usr/share/samba/panic-action %d

### Samba en castellano y compatible con Windows NT

# Elimina problemas de acentos entre carpetas windows y samba

dos charset = 850

unix charset = iso-8859-15

### Parametros para el soporte de LDAP para la autenticación ###

passdb backend = ldapsam:ldap://127.0.0.1

ldap suffix = dc=miempresa,dc=com

ldap machine suffix = ou=machines

ldap user suffix = ou=users

ldap group suffix = ou=groups

ldap admin dn = cn=admin,dc=miempresa,dc=com

ldap delete dn = no

enable privileges = yes

#;Para permitir a los usuarios cambiar su clave desde Windows

ldap passwd sync = Yes

passwd program = /usr/sbin/smbldap-passwd %u

passwd chat = *New*password* %n *Retype*new*password* %n *all*authentication*tokens*updated*

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 -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"

server signing = auto

server schannel = Auto

domain logons = yes

### Perfiles moviles de usuario, carpeta home y script de inicio ###

# Si no deseamos tener perfiles móviles comentar las lineas:

# logon home

# logon path

logon drive = U:^Mlogon home = miempresa%U

logon path = miempresaProfiles%U

logon script = logon.bat

### Script para automatizar la adicion de cuentas de maquinas ###

### al arbol LDAP cuando estas se unan por primera vez al dominio ###

### Impresion ###

load printers = yes

printcap name = /etc/printcap

printing = cups

printcap name = cups

; Si quiero que el grupo sambaadmins pueda administrar las impresoras

; printer admin = @sambaadmins

# Para los recursos compartido y sincronización


[homes]

comment = Home Directories

valid users = %S

read only = No

browseable = No


[netlogon]

comment = Network Logon Service

path = /var/lib/samba/netlogon

admin users = root

guest ok = Yes

browseable = No


[Profiles]

comment = Roaming Profile Share

# would probably change this to elsewhere in a production system ..

path = /var/lib/samba/profiles

#Agregado el dia 29

create mask = 0777

directory mask = 0777

#Fin de Agregacion

read only = No

#Cambiado de yes a No

profile acls = No

#Fin de cambio

browsable = Yes


[printers]

comment = All Printers

path = /var/spool/samba

use client driver = Yes

create mask = 0600

guest ok = Yes

printable = Yes

browseable = No

public = yes

writable = yes

admin users = root

write list = root



Una ves editado el archivo y puestos los valores acorde a nuestro entorno guardamos el archivo y reinicializamos el servicio de samba.


Hacemos un testeo para cooroborar las lineas del conf de samba


:/# testparm

Antes de reiniciar el servicio Samba, le proveemos a Samba la contraseña de root(admin) para LDAP:

/# smbpasswd -w suclave
/# /etc/init.d/samba restart


Configuración de la autenticación UNIX

Ahora vamos a configurar a nuestro sistema para que vea a los usuarios LDAP como usuarios "normales" de UNIX.

Primero vamos a instalar el paquete libnss-ldap:

# apt-get install libnss-ldap

Mientras se instala el paquete libnss-ldap se le pedirá alguna información. Sin embargo, al finalizar la instalación de este paquete, tendremos que reconfigurarlo para que nos pida más información. Recordemos que para reconfigurarlo debemos ejecutar el siguiente comando:

# dpkg-reconfigure libnss-ldap

Dato solicitado --> Dato a introducir

Servidor de LDAP --> 127.0.0.1
Nombre distintivo (DN) --> dc=miempresa,dc=com
Versión de LDAP --> 3
Se requiere usuario para la base de datos LDAP --> no
Privilegios especiales de LDAP para root --> sí
Configuración leíble y escribible sólo para el propietario --> sí
Cuenta LDAP para root --> cn=admin,dc=miempresa,dc=com
Contraseña para la cuenta LDAP de root --> suclave --> La misma del admin desde un principio

/# vi /etc/nsswitch.conf

Buscamos las siguientes 3 líneas:

passwd: compat
group: compat
shadow: compat

y las reemplazamos para que queden así:

passwd: compat ldap
group: compat ldap
shadow: compat ldap

El contenido final y completo de este archivo se muestra a continuación:

/# vi /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: 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: nis

En este momento podemos usar la utilidad getent para confirmar que se muestren los grupos mapeados que creamos con anterioridad:

# getent group

y el resultado puede contener lo siguiente:
...
sambaadmins:*:20000:
sambausers:*:20001:
sambaguests:*:20002:
sambamachines:x:20003:
...

Seguidamente vamos a instalar el paquete libpam-ldap:

# apt-get install libpam-ldap

Mientras se instala el paquete libpam-ldap se le pedirá alguna información. Sin embargo, al finalizar la instalación de este paquete, tendremos que reconfigurarlo para que nos pida más información. Recordemos que para reconfigurarlo debemos ejecutar el siguiente comando:

# dpkg-reconfigure libpam-ldap

La siguiente tabla muestra la información que se nos pue de pedir (ya sea en la instalación o en la reconfiguración) y lo que debemos escribir:

Dato solicitado --> Dato a introducir --> Notas adicionales
Servidor de LDAP --> 127.0.0.1
Nombre distintivo (DN) --> dc=miempresa,dc=com
Versión de LDAP --> 3
Make local root Database admin --> sí --> La pregunta venía en Inglés
Se requiere usuario para la base de datos LDAP --> no
LDAP account for root --> cn=admin,dc=miempresa,dc=com --> La pregunta venía en Inglés
Contraseña para la cuenta LDAP de root --> suclave --> La misma del admin desde el principio
Local crypt to use when changing passwords --> md5

Como se pudo observar, algunos datos solicitados fueron los mismos que pidió el paquete libnss-ldap.

Ahora vamos a editar los archivos de correspondientes para configurar PAM para LDAP:

Primero vamos con el archivo /etc/pam.d/common-account. Buscamos la siguiente línea:

account required pam_unix.so

la comentamos y agregamos estas dos líneas:

account sufficient pam_ldap.so
account required pam_unix.so try_first_pass

Así, el contenido final y completo del archivo /etc/pam.d/common-account se muestra a continuación:

# vi /etc/pam.d/common-account

#
# /etc/pam.d/common-account -authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
#account required pam_unix.so
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass

En el archivo /etc/pam.d/common-auth buscamos la siguiente línea:

auth required pam_unix.so nullok_secure

la comentamos y agregamos estas dos líneas:

auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

Así, el contenido final y completo del archivo /etc/pam.d/common-auth se muestra a continuación:

# vi /etc/pam.d/common-auth

#
# /etc/pam.d/common-auth -authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
#auth required pam_unix.so nullok_secure
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

En el archivo /etc/pam.d/common-password buscamos la siguiente línea:

password required pam_unix.so nullok obscure min=4 max=8 md5

la comentamos y agregamos estas dos líneas:

password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass

Así, el contenido final y completo del archivo /etc/pam.d/common-password se muestra a continuación:

/# vi /etc/pam.d/common-password

# /etc/pam.d/common-password -password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
#used to change user passwords. The default is pam_unix
# The "nullok" option allows users to change an empty password, else
# empty passwords are treated as locked accounts.
#
# (Add `md5' after the module name to enable MD5 passwords)
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs. Also the "min" and "max" options enforce the length of the
# new password.
#password required pam_unix.so nullok obscure min=4 max=8 md5

# Alternate strength checking for password. Note that this
# requires the libpam-cracklib package to be installed.
# You will need to comment out the password line above and
# uncomment the next two in order to use this.
# (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')
#
# password required pam_cracklib.so retry=3 minlen=6 difok=3
# password required pam_unix.so use_authtok nullok md5
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass

Ahora, debido a que nuestro servidor LDAP va a ser consultado de una manera muy constante, es una buena práctica configurar un servicio de caché para algunos datos de usuario. Mientras los datos que residan en la caché sean lo suficientemente recientes, se utilizarán estos en vez de preguntar al servidor LDAP otra vez. El servicio de cacheo de nombres (nscd) o "name service caching daemon" cumple exactamente esta tarea.

Instalamos el paquete nscd con el siguiente comando:

/# apt-get install nscd

Este es un muy buen momento para reiniciar el servicio Samba:

/# /etc/init.d/samba restart

Finalmente para adicionar usuarios via comando

# smbldap-useradd -a -G 512 -m -s /bin/false -d /bin/null -F "" -P nombre_usuario

En donde nombre_usuario es el nombre que qeuremos adicionar

Luego

# net -U root rpc rights grant nombre_usuario SeMachineAccountPrivilege

Le otorgamos permiso para la creación de maquinas al usuario.

Uniendo máquinas a nuestro dominio Samba

Es evidente que si un usuario se loguea tambien lo debera hacr su computadora, asi que existira un registro de la computadora utilizada por el usuario.

NOTA: nuestro archivo de configuración Samba está hecho para que las cuentas de máquina sean agregadas de manera automática. Para utilizar el método manual para agregar cuentas de máquina a LDAP usaremos el phpldapadmin creando una entrada tipo "Samba 3 Machine" bajo ou=machines y perteneciente al grupo sambamachines.

Para utilizar el método automático de debemos recordar por un momento la siguiente línea de configuración Samba en el archivo /etc/samba/smb.conf:

# script para automatizar la adicion de cuentas de maquinas
# al arbol LDAP cuando estas se unan por primera vez al dominio
add machine script = /usr/sbin/smbldap-useradd -w "%u"

Esto significa que vamos a usar un script hecho en Perl llamado smbldap-useradd (ubicado en /usr/sbin) provisto por el paquete smbldap-tools para automatizar el proceso de creación de cuentas de máquina en LDAP. Sin embargo, este script necesita de 2 archivos de configuración para poder trabajar: smbldap.conf y smbldap_bind.conf que tendremos que alojarlos en la carpeta /etc/smbldap-tools para que el script los pueda utilizar.

La ubicación original de estos 2 archivos es /usr/share/doc/smbldap-tools/examples. El archivo smbldap.conf se encuentra dentro de un archivo comprimido llamado smbldap.conf.gz, mientras que el archivo smbldap_bind.conf se encuentra allí directamente en la carpeta mencionada.

MUY IMPORTANTE: una vez que hemos alojado estos archivos en la carpeta /etc/smbldap-tools, cambiaremos sus permisos para que sólo el root pueda leerlos y modificarlos. Más adelante explico el porqué de esto. Para alojar en /etc/smbldap-tools a los 2 archivos que necesitamos y cambiar sus permisos, vamos a ejecutar los siguientes comandos:

# cd /usr/share/doc/smbldap-tools/examples

# cp smbldap.conf.gz smbldap_bind.conf /etc/smbldap-tools:/# cd /etc/smbldap-tools
# gunzip smbldap.conf.gz

# chown root:root *
# chmod 600 *

­Primero vamos a configurar el archivo /etc/smbldap-tools/smbldap_bind.conf y le indicamos nuestro dominio y la contraseña del admin de LDAP. El contenido final y completo de este archivo se muestra a continuación:

############################
# Credential Configuration #
############################
# Notes: you can specify two differents configuration if you use a
# master ldap for writing access and a slave ldap server for reading access
# By default, we will use the same DN (so it will work for standard Samba
#release)
slaveDN="cn=admin,dc=miempresa,dc=com"
slavePw="suclave"
masterDN="cn=admin,dc=miempresa,dc=com"
masterPw="suclave"

Como se puede observar, la contraseña tuvo que ser escrita directamente y en texto plano. Por esta razón es que sólo el root puede acceder a leer este archivo y es por eso que le hemos cambiado los permisos a estos 2 archivos.

Ahora procedemos a configurar el archivo /etc/smbldap_tools/smbldap.conf. Como hay que cambiar diversas opciones, he preferido mostrar acá el contenido final y completo del archivo. Puede compararlo con el archivo original para que pueda notar las diferencias: (he eliminado algunas líneas comentadas para que no se haga tan largo)

NOTA: prepare el sambaSID que copió en la Configuración de Samba y escríbalo aquí en este archivo de configuración. Recuerde que para verlo de nuevo debe entrar a phpldapadmin y clickar en la entrada sambaDomainName y copiar el sambaSID

# $Source: $
# $Id: smbldap.conf,v 1.18 2005/05/27 14:28:47 jtournier Exp $
#
# smbldap-tools.conf : Q & D configuration file for smbldap-tools

# This code was developped by IDEALX (http://IDEALX.org/) and
# contributors (their names can be found in the CONTRIBUTORS file).
#
# Copyright (C) 2001-2002 IDEALX
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.

# Purpose :
# . be the configuration file for all smbldap-tools scripts

##############################################################################
#
# General Configuration
#
##############################################################################

# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return
SID="S-1-5-21-1196036262-4284380234-1513587473"

# Domain name the Samba server is in charged.
# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="IDEALX-NT"
sambaDomain="miempresa.com"

##############################################################################
#
# LDAP Configuration
#
##############################################################################

# Notes: to use to dual ldap servers backend for Samba, you must patch
# Samba with the dual-head patch from IDEALX. If not using this patch
# just use the same server for slaveLDAP and masterLDAP.
# Those two servers declarations can also be used when you have
# . one master LDAP server where all writing operations must be done
# . one slave LDAP server where all reading operations must be done
# (typically a replication directory)

# Slave LDAP server
# Ex: slaveLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
slaveLDAP="127.0.0.1"

# Slave LDAP port
# If not defined, parameter is set to "389"
slavePort="389"

# Master LDAP server: needed for write operations
# Ex: masterLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
masterLDAP="127.0.0.1"

# Master LDAP port
# If not defined, parameter is set to "389"
masterPort="389"

# Use TLS for LDAP
# If set to 1, this option will use start_tls for connection
# (you should also used the port 389)
# If not defined, parameter is set to "1"
ldapTLS="0"

# How to verify the server's certificate (none, optional or require)
# see "man Net::LDAP" in start_tls section for more details
verify="none"

# CA certificate
# see "man Net::LDAP" in start_tls section for more details
#cafile="/etc/smbldap-tools/ca.pem"

# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientcert="/etc/smbldap-tools/smbldap-tools.pem"

# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
#clientkey="/etc/smbldap-tools/smbldap-tools.key"

# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=miempresa,dc=com"

# Where are stored Users
# Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for usersdn
usersdn="ou=users,${suffix}"

# Where are stored Computers
# Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for computersdn
computersdn="ou=machines,${suffix}"

# Where are stored Groups
# Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
groupsdn="ou=groups,${suffix}"

# Where are stored Idmap entries (used if samba is a domain member server)
# Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
#idmapdn="ou=Idmap,${suffix}"

# Where to store next uidNumber and gidNumber available for new users and groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

# Default scope Used
scope="sub"

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="MD5"

# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"

##############################################################################
#
# Unix Accounts Configuration
#
##############################################################################

# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/false"

# Home directory
# Ex: userHome="/home/%U"
userHome="/home/users/%U"

# Default mode used for user homeDirectory
userHomeDirectoryMode="700"

# Gecos
userGecos="System User"

# Default User (POSIX and Samba) GID
defaultUserGid="515"

# Default Computer (Samba) GID
defaultComputerGid="20003"

# Skel dir
skeletonDir="/etc/skel"

# Default password validation time (time in days) Comment the next line if
# you don't want password to be enable for defaultMaxPasswordAge days (be
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="45"

##############################################################################
#
# SAMBA Configuration
#
##############################################################################

# The UNC path to home drives location (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="PDC-SMB3%U"
userSmbHome=""

# The UNC path to profiles locations (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
# Ex: userProfile="PDC-SMB3profiles%U"
userProfile=""

# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"

# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under dos
#userScript="logon.bat"

# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="idealx.com"
#mailDomain="idealx.com"

##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################

# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"

# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

# comment out the following line to get rid of the default banner
# no_banner="1"

Listo!

Ahora, pongámole atención por un momento a la línea de configuración que acabamos de poner en el archivo smbldap.conf:


# Where to store next uidNumber and gidNumber available for new users and groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

Cuando Samba llama al script smbldap-useradd para agregar automáticamente una cuenta de máquina, lo llama así: smbldap-useradd -w "%u" (tal y como lo especificamos en nuestra configuración de Samba). Podemos observar que en esa llamada no estamos especificando el UID ni el GID que llevará cada cuenta de máquina cuando se agregue.

Entonces es aquí donde la línea de configuración que acabamos de mostrar, nos indica que guardaremos en un atributo llamado sambaUnixIdPool los valores de UID y GID a usar en la siguiente cuenta de usuario/máquina que agreguemos en el directorio de LDAP si no especificamos directamente dichos valores.

MUY IMPORTANTE: el valor del UID irá incrementando automáticamente de 1 en 1 con cada cuenta que se vaya agregando, mientras que el GID no se incrementará sino que se mantendrá siempre fijo (y de hecho es exactamente lo que queremos).

Ahora, tenemos que ir al phpldapadmin a declarar dicho atributo sambaUnixIdPool para el dominio Samba ya que por defecto no lo trae. Así que le damos click a la entrada sambaDomainName=MIEPRESA.COM y en el espacio de la derecha vamos a buscar donde está el o los atributos tipo objectClass

Fuente: http://juanpablo.netne.net/index.php/en/manuales-linux/item/66

Tema Relacionado: DEBIAN