Reemplazar un servidor Windows NT/2000 utilizando Linux y SAMBA

ArticleCategory: [Choose a category, do not translate this]

SystemAdministration

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: orhttp://homepage]

original in es Sebastian Sasías

es to en Sebastian Sasías

AboutTheAuthor:[A small biography about the author]

Utiliza Linux desde hace varios años como herramienta de soporte para soluciones tecnológicas.
Trabaja en control de dispositivos con Linux, procesamiento de señales, comunicaciones y
seguridad en redes. Profesional en Electrónica - Automatización y en Informática.
Ha contribuido en el desarrollo de software libre GNU/GPL.

Abstract:[Here you write a little summary]

Este artículo, complementa algunos aspectos vistos en _LF_ sobre el producto SAMBA y su utilidad para compartir recursos en redes heterogéneas Unix-Windows. En particular, está enfocado en la utilización del sistema operativo Linux en conjunto con el producto SAMBA para lograr poner en funcionamiento servicios típicamente brindados por sistemas operativos Windows.
Este hecho además de mostrar la potencialidad y flexibilidad de Linux tiene una importante consecuencia económica si se tiene en cuenta que:
- Implica un ahorro importante en pagos de licencias de servidores Windows.
- Puede lograrse una performance igual o mejor utilizando menos recursos de hardware de los que requeriría un servidor Windows (en términos de procesador y memoria RAM).

Un servidor Linux con SAMBA debidamente configurado puede sustituir a un servidor NT/2000, no solo en las tareas de compartir archivos y brindar un servicio activo de directorios (ADS, Active Directory Service), sino que además puede comportarse como PDC (Primary Domain Controller), efectuando la autentificación de usuarios con clientes Windows 2000/NT/98/95, compartiendo recursos (directorios e impresoras) y personalizando las sesiones de usuarios.
Este artículo se concentra particularmente en estos aspectos.

Como resultado, para muchos ambientes en donde esta es la utilidad de un servidor Windows, el servidor Linux con SAMBA sustituye completamente las funciones de dicho servidor basado en tecnología de Microsoft, sin necesidad de alteración alguna en las máquinas clientes.
Para el desarrollo de los pasos que se presentarán, se asume que SAMBA ya está instalado y funcionando correctamente en la máquina que se usará como servidor y que el lector está familiarizado con conceptos básicos de servidores Linux y Windows.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]



Caso de estudio

Considérese un servidor Linux/Samba, haciendo el papel de PDC, donde además cada usuario autentificado tiene acceso a dos directorios compartidos en el servidor, uno para un área pública y otro para un área privada. En el desarrollo del artículo se considerará un caso bastante frecuente de acceso a un área privada, el acceso a un directorio propio de cada usuario.

Detalles a considerar:

Nombre NetBIOS del Servidor Linux/Samba: SMBServer
Nombre de dominio Windows (workgroup): ELDOMINIO
Particion privada por usuario: H: (Windows) => /home/ (servidor Linux)
Particion pública: P: (Windows) => /home/public



En la figura que aparece a continuación se esquematiza una red con máquinas clientes corriendo sistemas Windows, que hacen uso de recursos y servicios del servidor Windows NT/2000 que puede ser reemplazado por el servidor Linux con SAMBA.

Esquema de red
Fig. 1 – PDC y servidor de archivos Windows



Configuración

Seguir los pasos que se indican a continuación:

1) Crear los usuarios que deben ser autentificados en el servidor PDC (Linux con Samba), que hará el trabajo de un servidor Windows NT/2000. Utilizar el comando adduser, useradd o userconf, también se puede utilizar alguna herramienta de entorno gráfico para la administración de usuarios (Webmin, Linuxconf, Yast, etc.).

Asegurarse de que los usuarios solamente accedan al servidor Linux/Samba (si es lo que desea), o sea que no tengan acceso al shell de Linux, para ello deberán tener como home el directorio /dev/null y como shell /bin/false

2) Migrar los usuarios UNIX para Linux/Samba/Windows, creando el archivosmbpasswd.

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

