SAMBA como cliente en dominios Microsoft Windows(R) NT
11 de Mayo de 2005
Introducción
Hoy en día la mayoría de las pequeñas y medianas empresas, por no hablar de las grandes corporaciones, poseen redes internas instaladas que enlazan sus computadoras de escritorio, las cuales, salvo excepciones, corren sobre la arquitectura de redes controladas por servidores con un sistema operativo de la empresa Microsoft, como ser Windows NT, XP, Server 2000 o Server 2003.
Esta situación nos lleva a que los usuarios GNU/Linux tengamos ciertos problemas a la hora de utilizar aplicaciones de distinto tipo, ya que, para no vulnerar la ley, estas empresas sólo autorizan a instalar en dichas máquinas programas comerciales pagos, que en general, son de la empresa propietaria del señor Bill Gates y para nada económicos.
El usuario GNU/Linux promedio, está acostumbrado a tener programas específicos para cada tarea, además de desear tener el control minucioso de todo lo que su computadora ejecuta.
Esto podría sonar a demasiado complicado para el usuario novato, pero no lo es tanto, habida cuenta del principio de claridad que todo paquete GNU/Linux debe poseer.
Dado que la mayoría de la documentación de SAMBA disponible en internet está en inglés, y la que no lo está, trata básicamente del reemplazo de servidores de redes Microsoft Windows(R) por servidores SAMBA, y que es poco clara la implementación de terminales con sistema operativo GNU/Linux en redes NT, es que me aboqué a la tarea de confeccionar esta receta, tratando de que no por sencilla sea poco clara.
El conjunto de aplicaciones SAMBA
El conjunto de aplicaciones SAMBA ( http://www.samba.org ) es un grupo de paquetes que habla el protocolo SMB (Server Message Block), el cual es el protocolo de uso normal de muchos sistemas operativos para el manejo de redes, como ser OS/2 y Microsoft Windows(R), en las operaciones de red servidor-cliente.Convenciones
Este conjunto de paquetes nos permite tanto controlar una red como ser un cliente de ella.
A fin de clarificar lo que más
adelante se explique, convendremos el significado de los siguiente
términos:
PDC: Primary Domain Controler - Controlador de Dominio Primario: Es el servidor pricipal de la red que provee los servicios de comunicaciones, y básicamente, la autenticación de las terminales y los usuarios de la red.
BDC: Back-up Domain Controler - Controlador de Dominio Secundario: Son servidores que pueden asumir ciertas tareas de control de la red, incluso llegar a suplantar al PDC en caso de caída del mismo.
host: Nombre en claro del una terminal. En este ejemplo lo asumiremos como MASAE82: Malvinas Argentinas, estación 82.
IP: Internet Protocol - La dirección en forma numérica de una terminal; consta de cuatro grupos de números del 0 al 255, separados por puntos (110.111.1.254).
WINS: Windows Internet Name Service - Servicio de Nombres Internet de Windows: Servicio que asigna los nombres a los equipos (TCP/IP)
DHCP: Dynamic Host Configuration Protocol - Protocolo de Configuración Dinámica del Host: Configura a los equipos en forma automática al conectarse a una red.
DNS: Domain Name System - Sistema de Nombres de Dominio: Base datos que mantiene la identificación de los equipos del dominio.
SuposiciónPDC: Primary Domain Controler - Controlador de Dominio Primario: Es el servidor pricipal de la red que provee los servicios de comunicaciones, y básicamente, la autenticación de las terminales y los usuarios de la red.
BDC: Back-up Domain Controler - Controlador de Dominio Secundario: Son servidores que pueden asumir ciertas tareas de control de la red, incluso llegar a suplantar al PDC en caso de caída del mismo.
host: Nombre en claro del una terminal. En este ejemplo lo asumiremos como MASAE82: Malvinas Argentinas, estación 82.
IP: Internet Protocol - La dirección en forma numérica de una terminal; consta de cuatro grupos de números del 0 al 255, separados por puntos (110.111.1.254).
WINS: Windows Internet Name Service - Servicio de Nombres Internet de Windows: Servicio que asigna los nombres a los equipos (TCP/IP)
DHCP: Dynamic Host Configuration Protocol - Protocolo de Configuración Dinámica del Host: Configura a los equipos en forma automática al conectarse a una red.
DNS: Domain Name System - Sistema de Nombres de Dominio: Base datos que mantiene la identificación de los equipos del dominio.
Haremos la siguiente suposición:
usted es un empleado de la empresa MALVINAS ARGENTINAS S.A., trabaja en
la sección facturación del departamento Ventas. Hasta
ahora
está usando una terminal con sistema operativo Microsoft
Windows(R), (versiones 85, 98, Me, XP, 2000 o 2003), a la que de
aquí en mas nos referiremos como M$W, corriendo en un entorno de
red Microsoft Windows(R) NT, que de aquí en mas nos referiremos
como Domino NT, y desea cambiar por GNU/Linux. Específicamente
por la distribución Debian, que es con la que está
probado este procedimiento.
Obtención de información de su terminal
Bajo M$W, pique "Inicio", luego
"Ejecutar"; en el campo en blanco que se le presente, tipee command, y luego presione <enter>. Al aparecer la
pantalla en blanco y negro de terminal, tipee la siguiente
instrucción:
\> ipconfig /all
Tome nota de todos los datos que en esta pantalla aparezca. Para que los imprima directamente a su impresora,Configurando Debian GNU/Linux para acceder con SAMBA
\>ipconfig /all >lpt1
Pique con el botón derecho del ratón el ícono "Propiedades de red" que debería estar en su escritorio, y obtenga el nombre del dominio, que para este ejemplo, supondremos que es MALVINAS.
Instale los paquetes samba, smbclient y winbind.Conectándose a su dominio NT
Cuando instale el paquete samba, nucleo del sistema, al serle solicitado, elija ejecutar como demonios los paquetes smbd y nmbd.
Ejecute el comando # base-config, y en la opción "Establecer el nombre del sistema", inidique lo que la pantalla M$W le indicó como "Nombre del host"; por ejemplo, MASAE82.
El paquete smbclient es el responsable de permitirle acceder al dominio NT; cuando lo instale y le sea requerido, en base a la información obtenida desde M$W, seleccione usar o no un servidor DHCP, y los datos del mismo.
El paquete winbind es quien lo autenticará ante el dominio NT.
Como root, cree la carpeta /home/MALVINAS.
Como root, modifique el archivo /etc/nsswich.conf.
# /etc/nsswitch.conf
passwd: files winbind
group: files winbind
shadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Este archivo indica a los paquetes que así lo solicitan, que se autentiquen mediante el demonio winbindd. (Nota: el paquete se llama winbind, el demonio, winbindd)
Para acceder a la red desde el intérprete de comandos, como root, modifique el archivo /etc/pam.d/login. Si desea acceder desde el gestor de inicio gráfico gdm, modifique el archivo /etc/pam.d/gdm.
# /etc/pam.d/login
# /etc/pam.d/gdm
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
account required /lib/security/pam_winbind.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022
Este archivo inica al sistema cómo autenticar al usuario dentro del sistema.
Como root, modifique el archivo /etc/samba/smb.conf .
# Samba config file created using SWAT (Lea la documentación de SAMBA y de SWAT; le será útil)
# from 127.0.0.1 (127.0.0.1)
# Date: 2005/05/03 16:04:23
# Global parameters
[global]
unix charset = LOCALE
# Indicamos el nombre del dominio NT al que pertenecemos, en este caso, MALVINAS
workgroup = MALVINAS
# Indicamos la descripción de nuestra terminal
server string = Facturación - José Pérez
# Indicamos a SAMBA que la seguridad de autenticación la dará un PDC o BDC.
security = domain
auth methods = winbind
update encrypted = Yes
obey pam restrictions = Yes
# Indicamos a SAMBA qué servidores nos pueden autenticar. Con sólo colocar un asterisco, alcanza.
# Si conocemos el nombre de host del PDC y/o BDC, podemos indicarlos separados por comas.
# En este ejemplo, indicamos el PDC Malvinas Argentinas - Servidor 1 y el BDC Malvinas Argentinas Servidor 2 y el asterisco.
password server = MASA1, MASA2, *
passdb backend = tdbsam, guest
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
username map = /etc/samba/smbusers
log level = 1
syslog = 0
log file = /var/log/samba/log.%m
max log size = 0
add user script = /usr/sbin/useradd -m '%u'
add group script = /usr/sbin/groupadd '%g'
add machine script = /usr/sbin/useradd -M '%u'
# Indicamos a SAMBA que queremos ser terminal, y no controladores de dominio.
os level = 0
preferred master = No
domain master = No
dns proxy = No
# Datos extraídos de M$W, bajo el título "Servidor WINS primario" y "Servidor WINS secundario"
wins server = 10.111.1.254, 10.111.1.201
ldap ssl = no
panic action = /usr/share/samba/panic-action %d
# Indicamos a SAMBA que los usuarios y grupos creados bajo dominio NT, tengan un número de
# identificación lo suficientemente alto como para no colisionar con los usuarios UNIX
idmap uid = 10000-20000
idmap gid = 10000-20000
# Indicamos cómo nos vamos a referir a DOMINIO+usuario (más adelante se detalla)
winbind separator = +
winbind enable local accounts = Yes
winbind use default domain = Yes
winbind cache time = 10
template shell = /bin/bash
# Indicamos a SAMBA dónde guardar los archivos de los usuarios.
template homedir = /home/%D/%U
invalid users = root
printer admin = root
[homes]
comment = Home Directories
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /tmp
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
El separados winbind indica cómo uno se identifica en la red. Normalmente, al indicar en el "login" el nombre de usuario, para un dominio NT de debería seguir, según la mayoría de la documentación disponible, el formato MIDOMINIO\usuario. En este ejemplo, sería MALVINAS\joseperez.
Es conveniente cambiar este símbolo "\" (barra invertida) por el de "+" (más), dado que el gestor gdm no reconoce la barra invertida.
En el sabor "sarge" de Debian, es indistinto identificarse como "MIDOMINIO+usuario" o "usuario" directamente, ya que la versión SAMBA que tiene incorporado asume como perteneciente al dominio al usuario que se identifica.
Puede decidir modificar el archivo login y/o gdm de /etc/pam.d/ en forma indistinta. Si modifica el archivo login, no podrá volver a ingresar a la consola como root; deberá identificarse como usuario válido en el dominio, y luego invocar a su.
En mi caso particular, sólo modifiqué el archivo gdm para ingresar con la cosola gráfica a la red. Las consolas de texto las dejé nativas de Debian.
Desde la consola, y como root, ejecute el siguiente comando para que el demonio winbindd capture los cambios introducidos:Lecturas recomendadas
# winbindd SIGHUP
Desde la consola, y como root, pruebe el siguiente comando
# net rpc testjoin
Si la salida es "Join to 'MALVINAS' is OK", no lea lo que sigue, pues tiene un problema menos. Si la salida es "Join to domain 'MALVINAS' is not valid", deberá unir su terminal a la red. Y aquí puede tener problemas, no por los sistemas operativos, si no por las personas que administran la red.
Cada máquina, o "host", debe estar validada en un dominio NT, no sólo el usuario que la utiliza. Me dirá que eso nunca lo hizo con M$W 95, 98 o Me, y le diré que es cierto. Dado que Windows NT debió mantener compatibilidad con los grupos de trabajo diseñados para los sistemas "Windows para trabajo en grupo 3.1x", es que debió seguir permitiendo que dichas terminales se unan no a un dominio, si no a un grupo de trabajo, el cual es intrínsicamente inseguro. La versión M$W Server 2003 ya no acepta grupos de trabajo.
Su terminal con Debian instalado, se identifica ante la red como "Windows NT4" por defecto, y además, por un problema de seguridad interno, no admitió nunca a los grupos de trabajo.
Existen dos formas de dar de alta su terminal en la red.
En la primera, deberá tener una cuenta de administrador y clave válidas en el dominio NT, o le pedirle a quien la tenga que, como root, ejecute el siguiente comando:
# net rpc join MALVINAS -U administrador%clave
donde "MALVINAS" es el nombre de su dominio, "administrador" es el nombre de usuario administrador y "clave" es la clave de acceso.
En la segunda, solicite a su administrador que dé de alta a su máquina en el PDC como terminal "Windows NT" con los utilitarios que esos programas tienen.
Luego, como root, ejecute:
# net rpc join MEMBER
Donde debe escribir textualmente la palabra "MEMBER" en mayúsculas. No debería tener problemas.
Para comprobar haberse unido exitosamente al dominio, vuelva a ejecutar
# net rpc testjoin
Manual de SAMBA de Robert Eckstein, David Collier-Brown y Peter Kelly, traducido por el Proyecto S.O.B.L.
Documentación, man pages y HowTo's de de samba, winbindd, wbinfo, webmin, net y P.A.M.
Visitar los vínculos http://www.samba.org , http://www.sobl.org , http://www.vivaolinux.br y http://www.webmin.com .
Despedida
Bueno, esto ha sido todo, espero que esto
les sea de utilidad, y no tengan que pasar dos meses leyendo manuales
en inglés, portugués y castellano, y molestar
continuamente a la gente de la lista Debian en castellano, sin la cual
no hubiese podido hacer ni la mitad de lo que logré.
(debian-user-spanish@lists.debian.org )
Si en su empresan usan el correo empresario "Outlook" y/o "Exchange",
no desespere; intente con "Evolution" y el paquete ximian-connect, que no está
incluido en el sabor "sarge" de Debian. Con todo esto, se
independizará de la "ventanita" con pantallas azules.
J.A.P. ( javier.debian.bb.ar@gmail.com )