Instalar el paquete de openLDAP y algunas utilidades con el comando:
# apt-get install slapd ldap-utils
Mientras se instala el paquete slapd se le pedirá la siguiente información:
Dato solicitado Dato a introducir Notas adicionales
Contraseña del admin suclave Contraseña para la cuenta del admin del ldap
Confirme la contraseña suclave
Cuando se terminen de instalar los paquetes tenemos que reconfigurar a slapd para que nos pida más información:
# dpkg-reconfigure slapd
Dato solicitado Dato a introducir Notas adicionales
Omitir la configuración de OpenLDAP no Es para confirmar que desea
reconfigurar a OpenLDAP
Nombre de dominio jccec Es el nombre que yo le puse a mi
dominio de prueba
Nombre de organización jccec Aquí puede ir un nombre más
amigable y descriptivo
Contraseña del admin suclave Otra vez volver a digitar la clave
del usuario admin de LDAP
Confirme la contraseña del admin suclave Otra vez confirmar la clave del
usuario admin de LDAP
Motor de base de datos a utilizar BDB Formato Berkeley de Base de Datos
Borrar la base de datos al purgar slapd no Es para conservar la base de datos
de LDAP cuando se purgue
Mover la base de datos antigua sí Es para respaldar la base de datos
actual de LDAP. (prevención)
Permitir LDAP v2 sí
Ahora, para probar que el servicio de slapd está arriba y funcionando utilizamos el comando:
# ldapsearch -x -b “dc=jccec”
NOTA: Si por ejemplo su dominio se llama sudominio.com entonces el comando debe ser:
# ldapsearch -x -b “dc=sudominio,dc=com”
Si por ejemplo su dominio se llama sudominio.co.cr entonces el comando debe ser:
# ldapsearch -x -b “dc=sudominio,dc=co,dc=cr”
Y debe mostrarse una información.
Si saliera un mensaje como esto: “ldap_bind: Can't contact LDAP server (-1)”
entonces algo está pasando con el servicio de LDAP.
Si tenemos problemas con el slapd, entonces podemos ejecutarlo en modo debug para ver sus mensajes en tiempo real:
# slapd -d 256
Si al ejecutar este comando no se despliega ningún error, entonces puede abrir otra consola y pruebe ejecutar allí nuevamente el comando ldapsearch para observar qué mensajes se emiten y cuál puede ser el error.
SECCIÓN 2. Instalación de phpldapadmin
Instalar un administrador gráfico para LDAP nos va ayudar mucho a visualizar nuestro árbol organizativo en LDAP además de que nos permite llevar a cabo funciones muy útiles de una manera muy rápida. El phpldapadmin es un administrador hecho en PHP que corre encima de un servidor web (por ejemplo: Apache SSL o Apache2) y accesible utilizando cualquier navegador de internet (en mi caso lo usé con Iceweasel que es la versión de firefox que viene con Debian Etch).
NOTA: también existe otro administrador gráfico de LDAP llamado luma que viene entre los paquetes de Debian Etch, pero personalmente prefiero a phpldapadmin y he visto que es el más aceptado.
2.1 Instalación de apache-ssl
Antes de instalar a phpldapadmin vamos a instalar el servidor web Apache-SSL para correr siempre a
phpldapadmin desde allí vía páginas seguras.
# apt-get install apache-ssl
Mientras se instala el paquete apache-ssl se le pedirá la siguiente información:
Dato solicitado Dato a introducir Notas adicionales
Nombre del país CU Digitar cualquier valor de 2 caracteres
Estado o provincia PR Digitar cualquier valor (yo puse PR por
Pinar)
Localidad pri
Nombre de la organización jovenclub
Nombre de la unidad organizativa jovenclub
Nombre del host servidor.jccec Mi servidor se llama (servidor) y mi
dominio (jccec), tambien se puede
poner (localhost) y funciona bien
Correo electrónico su correo También puede digitar root@localhost
Para probar si el Apache-SSL está arriba y funcionando, abrimos nuestro navegador de internet y nos vamos a la siguiente dirección:
https://localhost
Si no nos devuelve ningún error entonces ya tenemos arriba a nuestro servidor web seguro.
2.2 Instalación de smbldap-tools y phpldapadmin
Seguidamente vamos a instalar un paquete llamado smbldap-tools que contiene varias herramientas para Sambay LDAP muy útiles para nuestros intereses:
# apt-get install smbldap-tools
Ahora sí es momento para instalar el phpldapadmin:
# apt-get install phpldapadmin
Para probar que el phpldapadmin quedó bien instalado, abrimos el navegador de internet y nos vamos a lasiguiente dirección:
https://localhost/phpldapadmin
Y debe aparecer la página principal de phpldapadmin. Si ocurriera algún error yo recomiendo volver a instalar el phpldapadmin o sino bajar la última versión de la página oficial y montarla en la carpeta /var/www
Una vez instalado, phpldapadmin requiere de una utilidad llamada: (mkntpwd) para crear los hashes 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:
La página que aloja los fuentes de mkntpwd es:
A continuación enumero los 7 archivos de mkntpwd con el fin de que usted corrobore si bajó los correctos:
getopt.c
getopt.h
Makefile
md4.c
mkntpwd.c
mkntpwd.h
smbdes.c
bien ahora
Necesitará tener instalados los paquetes: make, gcc and libc-dev,
entonces nos ubicamos en nel lugar donde se encuentra el paquete descargado (por consola)
y ejecutamos
tar -zxf mkntpwd.tar.gz (descompilamos el paquete)
cd mkntpwd (nos ubicamos en el directorio ya descompilado)
make para crear el archivo mkntpwd
debe sali algo como esto
gcc -O2 -DMPU8086 -c -o getopt.o getopt.c
gcc -O2 -DMPU8086 -c -o md4.o md4.c
md4.c: In function ‘mdfour’:
md4.c:144: warning: incompatible implicit declaration of built-in function ‘memcpy’
gcc -O2 -DMPU8086 -c -o mkntpwd.o mkntpwd.c
mkntpwd.c: In function ‘main’:
mkntpwd.c:37: warning: return type of ‘main’ is not ‘int’
gcc -O2 -DMPU8086 -c -o smbdes.o smbdes.c
gcc -O2 -DMPU8086 -o mkntpwd getopt.o md4.o mkntpwd.o smbdes.o
luego copiamos el archivo mkntpwd hacia /usr/local/bin
cp mkntpwd /usr/local/bin
Para probar si la utilidad mkntpwd quedó bien instalada simplemente ejecutamos el comando:
# mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]
-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)
with both options present the encrypted LanManager-Pwd is
printed first, followed by a ':' and the encrypted NT-Pwd.
The second usage behaves like mkntpwd -L pwd -N pwd
The third usage reads the password from STDIN or a File. Printout
is the same as second.
anton@genua.de
Si se nos muestra que el comando es incorrecto significa que tenemos que revisar los pasos anteriores para ver cuál hicimos mal.
SECCIÓN 3. Instalación de Samba
Vamos a instalar samba y samba-doc con el siguiente comando:
# apt-get install samba samba-doc
Mientras se instala el paquete samba se le pedirá la siguiente información:
Dato solicitado Dato a introducir Notas adicionales
Nombre del dominio jccec Se usa el mismo que se usó para LDAPUsar passwords encriptados sí Puede que NO se le pregunte este dato
Modificar smb.conf para que use
la configuración WINS proveniente no
de DHCP
Por ahora vamos a dejar así a Samba. Más adelante en otra sección lo vamos a configurar como se debe.
SECCIÓN 4. Configuración de LDAP
El servidor LDAP necesitará del esquema Samba para trabajar. Para eso vamos a obtener el archivo
samba.schema provisto por samba-doc y lo vamos a alojar en la carpeta /etc/ldap/schema. Hacemos lo siguiente desde la consola:
cd /usr/share/doc/samba-doc/examples/LDAP para ubicarnos en el directorio
gunzip samba.schema.gz
cp samba.schema /etc/ldap/schema
luego:
Ahora tenemos que editar el archivo de configuración de slapd /etc/ldap/slapd.conf y agregar la siguiente línea después del último “include” que aparezca en ese archivo para que LDAP use el esquema Samba:
include /etc/ldap/schema/samba.schema
Además buscaremos la siguiente línea: access to attrs=userPassword
y la cambiamos por: (para que los atributos sambaLMPassword y sambaNTPassword NO sean accesibles a todos)
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
El contenido final y completo del archivo /etc/ldap/slapd.conf se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:
---------------------------------------------------------------------------------------
# Allow LDAPv2 binds
allow bind_v2
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel 0
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
database bdb
suffix "dc=home"
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
lastmod on
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=home" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=home" write
by * read
------------------------------------------------------------------------------
Seguidamente debemos reiniciar a slapd para que estos cambios entren en vigencia:
# /etc/init.d/slapd restart
debe sresponder:
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.
hasta aqui todo marcha bien.
SECCIÓN 5. Introducción de los principales contenedores (“Organizational Units”) para el árbol LDAP
(estos pasos pueden variar dependiendo de su necesidad específica)
Para llevar a cabo este objetivo vamos a utilizar a phpldapadmin. Abrimos el navegador de internet y nos vamos a la dirección siguiente:
https://localhost/phpldapadmin
Para conectarnos digitamos los siguientes datos:
Para conectarnos digitamos los siguientes datos:
Usuario cn=admin,dc=jccec (aqui puse dc=jccec, porque mi dominio es jccec)
Contraseña la contraseña de admin que digitó cuando se configuró el LDAP
luego al entrar
Procederemos a declarar los contenedores principales. En mi caso particular yo declaré 3 “organizational units”:
groups (para manejar las cuentas de grupos)
machines (para manejar las cuentas de máquinas) y
users (para manejar las cuentas de los usuarios).
Usando el phpldapadmin expandimos el árbol de dc=jccec y le damos click a la opción “Create New Entry Here”
(para crear un hijo de dc=home), luego seleccionamos “Organisational Unit” (ou),
hacemos clic en proceed
nos aparece una ventana que dice
Create Object
Server: My LDAP Server using template: ou
New Organisational Unit
Container DN: dc=jccec
Organisational Unit: user
luego digitamos el nombre
deseado (en este caso users, por ejemplo) y presionamos la tecla de tabulación para que se habilite el botón para proceder (hasta que no se presione la tecla de tabulación no se habilitará el botón para proceder).
y despues la opcion ( Create Object )
Una vez creada la ou=users, procedemos de la misma forma para crear a ou=machines y a ou=groups.
Más adelante crearemos las demás entidades que conformarán nuestro árbol. Por ahora dejémoslo así.
Vamos a configurar a SAMBA para que sea un controlador de dominio principal, para que soporte los scripts de inicio y perfiles móviles (roaming profiles) y para que autentique a los usuarios utilizando LDAP. Además vamos a permitir que el script smbldap-useradd (provisto por smbldap-tools) nos automatice la adición de cuentas de máquina al árbol LDAP cuando éstas se unan al dominio por primera vez.
Antes de tocar el archivo de configuración, primero creamos las carpetas /home/samba/netlogon (para alojar el(los) script(s) de inicio) o lo podemos hacer en /var/lib/samba)
y /home/samba/profiles (para alojar los perfiles móviles de los usuarios). Asignamos
todos los permisos (777) a dicha carpeta profiles, para que cualquiera ya sea de sambaadmins o sambausers
pueda grabar su perfil móvil en el servidor.
yo por mi parte los coloco en /var/lib/samba que es el directorio por defecto
El contenido final y completo del archivo /etc/samba/smb.conf con todo el soporte citado con anterioridad se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:
las lineas estan en mi fichero smb.conf
luego:
Una vez que ya tenemos listo a /etc/samba/smb.conf podemos ejecutar el comando testparm para asegurarnos que la configuración Samba no tenga ningún error:
# 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
Ahora podemos irnos al phpldapadmin y refrescar su información para corroborar que tenemos una entrada más que se llama:
sambaDomainName=JCCEC. (en mi caso, porque mi dominio es jccec)
Si damos click en la entrada sambaDomainName podremos observar sus propiedades en la ventana de la derecha. Aprovechemos este momento para copiar en algún lugar el valor sambaSID (por ejemplo, el mío es: (S-1-5-21-451058037-3092806587-1514217385) ya que lo ocuparemos más adelante.
SECCIÓN 7. Mapeos de grupos con Samba
Primero definiré brevemente algunos términos a usar en esta sección:
RID: abreviatura de Relative IDentifier. Es un identificador por medio del cual un grupo corriente se convierte en un grupo especial con ciertas características especiales en nuestro dominio.
GID: abreviatura de Group IDentifier. Es el identificador único de un grupo.
A partir de Samba-3 tenemos la disponibilidad de crear mapeos o asociaciones entre los grupos de Windows y los grupos de UNIX. Esto es algo necesario debido a que existen grupos especiales propios de los dominios Windows que tienen características y privilegios específicos (Domain Admins, Domain Controllers, Builtin Print Operators,etc.) y vamos a querer que existan en nuestro dominio Samba ya que nos van a ser muy útiles.
En esencia lo que se hace para mapear un grupo en Samba, es asignarle el RID específico a dicho grupo para queadquiera las características específicas y especiales del grupo Windows correspondiente.
La siguiente tabla muestra los grupos Windows y sus correspondientes RIDs, así como su tipo y si es esencial en el directorio LDAP o no: (los RIDs no son declarados por mí, son valores ya establecidos)
Nombre del Grupo Windows RID Tipo Esencial
Domain Administrator 500 Usuario NoDomain Guest 501 Usuario No
Domain KRBTGT 502 Usuario No
Domain Admins 512 Grupo Yes
Domain Users 513 Grupo Yes
Domain Guests 514 Grupo Yes
Domain Computers 515 Grupo No
Domain Controllers 516 Grupo No
Domain Certificate Admins 517 Grupo No
Domain Schema Admins 518 Grupo No
Domain Enterprise Admins 519 Grupo No
Domain Policy Admins 520 Grupo No
Builtin Admins 544 Alias No
Builtin users 545 Alias No
Builtin Guests 546 Alias No
Builtin Power Users 547 Alias No
Builtin Account Operators 548 Alias No
Builtin System Operators 549 Alias No
Builtin Print Operators 550 Alias No
Builtin Backup Operators 551 Alias No
Builtin Replicator 552 Alias No
Builtin RAS Servers 553 Alias No
Como pudimos ver, son muchos los grupos Windows que se pueden mapear en Samba. Sin embargo, para mi necesidad específica únicamente mapearé a los siguientes 4 grupos:
Nombre Windows Nombre UNIX Notas adicionales
Domain Admins sambaadmins Este grupo de usuarios tendrán privilegios de
administrador localmente en sus computadoras.
Es decir, podrán instalar programas si corren
alguna aplicación que necesite modificar
algo en las carpetas de sistema no
tendrán problema, etc.
Domain Users sambausers Usuarios limitados localmente en sus computadoras.
Domain Guests sambaguests Quiero tener este grupo pero no pienso usarlo
por el momento
Domain Computers sambamachines Aquí se alojarán las cuentas de máquinas
del dominio
Para agregar nuestros grupos mapeados Samba, nos vamos al phpldapadmin y dentro de nuestra ou=groups
hacemos clic en ella y escogemos la opcion (Samba3 Group Mapping)
(nuestra “Organizational Unit” llamada groups) vamos a crear nuestros 4 “Samba 3 Group Mappings”.
Container DN: ou=groups,dc=jccec
Group: sambaadmins
Windows Name: Domain Admins
NOTA: por gusto personal los GIDs de mis grupos los comencé a partir de 20000.
GID Number: 20000
Samba SID: S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 512
Samba Group Type: Domain Admins
despues agregamos los user que van a estar en cada grupo
y luego crear objeto
y asi sucesivamente creamos los grupos sambausers, sambaguests (recuerden que el rid, va cambiando)
SECCIÓN 8. 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.
8.1 Instalación de libnss-ldap
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-ldapLa siguiente tabla muestra la información que se nos puede pedir (ya sea en la instalación o en la
reconfiguración) y lo que debemos digitar:
Dato solicitado Dato a introducir Notas adicionales
Servidor de LDAP 127.0.0.1
Nombre distintivo (DN) dc=jccec
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=jccec
Contraseña para la cuenta LDAP de root suclave La misma del
admin de LDAP
Ahora vamos a editar el archivo de configuración /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 fichero quedaria asi:
----------------------------------------------------------------------
El contenido final y completo de este archivo se muestra a continuación:
# /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:(al final )
...
sambaadmins:*:20000:
sambausers:*:20001:
sambaguests:*:20002:
sambamachines:x:20003:
----
8.2 Instalación de libpam-ldap
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-ldapLa siguiente tabla muestra la información que se nos puede pedir (ya sea en la instalación o en la
reconfiguración) y lo que debemos digitar:
Dato solicitado Dato a introducir Notas adicionales
Servidor de LDAP 127.0.0.1
Nombre distintivo (DN) dc=home
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=home La pregunta venía en Inglés
Contraseña para la cuenta LDAP de root suclave La misma del admin de LDAP
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:
#
# /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
-----------------------------------------------
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
------------------------------------------------
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 sería un muy buen momento para reiniciar el servicio Samba:
# /etc/init.d/samba restart
SECCIÓN 9. Agregando usuarios a nuestro directorio LDAP
ir nuevamente a https://localhost/phpldapadmin/
Aquí, vamos a agregar algunos usuarios (“Samba 3 Accounts”). Lo primero que vamos a hacer es agregar a LDAP el usuario que va a ser el administrador (como el root) del dominio y será el único con permisos para unir las máquinas al dominio. Para darle esa característica de administrador/root del dominio su identificador deberá ser 0 (uid=0). El nombre de usuario que escogí fue admin para que fuera el mismo nombre de la cuenta root de LDAP. De paso voy a hacerlo miembro del grupo sambaadmins (“Domain Admins”). Recordar que debemos agregar a los usuarios en la ou=users de nuestro directorio LDAP.
Create Object
Server: My LDAP Server using template: sambaSamAccount
New Samba3 Account
Container DN: sambaDomainName=JCCEC,dc=jccec
First name: Admin
Last name: Admin
Common Name: admin
User ID: admin
UID Number: 0
Samba SID: S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 0
password: (la repites y el te la pone en las 2 ultimas)
Login shell: (vacio)
GID Number: sambaadmins
lo otro es automatico
Por último vamos a agregar otro usuario de prueba (spiderman) que sea miembro de sambausers (limitado localmente). Observe que ahora sí es posible escoger la opción /bin/false en el atributo loginShell.
Una vez que hemos creado los usuarios, no olvidar crear las correspondientes carpetas home de cada uno en la ruta /home/users/ además de asignarle los permisos correspondientes del usuario y grupo al que pertenece. Si desea, puede copiar en cada una de esas carpetas los archivos ocultos ubicados en /etc/skel para que todos los usuarios tengan las mismas configuraciones iniciales para cosas como PATH, procesos de teclado y variables de entorno (esto lo hago simplemente por orden a pesar de que yo escogí que ningún usuario “corriente” va a poder loggearse físicamente al servidor). Por ejemplo, para crear la carpeta para el usuario admin y asignarle los permisos de su usuario y el grupo al que pertenece ejecutamos:
# mkdir /home/users/admin
# cp /etc/skel/.* /home/users/admin/
# chown -R admin /home/users/admin
# chgrp -R sambaadmins /home/users/admin
En este momento, podemos usar el comando getent para verificar que el nss esté trabajando correctamente en
Linux:
# getent passwd
y el resultado puede contener lo siguiente:
...
admin:*:0:20000:admin:/home/users/admin:
spiderman:*:10001:20001:spiderman:/home/users/spiderman:/bin/false
...
Como se puede ver, admin pertenece al grupo sambaadmins (“Domain Admins”) cuyo GID es el
20000, mientras que el usuario spiderman pertenece al grupo sambausers (“Domain Users”) cuyo GID es el
20001.
SECCIÓN 10. Uniendo máquinas a nuestro dominio Samba
Para que una máquina pueda unirse a un dominio se le solicitará el usuario y contraseña del usuario con uid=0
(en nuestro caso: admin), además es necesario crear la “cuenta de máquina” correspondiente en el directorio LDAP; si no se crea la cuenta de máquina, entonces el dominio rechaza la conexión. Ahora bien, para crear las cuentas de máquina existen dos formas de hacerlo: la forma manual y la automática.
NOTA: nuestro archivo de configuración Samba está hecho para que las cuentas de máquina sean agregadas de manera automática.
aqui les va
Configuración de SAMBA
Antes de tocar el archivo de configuración, primero creamos las carpetas /var/lib/samba/netlogon
mkdir /var/lib/samba/netlogon
(para alojar el(los) script(s) de inicio) y /var/lib/samba/profiles
mkdir /var/lib/samba/profiles
(para alojar los perfiles móviles de los usuarios).Asignamos todos los permisos (777) a dicha carpeta profiles, para que cualquiera ya sea de sambaadmins o sambausers pueda grabar su perfil móvil en el servidor.
El contenido final y completo del archivo /etc/samba/smb.conf con todo el soporte citado con anterioridad se muestra a continuación sin algunas líneas comentadas para no hacerlo tan largo:
#-------------inicio del fichero-------------#
[global]
### Configuracion basica del servidor ###
workgroup = jccec
netbios name = servidor
server string = Samba PDC Version %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
### Configuracion para que la maquina sea el PDC master ###
os level = 65
preferred master = yes
local master = yes
domain master = yes
domain logons = yes
### Configuracion de seguridad y conexion ###
security = user
guest ok = no
encrypt passwords = yes
null passwords = no
hosts allow = 127.0.0.1 192.168.0.0/255.255.255.0
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
unix charset = ISO8859-1
### Parametros para el soporte de LDAP ###
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=home
ldap machine suffix = ou=machines
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=home
ldap delete dn = no
enable privileges = yes
; Para permitir a los usuarios cambiar su clave desde Windows
ldap password sync = yes
### Perfiles moviles de usuario, carpeta home y script de inicio ###
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = %U.bat OR netlogon.bat
### 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"
### 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
### Recursos SAMBA ###
# Ruta en donde se alojaran el(los) script(s) de inicio
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = no
writable = no
browseable = no
share modes = no
# Carpeta en donde se guardan los perfiles moviles de los usuarios
[profiles]
comment = Perfiles de Usuarios
path = /var/lib/samba/profiles
writeable = yes
browseable = no
guest ok = no
create mask = 0600
directory mask = 0700
csc policy = disable
# Impresoras
[printers]
comment = Impresoras
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700
# Los clientes Windows buscan este recurso como fuente de drivers
[print$]
comment = Drivers de Impresoras
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
# carpetas home de los usuarios
[homes]
path = /home/users/%U
comment = Carpetas HOME
browseable = no
writeable = yes
valid users = %S
read only = no
guest ok = no
inherit permissions = yes
# Este es un recurso que solo debe ser accesible
# para un grupo POSIX especial llamado sysfox
[sysfox]
comment = Directorio de Sistemas en Fox
path = /home/posix/sysfox
writeable = yes
delete readonly = yes
valid users = @sysfox
write list = @sysfox
force group = sysfox
browseable = yes
create mask = 0770
directory mask = 0770
# Este recurso es por si quiero compartir la unidad de CD
;[cdrom]
; comment = Samba server CD
; writable = no
; locking = no
; path = /media/cdrom0
; public = yes
; Lo siguiente es para auto-montar el CD cada vez que es accesado y desmontarlo
; cuando se termina la conexión al servidor.
; Para que esto trabaje, el archivo /etc/fstab debe contener una
; entrada así: /dev/hdc0 /media/cdrom iso9660 defaults,noauto,ro,user 00
;
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
#-------------final del fichero----------#
Una vez que ya tenemos listo a /etc/samba/smb.conf podemos ejecutar el comando testparm para asegurarnos
que la configuración Samba no tenga ningún error:
# 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
Ahora bien para crear las cuentas de maquinas existen 2 formas, la manual y la automatica
Usando el phpldapadmin creamos una entrada tipo “Samba 3 Machine” bajo ou=machines y perteneciente al grupo sambamachines. A continuación muestro una imagen con el proceso:
NOTA: por gusto personal los UIDs de las máquinas los comencé a partir de 30000.
Create Object
Server: My LDAP Server using template: sambaMachine
New Samba3 Machine
Container DN: ou=machines,dc=jccec
Machine Name: instructores$
UID Number: 30000
Samba SID : S-1-5-21-451058037-3092806587-1514217385 (JCCEC) 30000
GID Number: sambamachines
Recuerde que tendrá que hacer esto para cada máquina que se quiera unir al dominio.
No hay comentarios:
Publicar un comentario