Otra forma es ejecutar los comandos de Samba para crear usuarios Samba y definir las contraseñas con:

smbadduser
smbpasswd

Las cuales funcionan de forma similar a los comandos tradicionales adduser y passwd.

3) Editar el archivo de configuración de Samba smb.conf, asegurándose de incluir/descomentar las opciones que se muestran a continuación:

netbios name = SMBServer
workgroup = ELDOMINIO
server string = Linux Samba NT Server
log file = /var/log/samba/%m.log
max log file = 0
security = user
encrypt password = yes
smb password file = /etc/samba/smbpasswd
ssl CA certificate = /usr/share/ssl/.... (descomentar)
socket options = (descomentar)
local master = yes
preferred master = yes
domain master = yes
domain logons = yes
logon script = logon.bat
wins support = yes

Nota:
Para login específico por usuario, cambiar el "logon script" por "%U.bat", o sea que cada
usuario tiene un "script de logon" con su nombre de usuario, también podría usarse %u. Si se desea de alguna forma considerar el grupo al que pertenece el usuario, puede utilizarse %g o %G, el significado preciso de estos parámetros y otros, puede encontrarse consultando el manual ( man smb.conf )

4) Crear los recursos compartidos
En el archivo smb.conf, comentar todos los "shares" de ejemplo y hacer los agregados necesarios para que se incorpore la siguiente información:

[netlogon]
comment = Scripts de Inicializacion
path = /home/netlogon
read only = yes
guest ok = yes
browseable = no

[home]
comment = Directorio Particular de Usuario
path = /home/%U
browseable = yes
writable = yes

[publico]
comment = Directorio Publico
path = /home/public
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
force create mask = 0777

Salvar el archivo smb.conf

5) Para chequear la correctitud del archivo smb.conf, se puede usar el comando:

testparm

El mismo, hace un análisis del archivo smb.conf y reporta errores si los encuentra.

6) Crear los directorios /home/netlogon y /home/public con permisos 0754 (netlogon) y 0777 (public).

7) Editar el script de Logon - archivo logon.bat.
Importante: Utilizar un editor de texto de Windows, tipo Notepad para crear este archivo
logon.bat (para que quede salvado como archivo de texto estilo MS), también puede hacerlo bajo Linux y luego utilizar alguna utilidad de conversión del formato.

net time \\SMBServer /y (también se puede usar: /yes en lugar de /y)
net use H: \\SMBServer\home -y
(también se puede usar: /yes o /y en lugar de -y)
net use P: \\SMBServer\public -y

8) Incluir el información de SMBServer en el archivo lmhosts
Editar el archivo /etc/samba/lmhosts (o /etc/lmhosts) e incluir una línea con información de su SMBServer

por ejemplo una linea: 192.168.0.10 SMBServer

9) Iniciar/Reactivar el demonio de Samba (smbd)

service smb restart

Si esto no funciona en la distribución que utiliza, no dude en usar los clásicos:
ps -auxgx | grep smb
kill -9 <ID proceso de smb>
smbd

10) Verifique con smbclient que la configuración indicada anteriormente esté funcionando.

smbclient -L //SMBServer

En caso de que aparezca "Password:", presionar "Enter" y se verán los recursos compartidos por el servidor.

11) Hacer un login de clientes Windows 95/98/NT en el dominio ELDOMINIO con uno de los
usuarios Linux/Samba previamente creado(ver pasos 1 y 2).

En Windows 95/98/ME, se debe configurar según la siguiente secuencia de acciones:

Inicio => Configuración => Panel de Control => Red => Cliente para redes Microsoft => Propiedades.

Para el caso de clientes Windows NT/2000 (Workstation/Professional), la idea es similar aunque la secuencia no sea exactamente la misma.

Hacer un click en la opción "Iniciar sesión en dominio de Windows NT" y escribir el dominio
ELDOMINIO (workgroup).

Ejemplo de archivo de configuración

A continuación se presenta el contenido de un archivo de configuración de SAMBA, que ha sido probado con varias distribuciones y que el lector puede modificar a gusto para lograr lo que se presenta en este artículo. Cada instrucción que aparece está debidamente comentada.

