educación, informática y demás

2411 - Sistemas heterogeneos

GNU/Linux Debian ADDC

En este caso práctico vamos a configurar un sistema con GNU/Linux Debian 12 con entorno de escritorio XFCE como Controlador de Dominio de un dominio de Active Directory. De esta forma, con este sistema proporcionaremos servicios de directorio para la red privada de una organización. Además, crearemos algunos objetos del dominio como unidades organizativas, usuarios y grupos del dominio.

Configuración básica del sistema

Configuramos la interfaz de red
Reiniciamos la interfaz de red
Comprobamos que la configuración se ha aplicado
Cambiamos el nombre del equipo con hostnamectl y editamos el fichero /etc/hosts
Buscamos la entrada dónde se asigna la dirección de host local al nombre del equipo anterior
Sustituimos el nombre anterior con el nuevo nombre
Cerramos la sesión y volvemos a iniciar para que se apliquen los cambios
Se ha cambiado el nombre, algo que se refleja en el prompt, y la dirección IP es la que queríamos establecer

Instalando paquetes de software

Actualizamos la lista de paquetes de software de los repositorios configurados
Instalamos los paquetes de software necesarios
Configuramos el dominio en el que queremos trabajar en mayúscula
Servidor Kerberos en el dominio: server.educatica.ex
Servidor administrativo: server.educatica.ex. OJO! He metido la pata

He metido la pata a la hora de escribir el dominio. Una vez instalado el software, tengo que editar el fichero de configuración de kerberos que está en /etc/krb5.conf y sustituir .es por .ex.

Cambiamos el .es por .ex en admin_server dentro del reino EDUCATICA.EX
Guardamos los cambios y salimos

Provisión de dominio AD

Dejamos una copia del fichero de configuración por defecto de samba
Creamos la provisión de un nuevo dominio
Copiamos el fichero de configuración de kerberos generado para que sea utilizado
Fichero de configuración generado

Resolución de nombres

Habilitando servicio samba-ad-dc

Samba-tool

samba-tool es la herramienta principal de administración de samba. Podemos consultar la página de manual de samba-tool con la ayuda de man.

Si ejecutamos samba-tool sin parámetros nos mostrará ayuda sobre la sintaxis básica del comando así como los subcomandos disponibles para trabajar con ella.

Para más ayuda sobre un subcomando podemos pasar la opción -h después de escribir el subcomando concreto.

Vamos a ver qué operaciones principales podemos realizar con samba-tool.

Comprobaciones de ADDC

Vamos a empezar mostrando el nivel funcional del dominio con el subcomando domain.

Vamos a mostrar el nivel funcional con la opción level y show

Ayuda sobre el subcomando domain level

Mostramos el nivel funcional

Nivel funcional del dominio

Creando unidades organizativas

Al igual que podemos hacer en Windows Server cuando trabajamos con Active Directory, podemos crear unidades organizativas para mantener un poco más organizados los objetos de nuestro dominio.

Para ello, utilizaremos el comando ou. Veamos la ayuda del subcomando.

Ahora vamos a añadir tres Unidades Organizativas, una principal y dos UO dentro de esta.

Creando grupos del dominio

Creando ventas

Listamos todos los grupos

Podemos mostrar información concreta de un grupo

Con la opción listmembers podemos mostrar los miembros de un grupo. Ahora mismo no tienen miembros, pero más adelante añadiremos usuarios a estos grupos

Usuarios del dominio

Añadiendo usuarios…

Podemos consultar la ayuda del subcomando
Añadimos el usuario marinapg con información de su cuenta de usuario y forzamos a que tenga que cambiar su contraseña

Comprobamos que se han creado los usuarios listando los usuarios del dominio disponibles.

Mostramos la lista de usuarios del dominio
Con el subcomando show se muestra información de un usuario concreto

Añadiendo usuarios a grupos

Veamos los grupos que tenemos disponibles con el subcomando list.

Ahora vamos a mostrar información sobre los miembros del grupo Domain users

Para añadir usuarios a un grupo podemos utilizar la opción addmembers

Veamos la sintaxis del subcomando addmembers

Vamos a añadir a marinapg y alfredoff al grupo contabilidad, y a marinapg y ramonam al grupo ventas

Veamos los miembros

Uniendo Windows 10 al dominio

Configuración de red para utilizar el servicio DNS del controlador de dominio.

