Hiparco

Recetas y trucos de GNU/Linux e informática en general

Alojado en http://guimi.net

SAMBA como cliente en dominios Windows NT

Enviado por Javier Debian – BBca – AR a la lista de usuarios Debian


3 de Marzo de 2006 – Actualizado para Microsoft Windows Server 2003.

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 al latiguillo "Demasiado complicado, con Windows es fácil"
para el usuario novato, pero no lo es tanto, habida cuenta del principio de
claridad que todo paquete GNU/Linux debe poseer, la actual simplicidad de
manejo en entorno gráfico y la capacidad de, por ejemplo, KDE de simular el
tipo de entorno de escritorio que se desee para facilitar la transición
desde otros sistemas operativos. Es de norma en M$W no poseer documentación
suficiente de los programas instalados; a veces, ninguna.


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 es un grupo de
paquetes que habla el protocolo SMB (Server Message Block), el cual es de
uso normal en muchos sistemas operativos para el manejo de redes, como ser
OS/2 y Microsoft Windows(R), en las operaciones de red servidor-cliente.


Este conjunto de paquetes nos permite tanto controlar una red como ser un
cliente de ella.

Convenciones


A fin de clarificar lo que más adelante se explique, convendremos el
significado de los siguientes términos:


PDC: Primary Domain Controler – Controlador de Dominio Primario: Es el
servidor principal de la red que provee los servicios de comunicaciones, y
básicamente, la autenticación de las terminales a través de una tabla de
datos conocida como DNS, y habilita 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 S.A., 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, conocidos como
"hosts" (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ón


Haremos la siguiente suposición: usted es José Pérez, 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 o XP), a la que de
aquí en mas nos referiremos como M$W, corriendo en un entorno de red
Microsoft Windows (R) NT, que llamaremos "Domino NT", y desea cambiar por
GNU/Linux. (Este procedimiento está probado en Debian; usuarios de SUSE,
Irix, RedHat, Mandrake, Knoppix y otros, por favor, amplíen esta receta con
sus particularidades).

Obtención de información de su terminal


Bajo M$W, pique "Inicio", luego "Ejecutar"; en el campo en blanco que se le
presente, tipie command, y luego presione <enter>. Al aparecer la pantalla
en blanco y negro de terminal, tipie la siguiente instrucción:


\>ipconfig /all


Tome nota de todos los da tos que en esta pantalla aparezca.


Para que los imprima directamente a su impresora, \>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. Este grupo no debería diferir de
lo que en los datos obtenidos anteriormente se detalla como "Sufijo DNS
principal".

Configurando GNU/Linux: samba, smbclient y winbind.


Instale el paquete samba mediante la instrucción
# apt-get install samba


Tome nota de los paquetes sugeridos que le indica: krb5-user, krb5-doc y
samba-doc.


Cuando le sea solicitado, indique el nombre del dominio EN MAYÚSCULAS, en
este ejemplo, MALVINAS


Elija activar las contraseñas cifradas. Este tema es importante. Hasta la
versión NT Server 2000, se aceptaban contraseñas planas (sin cifrar); NT Ser
ver 2003 sólo acepta contraseñas cifradas. De hecho, las terminales M$W 95,
98 y Me deben ser actualizadas con un parche (¡qué raro! ¿no?) para que sean
reconocidas, y las M$ W 3.11 WFW dejaron de ser reconocidas y no hay parche
disponible (¿y la compatibilidad hacia atrás?). Esto podría ser obviado en
el caso que exista algún BDC con M$W NT4 con capacidad de autenticar al
usuario con claves planas, pero repito, es conveniente manejar contraseñas
cifradas.


Cuando le pregunte ¿Modificar smb.conf para usar la configuración WINS que
proviene de DHCP?, recomiendo elegir No, salvo que usted maneje bien los
protocolos de red TCP/IP.


Elija activar los programas samba como demonios (daemons).


Cuando le interrogue ¿Crear base de datos de contraseñas?, conteste Sí.