Como último consejo para quienes quieran lograr una rápida configuración de SAMBA, pueden instalar Webmin y/o SWAT, herramientas que permiten configurarlo amigablemente.

#============================================================#
# /etc/smb.conf
#------------------------------------------------------------------------------------------------------------#
# Archivo principal de configuracion de SAMBA
# Esqueleto de archivo de configuracion, establecer selectivamente
# los parámetros, de acuerdo a las necesidades.
#------------------------------------------------------------------------------------------------------------#
# Probado en los sistemas: Solaris y Linux/Distribuciones:
# RedHat 6.0, 7.0 y 7.1
# Solaris 7
# Slackware 7.x
# Mandrake 6.1, 7.0 y 8.1
# SuSe 7.2
#------------------------------------------------------------------------------------------------------------#
# Ultima modificacion: 08/12/2001
# Sebastian Sasias - sasias(at)linuxmail(dot)org
#============================================================#
#
# Este archivo se ha desarrollado siguiendo las especificaciones de la
# documentación de SAMBA, ver el smb.conf(5) manual
#
# OBS: Una vez modificado este archivo, testearlo con el comando "testparm"
#
#====================== Opciones Globales =======================#
#
# Opciones generales de configuración
#
[global]
#......................................................................................................................................#
# workgroup = NT-Domain-Name o Workgroup-Name, ej: MIDOMINIO
# Dominio PDC
workgroup = ELDOMINIO
#......................................................................................................................................#
# Nombre con el que aparecerá anunciada esta máquina en las demas
netbios name = SMBServer
#......................................................................................................................................#
# Comentario que aparece en la ventana "Entono de red" en Windows
server string = Samba Server de este lugar
#......................................................................................................................................#
# Esta opcion es importante por razones de seguridad, para permitir
# conexiones desde ciertas maquinas que estan en la red local
# En este ejemplo, se permite el acceso desde una red 192.168.8.0 (tipicamente
# de clase C) y desde la interfaz "loopback". Para mas detalles, ver las paginas
# del man de smb.conf
# Ej: Los recursos compartidos con samba sólo pueden ser utilizados
# por maquinas cuya IP empieza por 192.168.8 y 127 (línea comentada abajo)
; hosts allow = 192.168.8. 127.
#......................................................................................................................................#
# Si desea cargar automaticamente la lista de impresoras, en lugar de
# ponerlas individualmente, utilizar esto:
; load printers = yes
#......................................................................................................................................#
# Se puede sobreescribir la ubicacion del printcap
; printcap name = /etc/printcap
#......................................................................................................................................#
# En las propiedades del nombre printcap del SystemV para lpstat debe permitir
# obtener automaticamente una lista de impresoras del spool system de
# SystemV (valga la redundancia)
; printcap name = lpstat
#......................................................................................................................................#
#No deberia ser necesario especificar el tipo de sistema de impresión a menos
#que sea algo no estandar.
#Los sistemas de impresión actualmente soportados son:
# bsd, sysv, plp, lprng, aix, hpux, qnx
; printing = bsd
#......................................................................................................................................#
# Descomentar esto si quiere una cuenta de usuario invitado (guest),
# se debe agregar esto a /etc/passwd, por defecto el usuario "nobody"
# sera usado en caso de que no se especifique algo.
; guest account = pcguest
#......................................................................................................................................#
# Esto es para indicarle a Samba que use un log aparte por cada maquina
# que se conecte al servidor
log file = /var/log/samba/log.%m
#......................................................................................................................................#
# Para indicar un maximo de espacio (en KB) de los archivos de log.
max log size = 50
#......................................................................................................................................#
# ver security_level.txt por mas detalles
# Especifica como se efectua la validación de contraseñas
# Seguridad a nivel de usuario, cada usuario con su password (smbpasswd)
security = user
#......................................................................................................................................#
# Si security = server entonces la validación se efectuará contra otro servidor
# Usar opcion "password server" solo con security = server
# En password server indicar la IP del servidor encargado de autentificar.
; password server = <NT-Server-Name>
#......................................................................................................................................#
# Si desea usar passwords encriptadas, leer los archivos ENCRYPTION.TXT,
# Win95.txt y WinNT.txt que vienen en la documentacion de Samba.
# No habilitar esta opcion a menos que se cuente con la informacion adecuada.
# Informacion: Win95, Win98 y WinNT envían sus passwords encriptadas
encrypt passwords = yes
#......................................................................................................................................#
# Utilizando esta opcion, se puede personalizar la configuracion por cada
# maquina de la red. El parametro %m es reemplazado con el nombre de
# netbios de la maquina que se conecta.
; include = /usr/local/samba/lib/smb.conf.%m
#......................................................................................................................................#
# Segun dice la documentacion y algunos "tips" que andan en la vuelta, esta
# opcion brinda mejor performance.
# Ver speed.txt y las paginas del manual por mas detalles
socket options = TCP_NODELAY
#......................................................................................................................................#
# Configura Samba para usar multiples interfaces de red
# Si se tienen multiples interfaces de red, se deben listar aquí como en el ejemplo
# Ver las paginas del manual por mas detalles.
; interfaces = 192.168.8.2/24192.168.12.2/24
#......................................................................................................................................#
# Browser Control Options:
# poner "local master = no" si NO se desea que Samba sea el "master browser" en la red.
local master = yes
#......................................................................................................................................#
# OS Level determina la precedencia de este servidor en la eleccion del
# master browser. El valor por defefecto deberia ser razonable
; os level = 33
#......................................................................................................................................#
# La opcion "domain master" es para especificarle a Samba que sea un
# "Domain Master Browser". Esto permite a Samba prestar servicios de controlador
# de dominio NT/2000 Server. Puede tener "visibilidad" sobre varias sub-redes TCP/IP
# NO UTILIZAR esta opcion si ya hay en la red un Windows NT domain controller
# (PDC) haciendo este trabajo
domain master = yes
#......................................................................................................................................#
# Preferred Master hace que Samba forzosamente haga una eleccion de
# local browser en el momento del arranque y le da una oportunidad ligeramente
# más alta de ganar la elección
# Es la capacidad de obtener la lista de maquinas conectadas a la red.
# Si se tienen varios servidores el "preferred master" será el servidor de preferencia
# para los clientes que buscan en una lista de servidores.
preferred master = yes
#......................................................................................................................................#
# Usar solamente si hay un NT server de la red, que esta configurado como
# PDC (primary domain controller).
; domain controller = <NT-Domain-Controller-SMBName>
#......................................................................................................................................#
# Habilitar esta opcion si se desea que SAMBA sea "domain logon server" para
# estaciones clientes Windows 9x/ME.
domain logons = yes
#......................................................................................................................................#
# Si se habilita "domain logons" entonces hay que utilizar un script de logon,
# por cada maquina o por cada usuario de la red Windows