Configuración de red
Comprobando conexión con el DNS y el servidor server.educatica.ex
Añadimos el equipo al dominio
Solicita credenciales adecuadas
Proceso de unión completado, hay que reiniciar
Listando los equipos en el dominio desde el sistema server
Seleccionamos iniciar sesión con otro usuario
Iniciamos sesión con marinapg en el dominio EDUCATICA
Tenemos que cambiar la contraseña, como configuramos
Establecemos la nueva contraseña e iniciamos sesión
Estamos iniciando sesión con una cuenta creada en el dominio
En el primer inicio de sesión se crea el perfil del usuario. En este caso será un perfil local
Usuario marinapg en su directorio personal

Solicita credenciales con permisos de administración en el dominio Educatica
Accedemos a Perfiles de usuario
Información del perfil del usuario marinapg del dominio educatica

Compartiendo recursos con Samba

Vamos a compartir recursos compartidos con Samba en el propio sistema server que hace las veces de controlador de dominio de Active Directory con Samba.

Recurso: publico

Comenzaremos con un recurso compartido sencillo de solo lectura para usuarios anónimos. Esta es una de las configuraciones más sencillas, todo el mundo puede acceder sin credenciales pero solo podrá realizar operaciones de lectura.

Primero creamos y configuramos el directorio a compartir. En nuestro caso la ruta del directorio será /educatica/network/publico. Queremos que cualquier usuario pueda acceder para realizar operaciones de solo lectura.

Directorio creado y configuración de permisos adecuada: cualquier usuario puede acceder para realizar operaciones de lectura
Creamos la sección en el fichero de configuración de samba

Comprobamos la disponibilidad del recurso compartido con smbclient y la opción -L

¡Nos encontramos con un problema!

Buscamos la causa del problema, la configuración de la interfaz de red en el sistema con al aplicación gráfica de configuración

Ahí está la configuración en la aplicación de configuración
Actualizamos la información con al dirección del servidor DNS de nuestro dominio

Reiniciamos la interfaz de red, podemos desconectarla y conectarla o simplemente hacer doble clic sobre la propia conexión Wired connection 1 y se volverá a conectar.

Reiniciamos la interfaz de red
Ya tenemos configurado como servidor DNS el servidor DNS del dominio

Volvemos a realizar la prueba

Aparece el recurso compartido publico

Vamos a crear un pequeño fichero leeme.txt en el directorio /educatica/network/publico para que pueda ser leído en remoto.

Fichero leeme.txt disponible en el recurso publico

Por último, vamos a acceder a este fichero desde el sistema windows host01.educatica.ex con la cuenta de usuario marinapg@educatica.ex

Accedemos con un usuario de dominio a un equipo del dominio
Accedemos al equipo server.educatica.ex

Al no utilizar la ruta de ningún recurso compartido, el acceso a la máquina, nos mostrará el listado de todos los recursos compartidos disponibles en la misma.

Ahora accedemos a público haciendo doble clic en el icono que representa el recurso compartido publico. Podríamos utilizar su ruta completa \\server.educatica.ex\publico en la barra de direcciones

Accedemos al fichero leeme.txt que está en el recurso publico en el sistema server.educatica.ex

No tenemos permiso de escritura, así que no podremos guardar modificaciones del fichero, ni borrarlo, ni crear nuevos elementos dentro del recurso compartido,

No tenemos permiso de escritura, ni en el sistema de ficheros ni en samba
Tampoco podemos crear directorios: No tenemos permisos de escritura ni a través de samba ni a través del sistema de ficheros

Recurso personal: acceso de usuarios en samba

Características:

  • Nombre: personal
  • Directorio /educatica/network/staff
  • Acceso de usuarios del sistema con cuenta en samba
  • Usuarios anónimos prohibidos
  • Operaciones de lectura y escritura

Primero debemos crear el directorio, si no existe, y configurarlo para permitir las operaciones que nos piden: acceso de lectura y escritura por parte de usuarios del sistema que tengan cuenta en Samba.

Aquí tenemos dos alternativas, utilizar el grupo Usuarios del dominio, si existe en samba y darle todos los permisos sobre el directorio o bien utilizar otros y darles todos los permisos.

Comprobamos que existe un grupo llamado Domain Users

Vamos a listar sus miembros

Como era de esperar los usuarios del dominio pertenecen a este grupo

Vamos a utilizar la alternativa más sencilla por ahora y en otra entrada investigaremos estas opciones con calma.

