CONFIGURACIÓN BÁSICA DE SAMBA Imprimir
SOFTWARE - Servidores
Escrito por Raúl Juncos   
Lunes, 04 de Julio de 2005 02:03

Samba es una suite de aplicaciones Unix que habilita el protocolo SMB (Server Message Block). Muchos sistemas operativos, incluídos Windows y OS/2, usan SMB para operaciones de red cliente-servidor. Mediante el soporte de este protocolo, Samba permite a los servidores Unix entrar en acción, comunicando con el mismo protocolo de red que los productos de Microsoft Windows. De este modo, una máquina Unix con Samba puede enmascararse como servidor en tu red Microsoft y ofrecer un conjunto de servicios.

Previos

El presente artículo asume que disponemos de una red de área local, con clientes con sistema operativo Microsoft Windows, y un servidor basado en GNU/Linux Debian. Ello implica un conocimiento mínimo de ambos entornos. Podemos encontrar cursos en línea gratuitos en ambas plataformas, tanto para MS Windows (por ejemplo, http://www.aulaclic.es/winxp/f_windowsxp.htm) como para GNU/Linux Debian (por ejemplo, http://laespiral.org/articulos/cursodebian/).

Requerimientos de estudio previo

En el equipo servidor

La aplicación básica del paquete Samab (smbd), que permite acceder a los usuarios de PC al servidor tanto de impresoras como de discos, requiere mucha RAM, disco duro (evidentemente, como dispositivo parcialmente compartido) y una conexión de red muy optimizada; no obstante, el consumo de CPU es bajo.

El equipo servidor irá en función, por tanto, del número de usuarios que deberán trabajar contra él; podemos estimar que el demonio principal puede ocupar unos 2Mb de RAM, y unos 760Kb por cada cliente que realice una conexión. La disponibilidad de RAM para el correcto de este servicio se perfila, como se ha expuesto, como crítica si tenemos muchos clientes accediendo de forma concurrente al servidor.

En cuanto al estudio de cuellos de botella, deberemos estudiar las características de nuestra red de área local (LAN). Una Ethernet a 10Mb/seg puede manejar 1.100Kb/seg, mientras que una a 100Mb/seg llega a 65Mb/seg. Esto, junto con la capacidad de respuesta del disco duro nos dará una idea aproximada de la respuesta real.

Sería deseable contar en el servidor con un disco duro SCSI o SerialATA.

Requerimientos de red

Si nuestra red la utilizamos para acceder de forma eventual, para guardar ficheros o imprimir algún documento, posiblemente una red Ethernet con concentradores básicos (HUBs) a 10Mb/seg sea suficiente.

Si lo que queremos, por otro lado, es acceder a ficheros compartidos directamente desde nuestro servidor de disco, por ejemplo, reproduciendo vídeos, o montando nuestro directorio personal ('Mis Documentos' en MS Windows, o '/home/usuario' en el caso Linux), necesitaremos ya una estructura más potente. Como mínimo optaremos por concentradores tipo hub/switch a 100 Mb/seg. Hoy en día encontraremos en el mercado este tipo de componente sin ningún problema.

1. ¿Qué es Samba?

Samba es una suite de aplicaciones Unix que habilita el protocolo SMB (Server Message Block). Muchos sistemas operativos, incluídos Windows y OS/2, usan SMB para operaciones de red cliente-servidor. Mediante el soporte de este protocolo, Samba permite a los servidores Unix entrar en acción, comunicando con el mismo protocolo de red que los productos de Microsoft Windows. De este modo, una máquina Unix con Samba puede enmascararse como servidor en tu red Microsoft y ofrecer los siguientes servicios:

  • Compartir uno o más sistemas de archivos.
  • Compartir impresoras, instaladas tanto en el servidor como en los clientes.
  • Ayudar a los clientes, con visualizador de Clientes de Red.
  • Autentificar clientes logeándose contra un dominio Windows.
  • Proporcionar o asistir con un servidor de resolución de nombres WINS.

Samba es la idea de Andrew Tridgell. El proyecto nació en 1991 cuando Andrew creó un programa servidor de ficheros para su red local, que soportaba un raro protocolo DEC de Digital Pathworks. Hoy, la suite Samba implica a un par de demonios que proporcionan recursos compartidos a clientes SMB sobre la red (las comparticiones son denominadas a veces también como servicios). Estos demonios son:

smbd : Un demonio que permite compartición de archivos e impresoras sobre una red SMB y proporciona autentificación y autorización de acceso para clientes SMB.

nmbd : Un demonio que busca a través del Windows Internet Name Service (WINS), y ayuda mediante un visualizador.

Samba se encuentra actualmente mantenido y es ampliado por un grupo de voluntarios bajo la supervisión activa de Andrew Tridgell. Al igual que el sistema operativo Linux, Samba es considerado por sus autores Open Source software (OSS), y es distribuido bajo la the GNU General Public License (GPL). Como información adicional, podemos afirmar que es algo verdaderamente testimonial el que entidades tanto comerciales como no comerciales estén dispuestas a gastar dinero para dar soporte a un proyecto Open Source.

Microsoft también ha contribuido materialmente poniendo a disposición su definición de SMB y del Internet-savvy Common Internet File System (CIFS), como Public Request for Comments (RFC), y otros documentos estandar. El protocolo CIFS es el nuevo nombre de las futuras versiones del protocolo SMB que serán usadas en los productos Windows. De hecho, podemos encontrar el protocolo escrito como "SMB/CIFS".

2. ¿Qué hace SAMBA?Visión desde cliente

Como explicamos antes, Samba puede ayudar a las máquinas Windows y Unix a coexistir en la misma red. Sin embargo, existen algunas razones específicas por las cuales podrías desear instalar un servidor Samba en nuestra red:

  • No querer pagar licencias para un servidor Windows NT o 2000/2003 Server (en adelante servidor NT)para obtener las funcionalidades que este proporciona.
  • Querer proporcionar un área común para datos o directorios de usuarios en orden a realizar una transición desde un servidor NT hacia un Unix, o viceversa.
  • Querer compartir impresoras a entre clientes Windows y Unix.
  • Facilitar acceso a ficheros NT desde un servidor Unix.

Caso típico de utilización de SAMBA (en un centro educativo, por ejemplo). Asumiremos que tenemos la siguiente configuración básica de red: un servidor Samba sobre una máquina Unix (en nuestro caso GNU/Linux Debian), al cual le asignaremos el nombre “bach”, y varios clientes Windows, a los cuales les asignaremos los nombres “pc01”, “pc02”, “lliure”,o los nombres que selccione el administrador de la red, todos conectados vía red de área local (LAN). Asumamos también que “bach” también tiene una impresora de inyección conectada a él, lp, y una compartición de disco denominada downloads -ambos recursos podemos ofrecerlos a las otras máquinas cliente-. Un gráfico de esta red se muestra en la figura:

Una configuración de red simple con un servidor Samba.

En esta red, cada una de las computadoras comparten el mismo grupo de trabajo. Un Grupo de Trabajo es simplemente una etiqueta de nombre de grupo que identifica a una determinada colección de ordenadores y sus recursos sobre una red SBM. Pueden existir varios grupos de trabajo sobre la red al mismo tiempo, pero para nuestro ejemplo sólo tendremos uno: el grupo de trabajo CENTRO.

La siguiente tabla relaciona los roles básicos que Samba puede asumir en un dominio Windows NT o en un dominio Windows para Trabajo en Grupos. Con las versiones 2.0. x, Samba ofrece soporte limitado para los protocolos de autentificación del controlador primario de dominio y está adquiriendo nuevas funcionalidades cada día (la versión actual, a fecha de realización del presente artículo, es la 3.0.9).

Rol

¿Puede hacerlo?

Servidor de Archivos

Servidor de Impresión

Controlador Primario de Dominio

Autentificación de clientes Windows 95/98

Visualizador Maestro Local

Visualizador Maestro de Dominio

Servidor WINS Primario

 

2.1 Obteniendo un Servicio de Disco e impresoras.

Si todo está bien configurado, podremos poder ver al servidor Samba, bach, a través del visualizador de red (entorno de red) de la máquina Windows.

De hecho, el visualizador de red de pc01 (como cliente) mostrará todas las máquinas de su grupo, incluyendo a pc02 y a cada una de las máquinas que residen en el grupo de trabajo CENTRO (en la figura, una máquina denominada lliure). Como mencionamos antes, pueden existir más grupos de trabajo sobre una red SMB al mismo tiempo. Si un usuario hace click sobre ese icono, verá una lista de todos los grupos de trabajo que actualmente existen en la red.

Podemos entrar en el servidor bach con un doble click sobre su icono. Esta acción provoca que se contacte con bach y se le solicite una lista de sus recursos compartidos -impresora/s, disco,...- que proporciona la máquina.

Una característca popular de Windows 95/98/NT es que es posible mapear una letra de unidad hacia un direcrotio de la red usando la opción "Conectar a Unidad de Red" desde el explorador de Windows. Una vez hecho, las aplicaciones podrán acceder a la carpeta a través de la red con una unidad de disco estándar. Una vez llegados a este punto, podremos almacenar datos en ella, instalar y ejecutar programas, e incluso protegerla mediante contraseña contra accesos no deseados.

Una forma equivalente de representar un directorio en una máquina de la red es usando dos barras (backslashes), seguidas del nombre de la máquina de red, otra barra (backslash), y el directorio de red de la máquina, como se muestra a continuación:

\\máquina-de-red\directorio

Esto se conoce como notación UNC (Universal Naming Convention) en el mundo Windows. En nuestro ejemplo, podremos acceder mediante notación UNC desde Inicio->Ejecutar, tecleando:

\\BACH\downloads

Una vez la unidad de red está configurada, Windows y sus programas la verán y podrán usar como si ese directorio de red fuese un dico más. Si se tienen aplicaciones multiusuario, pueden instalarse sobre la unidad de red.

2.2 Encontrar la configuración de nombre de red en Windows

Tenemos dos opciones para conseguir esta información (y poder cambiarla si somos administradores de la máquina):

  • Accediendo a las propiedades de “MiPC” -> Nombre del ordenador

  • Desde una consola, tecleando “ipconfig /all”

3. Samba. Visión desde servidor.

Como mencionamos antes, Samba actualmente contiene varios programas que sirven para diferentes pero determinados propósitos. Vamos a introducir una breve explicación de cada uno de ellos. La mayoría de los programas que vienen con la distribución de Samba se centran en sus dos demonios. Echemos un vistazo a las responsabilidades de cada demonio:

smbd

El demonio smbd es responsable de manejar los recursos compartidos entre la máquina servidora Samba y sus clientes. Proporciona servicios de archivos, impresión y visualización a los clientes SMB a través de una o más redes. smdb controla todas las notificaciones entre el servidor Samba y los clientes de red. Además, es responsable de la autentificación de usuarios, bloqueo de recursos y la compartición de datos a través del protocolo SMB.

nmbd

El demonio nmbd es un sencillo servidor de nombres que imita la funcionalidad de los servidores WINS y de resolución de nombres NetBIOS. Este demonino está a la escucha de peticiones para el servidor de nombres y proporciona la información apropiada cuando se le llama. También proporciona listas de visualización del Entorno de Red y participa en las elecciones de los visualizadores.

La distribución de Samba también está acompañada por un pequeño grupo de herramientas tipo línea de comandos Unix:

smbclient

Un cliente tipo FTP Unix que puede ser usado para conectar a recursos compartidos por Samba.

smbtar

Un programa para realizar copias de seguridad de datos sitos en los recursos compartidos, similar al comando Unix "tar".

nmblookup

Un programa que proporciona búsquedas de nombres NetBIOS sobre TCP/IP.

smbpasswd

Un programa que permite a un administrador cambiar las passwords encriptadas usadas por Samba.

smbstatus

Un programa para reportar las conexiones de red actuales hacia los recursos compartidos por el servidor Samba.

testparm

Un simple programa para validar el fichero de configuración de Samba.

testprns

Un programa que testea si varias impresoras son reconocidas por el demonio smbd.

3.1.¿Cómo puedo Obtener Samba?

Samba está disponible en formato binario y fuente en una serie de mirrors en Internet. El sitio principal de Samba está localizado en http://www.samba.org.

Sin embargo, para evitar esperar a que los paquetes lleguen desde otro país, los mirrors para Samba lpueden encontrarse en muchas direcciones de Internet. Existe una lista de ellos en la página principal del sitio oficial de Samba.

Como usuario de la distribución de GNU/Linux Debian, va a ser sencillo. Según el método característico Debian de instalación, simplemente tecleando (como root):

#apt-get install samba

tendremos instalado el servicio. Aún así, debemos configurar el fichero correspondiente, así como dar de alta a los usuarios, para que sea funcional.

El presente artículo asume, como se ha indicado, un servidor SAMBA basado en GNU/Linux Debian.

Además, interesará tener instaladas algunas utilidades mencionadas anteriormente. Instalaremos también el paquete 'smbclient':

#apt-get install smbclient

3.2 Un Fichero de Configuración Básico.

La clave para configurar Samba está en un único fichero de configuración: smb.conf. Este fichero de configuración puede ser muy simple o extremadamente complejo. Por el momento, sin embargo, mostraremos cómo crear una configuración simple, la cual permitirá iniciar los demonios Samba y ver que todo está funcionando como debiera.

El proceso de instalación no crea automáticamente un fichero de configuración smb.conf, aunque se incluyen varios de ejemplo en la distribución de Samba y en su web. Para testear el software del servidor, nosotros usaremos el siguiente fichero. Este debería llamarse smb.conf y estar ubicado en el directorio /etc/samba/ :

[global]

workgroup = CENTRO

[downloads]

comment = Downloads #Disco compartido

path = /downloads

read o­nly = no

guest ok = Yes

Este breve fichero de configuración le dice al servidor Samba que ofrezca el directorio /downloads en el servidor como un recurso compartido SMB/CIFS llamado Downloads. El servidor también se convierte en parte del grupo de trabajo llamado CENTRO, donde cada uno de los clientes deben ser también miembros de él. Por ahora, completaremos la configuración ejecutando los siguientes comandos como root en el servidor:

# mkdir /downloads
# chmod 777 /downloads

Debemos señalar que, en términos de seguridad, esta es la peor configuración posible (estamos dando permisos de lectura, ejecución y escritura a todo el mundo). Por el momento, sin embargo, sólo deseamos testear Samba, así que dejaremos la seguridad para otro momento. También hay algunos problemas con la encriptación de contraseñas.

Usando Windows 98 o Windows NT Service Pack 3 o anteriores, se debe añadir la siguiente entrada a la sección [global] del fichero de configuración de Samba: encrypt passwords = yes. Además, es obligatorio usar el programa smbpassword para reintroducir las combinaciones usuario/contraseña de aquellos usuarios que deberían tener capacidad de acceder a los recursos compartidos. Por ejemplo, si se quiere permitir al usuario Linux “alumno” acceder a recursos compartidos desde un cliente SMB, deberíamos teclear:

#smbpasswd -a alumno

Se debe recordar que poseer una cuenta en el sistema no implica poder acceder a recursos SAMBA. Debemos dar de alta a los usuarios SAMBA (como root, como se ha indicado) para que estos tengan acceso desde los clientes.

Asegúrese de que las combinaciones usuario/contraseña que se añaden a la base de datos de contraseñas encriptadas coinciden con los usuarios y contraseñas de los clientes Windows.

Ya estamos en disposición de probar nuestra primera configuración. Para iniciar los demonios Samba, teclearemos como root:

#/etc/init.d/samba start

Después de observar los resultados, podemos añadir a nuestro fichero de o­ncfiguración una sección que permita compartir nuestra impresora:

[printers]

comment = Impresoras #Sección de impresoras

path = /var/spool/samba

write list = root

printer admin = root

create mask = 0700

guest ok = Yes

printable = Yes

browseable = No

Dado que hemos realizado modificaciones de nuestra configuración, debemos reiniciar Samba para que los cambios tengan efecto con:

#/etc/init.d/samba restart

Observamos, ahora, que tambien accedemos a la impresora compartida desde nuestro servidor Samba.

3.3 Usando SWAT.

Swat permite al administrador de un servicio SAMBA configurar el fichero smb.conf de una forma gráfica, vía navegador web. Además, la página de configuración de Swat oferta infinidad de enlaces a páginas locales de ayuda para cada uno de los parámetros configurables en el fichero, facilitando la visualización de los cambios de forma inmediata.

Puede usar el navegador web para conectar a http://localhost:901, y logarte con la cuenta del usuario root.

En sistemas Debian, la instalación de swat se realiza (como root) con la orden:

#apt-get install swat

Hecho esto, posiblemente, abramos el navegador web para teclear la dirección y el puerto swat sin obtener respuesta positiva. Ello es debido a que no hemos indicado al servicio inet.d la accesibilidada este puerto (para más información, teclear desde consola '$man swat').

Deberemos editar el fichero /etc/inetd.conf y añadir la línea (o descomentarla si la tenemos comentada):

swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

Y a continuación reiniciamos el servicio para que recoja la nueva configuración:

#/etc/init.d/inetd restart

Ahora sí debemos tener acceso (logados como root) a http://localhost:901

En este ejemplo, establece el campo grupo de trabajo a CENTRO y el campo security a USER. La otra opción que se necesita cambiar es la que determina qué sistema de los que hay en la red es el que resuelve las direcciones NetBIOS; este sistema es denominado servidor WINS. Al principio de la página, seleccionar la opción wins support y situarla a Yes, a menos que ya poseamos un servidor WINS en la red. Si es así, poner la dirección IP del servidor WINS en el campo wins server. Luego volver al principio de la página y pulsa sobre el borón Commit Changes para grabar los cambios en el fichero smb.conf.

Podemos ir también a la sección Shares para observar nuestro directorio /downloads. Si le añadimos un comentario, podemos dirigirnos a View para obervar cúal es el estado de nuestro fichero de configuración (smb.conf). De forma análoga, podemos añadir nuevos discos compartidos. En la sección Printers observaremos nuestra/s impresoras.

Comentar como significativas para nuestros propósitos las opciones Status, que nos permite arrancar/para/reiniciar servicios, View que nos muestra el “estado actual” de nuestro fichero de configuración smb.conf, y Password para la gestión de clientes. Y la fundamental, Home, que nos ofrece enlaces de ayuda para cualquier duda que nos surja.

3.4 Testeando los Demonios Samba.

Ya hemos apuntado las posibilidades de configuración del servidor Samba. Y todo lo que queda por hacer es asegurarse de que todo está funcionando como debería. Una forma adecuada de hacer esta comprobación es usar el programa smbclient para examinar qué está ofreciendo el servidor a la red. Si todo se ha configurado correctamente, debería poder hacer lo siguiente:

También debemos hacer un seguimiento de nuestro sistema de log's, en
/var/log/samba/log

La orden: $smbclient -L nombre_del_servidor nos permite obtener información del estilo:

3.5 Otros entornos gráficos para administración de Samba

Existe otro medio gráfico, muy extendido, para administrar de forma “amable” y sin enfrentarnos a una consola de texto nuestro servicio Samba. Se trata de Webmin (http://www.webmin.com/ ). Se trata de toda una suite de administración de nuestra máquina, que funciona en el puerto 10000. Esta aplicación posee, también, un módulo de administración del servicio samba.

Para instalarlo en nuestro servidor, debemos instalar el paquete webmin-samba, que instalará las pertinentes dependencias. Es decir, teclearemos como root:

#apt-get install webmin-samba

Si todo ha ido bien, accediendo a la dirección web http://localhost:10000 desde nuestro navegador, se nos preguntará por nuestro usuario y contraseña, accediendo a continuación a configurar las opciones que nos ofrece (desde el idioma de webmin, hasta el propio samba).

Para conocer qué módulos posee webmin, podemos visitar su sitio web, o realizar una búsqueda desde nuestro sistema debian, con la orden:

$ apt-cache search webmin

webmin - Web-based administration toolkit
webmin-adsl - PPPOE (ADSL client) control module for webmin
webmin-apache - apache control module for webmin
webmin-bind - bind 8+ control module for webmin
webmin-burner - CD burning module for webmin
webmin-cfengine - cfengine module for webmin
...
webmin-quota - disk quota control module for webmin
webmin-samba - samba control module for webmin
...
webmin-telnet - telnet module for webmin

Dado que esta es una herramienta no exclusiva para administración Samba, se invita al futuro administrador a instalarla y disfrutar de todas sus posibilidades. Como apunte, básicamente, el módulo de adminstración Samba realiza (con otro entorno gráfico) las mismas funciones que Swat. No olvidemos que, a fin de cuentas, todos son entornos que trabajan contra nuestro fichero de configuración smb.conf

Captura de la versión demo en www.webmin.com


Al final de este artículo, tendremos un fichero funcional, desde donde ofertaremos a nuestros usuarios impresora/s y discos de nuestro servidor SAMBA:

# Global parameters

[global]

workgroup = CENTRO

server string = Servidor %h

unix password sync = Yes
encrypt passwords = yes

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

invalid users = root #Por seguridad, inhabilitamos root

[homes]

comment = Directorios de usuarios

read o­nly = No

create mask = 0700

directory mask = 0700

browseable = No

[printers]

comment = Impresoras #Sección de impresoras

path = /var/spool/samba

write list = root

printer admin = root

create mask = 0700

guest ok = Yes

printable = Yes

browseable = No

[downloads]

comment = Downloads #Disco compartido

path = /downloads

guest ok = Yes

locking = No
hosts allow = 192.168.0.0/255.255.255.0 #Acceso sólo desde nuestra red

Si hemos configurado con Swat, nuestro fichero aparecerá más completo, con referencias a la base de datos de contraseñas, fichero log,...

En este artículo se muestra una pequeñísima parte del potencial de Samba. Podemos crearnos todo un sistema para compartir unidades de red, control de acceso por usuario, compartición de unidades externas, ACL's, servidores virtuales,...

Fuentes de Información:

Using Samba, 2nd Edition
Jay Ts, Robert Eckstein, David Collier-Brown
2ª Edición, Febrero 2003 O'Reilly & Associates, ISBN: 0-596-00256-4

TLDP-ES/LuCAS: servicios editoriales para la documentación libre en español

http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/

HOWTO Samba:

http://de2.samba.org/samba/docs/man/Samba-HOWTO-Collection/

By Example:

http://de2.samba.org/samba/docs/man/Samba-Guide/

HOWTO Install Samba:

http://de2.samba.org/samba/docs/man/Samba-HOWTO-Collection/install.html

Serveis de xarxa amb GNU/Linux

http://jasper.xtec.es:7451/cdweb/dades/2003/2003matform_in/materials/td70/index.htm

Ayuda (MAN) de las aplicaciones instaladas, especialmente:

$man samba

$man smb.conf

$man smbclient

$man smbd

$man smbstatus

Para conocer todas, consultar la página web de documentación oficial de samba, sección Man Pages

(http://www.samba.org/samba/docs/).