Instale el paquete smbclient mediante la instrucción
# apt-get install smbclient
Tome nota de los paquetes sugeridos que le indica: smbfs. El
paquete smbclient es el responsable de permitirle acceder al dominio NT.


Instale el paquete winbind mediante la instrucción
# apt-get install winbind
El paquete winbind es quien lo autenticará ante el dominio NT.


Ejecute el comando
# base-config
, y en la opción "Establecer el nombre del
sistema", indique lo que la pantalla M$W le indicó como "Nombre del host";
por ejemplo, MASAE82, o el que el administrador de red le haya asignado.


Con respecto a esto, si usted ha decidido mantener en una misma máquina
ambos sistemas operativos, deberá tener un nombre de host distinto para cada
versión de sistema operativo, ya que el nombre de host se asocia a un SID
especifico, y cada vez que reinicie la máquina en un sistema distinto,
deberá volverse a unir al dominio. En pocas palabras, causa problemas
mantener el mismo nombre de host para una misma máquina pero corriendo con
sistema operativo diferente. Lo ideal, es tratar a cada sistema operativo
como si fuesen máquinas distintas.


Como root , cree la carpeta /home/MALVINAS en MAYÚSCULAS. Esto es porque los
archivos de los usuarios NT se almacenarán en una carpeta con el nombre del
dominio, el cual es en mayúscula.


Como root , modifique el archivo /etc/nsswich.conf.


# /etc/nsswitch.conf

passwd:    files winbind
group: files winbind
shadow: files winbind

hosts: files wins

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/gdm. Este archivo indica al sistema cómo autenticar al
usuario dentro del sistema. (Asumo que instaló una consola gráfica por X).


Si desea acceder desde el gestor de inicio gráfico kdm, modifique el archivo
/etc/pam.d/kdm. Sugiero sólo modificar el acceso desde el gestor gráfico, y
dejar el de consola /etc/pam.d/login nativo de GNU/Linux. El gdm es más
eficiente en grandes redes con muchos usuarios, pues kdm cada vez que
inicia, recupera toda la lista de usuarios para poder seleccionarlos, y si
la red es lenta o cuenta con miles de usuarios, esto puede ralentizar el
rendimiento; en gdm, esto es opcional.


# /etc/pam.d/gdm
# /etc/pam.d/kdm

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


Como root , modifique el archivo /etc/samba/smb.conf .

# Samba config file created using SWAT from 127.0.0.1 (127.0.0.1)
# Date: 2005/05/03 16:04:23
# (Lea la documentación de SAMBA y de SWAT; le será útil)

# 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, es lo conveniente.
# 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\spasswo= rd:* %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 principal" y "Servidor WINS secundario"
# Si su sistema toma la información WINS de DHCP, no incluya la
# siguiente línea
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


Asegúrese que este archivo posea atributos que permitan el acceso de
lectura a todos los usuarios. Algunos programas lo consultan, y si está
bloqueado por el root, dan error de acceso.


El separador winbind indica cómo uno se identifica en la red. Normalmente,
al indicar en el "login" el nombre de usuario, para un dominio NT debería
seguir, según la mayoría de la documentación disponible, el formato
MIDOMINIO\usuarioNT. 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 la versiones SAMBA 3 o superior, es indistinto identificarse como
"MIDOMINIO+usuarioNT" o "usuarioNT" directamente, ya que se asume como
perteneciente al dominio especificado en /etc/samba/smb.conf al usuario que
se identifica.


Recuerde que si modifica o anula el archivo /etc/pam.d/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.


Si se cayó la red, le va a se un poco difícil iniciar GNU/Linux, salvo que
entre en modo de recuperación y reestablezca el archivo original .

Verificando su paquete SAMBA para Windows Server NT 2003


Con esta nueva versión de servidores, existe un pequeño problema de
"tickets" de accesos, que son manejados por un guardián desarrollado en el
Instituto Tecnológico de Massachussets (MIT), conocido como Kerberos, en
alusión al can Cerbero que guarda las puertas del infierno. ¿Tomó nota d el
paquete sugerido krb5-user? (Esto no es válido para usuarios de SUSE, que
usan una versión distinta llamada heimdal) .