Creamos el directorio y configuramos los permisos para que cualquier usuario pueda acceder para realizar operaciones de lectura y escritura
Los dos recursos compartidos personalizados actualmente disponibles

Veamos qué usuarios tenemos disponibles en la base de datos de usuarios de samba

Usuarios de Samba

Como era de esperar, al utilizar samba como controlador de dominio, todas las cuentas de usuario creadas para el dominio están en Samba.

Veamos si podemos acceder al recurso compartido desde Windows 10 con la cuenta de marinapg

Accedemos al servidor server
Creamos un directorio con la cuenta de marinapg

El problema aquí es que no reconocemos el usuario por su nombre sino por un UID que no aparece en nuestro fichero /etc/passwd.

Según la documentación en el sitio web oficial de Samba deberíamos instalar y configurar Winbind de forma especial para que desde el sistema operativo se reconozcan y se puedan utilizar usuarios y grupos del dominio en comandos como chown o chmod: Configuring Winbindd on a Samba AD DC

Configurando winbind

Con la configuración que tenemos hasta ahora podemos trabajar con Samba para gestionar los permisos de acceso y dejar los permisos más abiertos en el sistema de ficheros local del servidor. No obstante, es una aproximación que no me termina de convencer, puesto que cualquier acceso local o por medio de un servicio, como FTP o ssh, permitiría a cualquier usuario que conociera la ruta de los directorios compartidos acceder a los directorios compartidos saltándose la configuración de acceso realizada en Samba.

Vamos a probar a configurar winbind en el sistema server que hace de AD DC.

Lo primero que nos encontramos en la documentación es esto:

«Samba 4.0 and 4.1 used a version of Winbind built into the samba command. However, this implementation never worked correctly. For this reason, Samba 4.2 enabled the winbindd utility to be used on domain controllers (DC). If you run a version of Samba prior to 4.2, update to a supported version before using Winbindd. For details, see Updating Samba.»

Veamos la versión de Samba que tenemos:

Es decir, deberíamos actualizar la versión de Samba siguiendo las instrucciones del siguiente documento: https://wiki.samba.org/index.php/Updating_Samba

https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member#Testing_the_Winbindd_Connectivity

¿Entonces.. qué hacemos?

Pues viendo la versión de Debian 12, que es una distribución actual de 2025, pensé en tratar de utilizar winbind directamente sobre el DC. En el sitio web de Samba se recomienda utilizar un servidor de ficheros aparte del DC para evitar actualizaciones cruzadas innecesarias. Es decir, el sistema que comparta ficheros no será necesario actualizar tan frecuentemente como el sistema con DC. Además así separamos servicios.

En nuestro caso, lo que he hecho es seguir los pasos del manual Configuring Winbindd on a Samba AD DC pero sin actualizar samba. Es decir, he utilizado la versión que viene en los repositorios de Debian 12.

He seguido los pasos a partir de aquí:

https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC#Locating_the_libnss_winbind.so.2_Library

También he seguido el siguiente documento para comprobar la conectividad con Winbindd

https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member#Testing_the_Winbindd_Connectivity

Comprobando la conectividad con winbind
Comprobamos si hay algún proceso winbindd en ejecución: demonio de winbind

Comprobamos si samba utiliza LIBDIR

Tenemos instalado winbind, lo hemos instalado cuando instalamos los paquetes necesarios para utilizar el sistema GNU/Linux Debian con Samba como controlador de dominio de Active Directory. Vamos a mostrar información del paquete con el comando show de winbind.

En las sugerencias aparecen dos librerías que no tenemos instaladas. Estas son las librerías que nos interesan

Instalación de las librerías necesarias

Una vez instaladas las librerías comprobamos si se encuentran en el directorio de librerías /usr/lib/x86-64-linux-gnu

Creamos enlace simbólico de las librerías al directorio /lib y lanzamos ldconfig como administrador

Configuramos el orden de búsqueda de usuarios y grupos en las distintas bases de datos, situando winbind como segunda opción tras files.

Configuramos winbind como opción de búsqueda prioritaria, después de files

Vamos a comprobar si se resuelve desde el sistema la información de grupos y usuarios.

Distintas peticiones de resolución de nombre de usuario y grupo con el comando getent

Configuramos usuarios y grupos del dominio como propietarios de ficheros y directorios

Dejar una respuesta