# Para correr logon batch especifico por maquina cliente de la red
; logon script = %m.bat

# Para correr un script logon por cada usuario
; logon script = %U.bat
#......................................................................................................................................#
# Donde se almacenan los perfiles (solo para Win95/98 y WinNT)
# %L se sustituye por el nombre de NetBIOS de este servidor, %U se sustituye
# por el nombre de usuario.
# Se debe descomentar el elemento [Profiles] que aparece mas abajo
; logon path = \\%L\Profiles\%U
#......................................................................................................................................#
# Soporte de Windows Internet Name Service:
# WINS Support - le indica al NMBD si habilita su WINS Server
# El protocolo WINS convierte los nombres de las maquinas en direcciones IP,
# es lo mismo que DNS para TCP/IP.
; wins support = yes
#......................................................................................................................................#
# WINS Server - Le dice al componente de Samba NMBD que sea un cliente
# WINS en la red.
# OBS: Samba puede ser una de las dos cosas: Servidor WINS, o Cliente
# WINS, pero NO ambas a la vez
# Aqui se especifica la IP del servidor WINS
; wins server = 192.168.8.1
#......................................................................................................................................#
# WINS Proxy - Le dice a Samba que debe negociar las preguntas de resolución
# de nombres, "representando" a sus clientes ante un servidor WINS.
# Para ello debe haber al menos un servidor WINS en la red. Por defecto es NO.
; wins proxy = yes
#......................................................................................................................................#
# DNS Proxy - Le indica a Samba cuando debe o no, intentar resolver nombres
# de NetBIOS usando DNS nslookups. Los valores por defecto hasta versiones
# 1.9.17 es "yes", esto fue cambiado en la version 1.9.18 a "no".