Como root, ejecute
# smb -b | grep KRB
La salida debe ser algo como esto:

HAVE_KRB5_H
HAVE_ADDRTYPE_IN_KRB5_ADDRESS
HAVE_KRB5
HAVE_KRB5_AUTH_CON_SETUSERUSERKEY
...
...
HAVE_KRB5_SET_REAL_TIME
HAVE_KRB5_STRING_TO_KEY
HAVE_KRB5_TKT_ENC_PART2
HAVE_KRB5_USE_ENCTYPE
HAVE_LIBGSSAPI_KRB5
HAVE_LIBKRB5


Si tiene al final la línea HAVE_LIBKRB5, vamos bien, pues su samba está
compilado con la versión 5 de Kerberos, y por lo tanto va a funciona, si no
es así, actualice samba desde ( http://www.samba.org ) y empiece de nuevo.


Instale el paquete krb5-user mediante la instrucción
# apt-get install krb5-user.


Cuando se le solicite el "realm" por defecto, indique su nombre de dominio,
MALVINAS.


Cuando se le solicite los nombres de servidores del "realm", indique MASA1
MASA2, los nombres de PDC y BDCs separados por espacios.


Cuando se le solicite el nombre del servidor administrativo de claves,
indique MASA1. Esto debería haberse cargado por defecto; sólo cámbielo si en
su red el administrador principal de claves de acceso ha sido redireccionado
a otro servidor. Este servidor es el encargado de cederle los "tickets" de
seguridad a las aplicaciones que así lo requieran a través de Kerberos.


¡Atención! Escriba estos nombres en MAYÚSCULA.

Conectándose a su dominio NT


Desde la consola, y como root, ejecute los siguientes comando para que se
capturen los cambios introducidos. ¡Recuerde que usted usa GNU/Linux y no
tiene que reiniciar la máquina! :-P


# /etc/init.d/winbind restart
# /etc/init.d/samba restart


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 (hizo magia). 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. (net depende del paquete samba).


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, 9 8 o Me,
y le diré que es cierto. Pero si alguna vez dio de alta una terminal con M$W
XP, sabrá que debió unirla al dominio en forma explícita, y debió tener
comunicaciones con el administrador de red para que en el PDC esa máquina
sea reconocida.


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
seguió 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 SAMBA 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 member -U AdministradorDominioNT%claveNT
donde "MALVINAS" es el nombre de su dominio, "AdministradorDominioNT" es el
nombre de usuario administrador del Dominio NT y "claveNT" es la clave de
acceso.


En la segunda, la más normal, (si es un administrador de una red y usa
GNU/Linux, lo más probable es sus usuarios use n GNU/Linux y no estaría
leyendo esto), solicite a su administrador que dé de alta a su máquina en el
PDC como terminal "Windows XP" con los utilitarios que ese sistema operativo
tienen, y lo habiliten a usted, con su propio nombre de usuario y clave,
para dar de alta su propia máquina. Esto hace que en el PDC se registre en
la DNS una asociación entre el nombre de host y un usuario habilitado a
unirlo, para que la red lo reconozca. Los administradores M$W a veces son
uno poco reacios a que haya algún usuario que sea capaz de unir su propia
máquina al domino, pues si pierden este control, se no son imprescindibles a
la hora de manejar las terminales, y eso implica una pérdida de poder. Si es
necesario, miéntales y dígale que "Tuvo que formatear el disco y reinstalar
Windows XP con Service Pack 122, porque pasó el virus Kamasutra-Hentai que
colisionó con la actualización de seguridad xp6649264IEMN DC974 y se le
pinchó el registro de punto de recuperación de la partición NTFS, por lo que
el disco de emergencia que tiene no la levanta, pues es FAT32, ni puede
acceder por Active Directory". Va a parecer gurú y adorador de M$W, y tal
vez le "pasen bola".


Luego que lo habiliten a dar de alta la terminal (host ) en el dominio, como
root, ejecute
# net rpc join member -U UsuarioNT%claveNT
(UsuarioNT es su nombre de usuario norma l M$W en el dominio con su
respectiva clave).


No debería tener problemas. Si los tiene, intente con
# net rpc join member -U UsuarioNT%claveNT -D MALVINAS -S MASA1


Es decir, indique en forma expresa el nombre del dominio y del PDC de su
red. Ante la duda,
# man net.


Para comprobar haberse un ido exitosamente al dominio, ejecute
# net rpc testjoin -S MASA1


Si sigue con problemas, al pié esta mi dirección.


Una vez hecho todo esto, tómese un café o un té, y espere los 15 minutos de
rigor para que el PDC replique en todos los BDC la información de que usted
está unido al dominio. Cuando pase este tiempo, verifique su situación en la
red mediante los comandos
# net rpc info
# wbinfo -m
# wbinfo -g
# wbinfo -u


Estos comandos (wbinfo depende del paquete winbind) le informarán datos del
dominio al que se unió, qué dominios están en su red, los grupos y usuarios
habilitados en la misma, etcétera.


Bien, ahora es tiempo de ejecutar como root
# /etc/init.d/gdm restart
con el
objeto de acceder a la red, como si de una terminal M$W se tratase.


Por último, puede ser que su usuario NT no tenga algunos atributos para uso
de periféricos en su terminal. Como root, dé de alta un usuario UNIX con el
mismo nombre del usuario NT, sin clave, y déle los permisos de acceso
necesarios para los servicios locales. Yo en particular, tengo problemas con
los parlantes. Esto es porque al grupo "usuarios del dominio" usted no puede
administrarlos, y por defecto, GNU/Linux le da atributos restringidos; de
esta manera, cualquier usuario con clave válida de dominio puede "loguearse"
en la terminal, pero sólo los específicamente indicados con un paralelo UNIX
pueden acceder a algunos servicios. Si alguien sabe otra manera de
simplificar esto, avísime, por favor.

Recomendaciones


Instale el paquete smbfs. Le simplificará la tarea de montar los directorios
remotos.


Utilice el paquete xsmbrowser en modo gráfico; es el que más se asemeja al
"Entorno de red" de M$W.


Si no usa la interfaz gráfica, el paquete smbc (Samba Commander), es lo más
eficiente, rápido y simple.


Instale el paquete swat y póngase a jugar con las configuraciones de Samba.


Recuerde que en los navegadores gráficos de archivos, para acceder a un
recurso remoto, debe indicar smb://NombreHostRemoto/NombreDirectorio.


Lea toda la documentación sugerida y de los paquete que instala,
especialmente las siguientes:

Despedida


Bueno, esto ha sido todo, espero que 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 (
debian-user-spanish@lists.debian.org ), sin la cual no hubiese podido hacer
ni la mitad de lo que logré, amén de tener que ponerme a estudiar las
"nuevas" versiones de M$W para ver qué nuevo escollo hay que vencer; espero
que M$W Vista no venga con más "sorpresas".


Si en su empresa usan el correo empresario "Outlook" y/o "Exchange", no
desespere; intente con "Evolution" y el paquete ximian-connect. Con todo
esto, se independizará de la "ventanita" con pantallazos azules.


Si está viviendo en mi queridísima República Argentina (al sur del sur).


¡ Instale y apoye a Tuquito ! ( http://www.tuquito.org.ar ).


J.A.P. ( javier.debian.bb.ar@gmail.com )


GNU/Linux Registered User # 389414

Category: GNU/Linux, Windows
  • LucasBeta says:

    La verdad muy bueno y completo el tutorial, lastima que peca de cargoso, al igual que muchos usuarios de linux, que no pueden hablar de linux sin comparar y defenestrar a windows, como si este fuera la ex-novia que los cuerneó en el pasado. Yo personalmente lo veo como dos herramientas muy útiles que uno puede usar según gusto, capricho o conocimiento. Pero bueno, es solo mi opinion, de eso trata la libertad tambien :-). Saludos.-

    25 November 2010 at 14:16