# Indicamos que la resolución de nombres se hará mediante DNS
# dns proxy = yes
# dns proxy = no (la resolución se hará mediante el archivo lmhosts )
#......................................................................................................................................#
# Si no se especifica logon drive, se automonta la unidad Z:
logon drive = P:
#......................................................................................................................................#
#al hacer login se ejecuta el script /etc/samba/netlogon/SAMBA.BAT
# y monta las unidades con net use
logon script = SAMBA.BAT

#====================== Share Definitions ========================#

# Directorio personal de cada usuario
# Unidad P:

[homes]
comment = Home Directories
browseable = no
writable = yes
readonly = no
force create mode = 0700
create mode = 0700
force directory mode = 0700
directory mode = 700

#------------------------------------------------------------------------------------------------------------#
# Directorio para almacenar archivos temporales
# Unidad T:

[tmp]
comment = Archivos temporales
path = /tmp
readonly = no
public = yes
writable = yes
force create mode = 0777
create mode = 0777
force directory mode = 0777
directory mode = 0777

#------------------------------------------------------------------------------------------------------------#
# CD-ROM del servidor
# Unidad L:

[cdrom]
comment = CD-ROM
path = /mnt/cdrom
public = yes
writable = no

#------------------------------------------------------------------------------------------------------------#
# Grupo, corresponde a /home/grp.nombre_grupo
# /home/usuario/grupo es un enlace a /home/grp.nombre_grupo
# grp.nombre_grupo tiene permisos 770
# Unidad G:

[grupo]
comment = Directorio grupo
path = /home/%u/grupo
writable = yes
readonly = no
force create mode = 0770
create mode = 0770
force directory mode = 0770
directory mode = 0770

#------------------------------------------------------------------------------------------------------------#
# Aquí se colocan todas las aplicaciones, soft. de instalación,
# aplicaciones corporativas, etc.
# permisos de /red y /red/instala 755 y propietario root (por ahora)
# Unidad R:

[red]
comment = Directorio /red
path = /red
writable = yes
readonly = no
force create mode = 0750
create mode = 0750
force directory mode = 0750
directory mode = 0750

#------------------------------------------------------------------------------------------------------------#
[netlogon]
comment = Servicios de Logon de Red
path = /etc/samba/netlogon
guest ok = yes
writable = no
locking = no
public = no
browseable = yes
share modes = no

#------------------------------------------------------------------------------------------------------------#

#============================================================#

Consideraciones finales

A medida que evolucionan las versiones de SAMBA y otras herramientas de Linux, es posible que algunos de los aspectos aquí presentados pierdan vigencia. De hecho a lo largo de de la evolución de SAMBA, los nombres de ciertos parámetros de su archivo de configuración han cambiado ligeramente, con el objetivo de lograr una mejor organización.

Si en algún momento durante la configuración de SAMBA recibe mensajes de error indicando algún parámetro desconocido, tiene dos alternativas rápidas para corregir el problema:
- Fijarse en el archivo smb.conf que se instala por defecto, el mismo generalmente contiene lineas comentadas que pueden tener información acerca del "parámetro problemático".
- Leer la documentación de SAMBA, comenzar por el archivo que describe los cambios respecto a versiones anteriores..

Referencias: Bibliografía y Herramientas de software

Notas de Copyrights

SAMBA es un producto distribuído bajo los términos de GPL (Licencia Pública General)
Linux es marca registrada de Linus Torvald.
Solaris es sistema operativo y marca registrada de Sun Microsystems.
MS Windows es sistema operativo y marca registrada de la empresa Microsoft.
La utilización de SAMBA no implica pagos de licencias a Microsoft.