Samba en Unix

SMB ("Server Message Block") es parte del protocolo NetBEUI desarrollado por Microsoft e IBM que permite la comunicación entre Discos e Impresoras en Sistemas de Windows. En Unix (Linux) esta funcionalidad es denominada SAMBA y permite que un servidor ("Host") Unix , pueda accesar recursos en plataformas de Windows(95,98,NT,2000), al igual que permite a estas plataformas (Windows) accesar recursos en "Hosts" de Unix.

Servidor ("Host") de Unix accesando recursos de Plataforma Windows

El primer problema en accesar archivos de una plataforma Windows es el formato o sistema de archivos ("File System") en el que están basados. Windows actualmente utiliza tres tipos: El clásico FAT file system, VFAT que surgió con Windows 95, NTFS de Windows NT y JFS de Windows 2000 . Mientras que Unix puede utilizar otros 20 diferentes, los más comunes son ext2 para Linux y NFS desarrollado por Sun.

Pasos para Lectura

A continuación se describen los pasos a seguir para poder leer archivos y accesar recursos(impresoras, scanners..) de una plataforma Windows en un Servidor Unix

  • Configurar el "kernel" de Linux para que éste pueda leer los "File Systems" FAT,VFAT y NTFS; debido a que esta lectura de "file systems" se realizará a través de Samba , se requiere que se active la opción SMB file System Support durante la configuración del "kernel", aunque es muy probable que si utiliza un "kernel" de Linux mayor a 2.0, ya tenga configurada esta opción.
  • Configurar las maquinas que utilicen plataformas Windows para correr en TCP/IP, y activar TCP/IP en el servidor Unix (Linux).

Si Windows puede utilizar TCP/IP y Unix también, entonces la comunicación debe de ser transparente , para que se requiere SAMBA ?

A pesar que al nivel de red (IP) si es transparente, al nivel de transferencia de Información existen muchas diferencias como se mencionó : formato de archivos (VFAT,NTFS,ext2),localización de recursos(impresoras),etc.Este funcionalidad es la que es proporcionada por un paquete como Samba

  • Verifique que el archivo smb.conf (ubicado bajo el subdirectorio /etc) contenga al menos lo siguiente.

 
[global]
socket options = TCP_NODELAY 

Lo anterior agiliza la lectura de archivos y recursos que se encuentren en sistemas Windows.

  • Se debe montar el "share" de Windows ("share" en Windows = partición en Unix) en el sistema Unix, generalmente en Unix se utiliza el comando mount para realizar esto, sin embargo, Samba tiene dos comandos especiales, smbmount para montar las particiones("shares") y smbumount para desactivar las particiones("shares").Su formato es el siguiente:

 
 smbmount <opciones> <directorio_maquina_windows> <directorio motaje en Unix> 

 
 smbmount //contable1/documentos/  /docwindows 

El ejemplo anterior montaría el "share" documentos de la computadora llamada contable1 en el directorio docwindows del sistema Unix.

Si se requiere montar sólo un directorio de un "share" de Windows, entonces el comando sería:

 
  smbmount //contable1/documentos/oracle  /docwindows 

Lo anterior solo montaría el subdirectorio oracle del "share" documentos de la computadora contable1 en el directorio docwindows del sistema Unix.

Posibles Problemas

Un posible problema que puede surgir al ejecutar el comando smbmount de la manera en que se indicó anteriormente, es debido a la configuración de la computadora en plataforma Windows.

En el mundo de Windows (específicamente Windows 95 y 98) una computadora puede tener 2 nombres, es Microsoft!.

Uno es el nombre de "Host" (un vestigio de "Workgroups" ) y otro es el nombre utilizado por NetBEUI. Generalmente al instalar un sistema Windows los dos concuerdan, pero en ocasiones esto no es así, por lo tanto al utilizar el comando smbmount debe especificar el nombre de NetBEUI:

 
smbmount -s compwin //contable1/documentos/  /docwindows 

De esta manera ya se sabe que el nombre de NetBEUI en este caso es: compwin , otra posibilidad que existe es especificar el Nodo IP de la computadora Windows:

 
smbmount -I 192.168.0.24 //contable1/documentos/  /docwindows 

Aquí se estaría activando la computadora con nodo IP 192.168.0.24, aunque si esta utilizando DHCP o BOOTP no es tan fácil obtener esta información.

Plataformas Windows que accesan recursos de un Servidor ("Host") Unix

El archivo más importante para este tipo de configuración es: smb.conf , verifique que este archivo contenga al menos los siguientes parámetros:

 
[global]
   workgroup = migrupo
   socket options = TCP_NODELAY 
[homes]
   guest ok = no 
   read only = no 

Mayores detalles sobre estos parametros en smb.conf , una vez verificado que existan estas lineas en smb.conf , se debe revisar que los daemons smbd y nmbd estén siendo ejecutados por el sistema, el siguiente comando puede ser utilizado para verificación : ps -aux | egrep mbd , en dado caso que estos daemons no estén siendo ejecutados, se debe ejecutar el script ubicado en /etc/rc.d/init.d que lleva por nombre smb .Esto activará los daemons mencionados anteriormente.

Verificación de Instalación

El comando testparm verifica la validez del archivo smb.conf , en dado caso de existir alguna inconsistencia, este comando lo desplegara. El comando smbclient funciona como un cliente de FTP, esto sirve para verificar la instalación de Samba en el Servidor Unix.

Suponiendo que el servidor Unix tiene por "HostName" : osmosis , para Samba el nombre del Servidor sería el "HostName" en letras mayúsculas, por lo tanto: OSMOSIS.Este nombre debe ir junto a la cuenta del usuario que desea accesar el servidor:

 
 host$  smbclient \\\\OSMOSIS\\daniel  

El comando anterior realiza una conexión a través de Samba a la cuenta daniel de un servidor que tiene por nombre OSMOSIS . Después de ejecutar este comando, el sistema le preguntará la contraseña del usuario daniel , lo cual debe desplegar una secuencia similar a la siguiente:

 
Password:
Domain=[OSMOSIS] OS=[Unix] Server=[Samba 2.0.3]
smb: \>

De la linea de comandos smb: \> se accesan comandos en Unix vía samba , este es el primer paso para posteriormente realizar el acceso de una Plataforma Windows. Para continuar con la configuración de Samba es necesario entrar en detalle con el archivo smb.conf .

smb.conf

Este archivo ubicado en el directorio /etc contiene los siguientes tipos de lineas :

  • " # " o " ; " : Las lineas que inician con estos caracteres (" # " y " ; " ) son consideradas comentarios, " # " viene de comentarios en Unix, mientras que " ; " viene de comentarios en Windows.
  • [global] : Las lineas que contengan un nombre definido entre "[]" son consideradas inicios de sección, cada sección es utilizada para describir cierto tipo de servicio: de archivos o de impresión ; existen tres secciones principales [global],[homes],[printers]
  • dns proxy = no : Las lineas de parámetro tienen la forma parámetro = valor , en este caso inicial el parámetro dns proxy se le asignó un valor de no

Ya que el archivo smb.conf puede contener más de 100 parámetros,a continuación se mencionan los parámetros básicos de configuración; cabe mencionar que los parámetros que no son especificados, son asignados un valor razonable por "default".

Sección [global]

La sección global del archivo smb.conf contiene todos los parámetros que serán aplicados a todos los servicios de Samba.Una configuración básica sería:

 
[global]
   workgroup = contabilidad 
   server string = Servidor Samba
   keep alive = 30
   printing = bsd 
   printcap name = /etc/printcap
   load printers = yes
   print command = /usr/bin/lpr -r -P%p %s
   lpq command = /usr/bin/lpq -P%p
   lprm command = /usr/bin/lprm -P%p %j   
   preserve case = yes
   short preserve case = yes 
   case sensitive = no
   log file = /var/log/samba/log.%m
   max log size = 50
   security = user
   socket options = TCP_NODELAY 
   local master = no 

  • workgroup = contabilidad : Especifica el workgroup (en Windows 95-98) o domainame (en Windows NT-2000) al que pertenece el servidor Unix (Linux).

  • server string = Servidor Samba : Descripción extensa del Servidor Unix (Linux).

  • keep alive = 30 : Tiempo máximo (en segundos) que permitirá una conexión sin uso ("idle") antes de ser desconectada.( = 0 indica que no se desconectará )

  • printing = bsd : Vea Imprimir en Unix

  • printcap name = /etc/printcap : Archivo en el cual se encuentran definidas las impresoras

  • load printers = yes : Indica que el servicio de impresión debe ser habilitado.

  • print command = /usr/bin/lpr -r -P%p %s: Indica que se enviará a impresión un trabajo. Los macros %p y %s indican "nombre de la impresora" y "nombre del archivo" respectivamente.

  • lpq command = /usr/bin/lpq -P%p :Despliega la lista ("queue") de trabajos de Impresión que han sido enviados a la impresora definida por el macro %p .

  • lprm command = /usr/bin/lprm -P%p %j : Elimina un trabajo de impresión de la impresora %p definido con el número ("job number") del macro %j

  • preserve case = yes, short preserve case = yes , case sensitive = no : Especifican como será tratada la búsqueda y salvamento de archivos, ya que Windows es insensitivo a las letras (osmosis=OsMosiS), mientras que Unix si toma en cuenta la escritura (latina es diferente que Latina).

  • socket options = TCP_NODELAY : Agiliza la lectura de archivos y recursos que se encuentren en sistemas Windows.

  • security = user Este parámetro indica que el servidor (Unix) le debe pedir al cliente (Windows) un nombre de usuario y contraseña, otro valor que puede tomar este parámetro es server , esto indica que la autorización del usuario se realizará en otro servidor.(NOTA MUY IMPORTANTE: Vea: Configuración adicional de Windows 95,98 y NT )

  • password server = <nombre del servidor> : Este parámetro sólo se utiliza cuando el parámetro security es igual a server .

Sección [usr]

La sección usr del archivo smb.conf contiene parámetros para ser accesados y escritos por ciertos servicios desde plataformas Windows; en pocas palabras es un directorio común donde se ubican ejecutables que puedan ser de interés para la Red en Windows (ping,finger,traceroute....)

 
[usr]              -- Nombre que aparecerá en el "Network Neighborhood" de los usuarios de Windows  
 comment = /usr    -- Comentarios adicionales del Directorio 
 browsable = yes   -- Indica que el directorio puede ser observado por los usuarios
 read only = no    -- Indica que los usuarios pueden escribir a este directorio  
 create mode = 0750  -- Los permisos de acceso (en Unix) que serán otorgados al crear un archivo   
 directory = /usr   -- Directorio Unix que será accesible a los usuarios en Windows 

Sección [cdrom]

La sección cdrom al igual que la usr contiene parámetros para ser accesado el CD-ROM del servidor Unix en plataformas Windows

 
[cdrom]              -- Nombre que aparecerá en el "Network Neighborhood" de los usuarios de Windows  
 comment = CDROM de Unix    -- Comentarios adicionales del Directorio 
 path                -- Directorio donde esta montado el CD-ROM 
 read only = yes     -- Solo lectura del CD-CDROM, read-only = no : si es un quemador ("CD-ROM burner")

Sección [homes]

Esta sección asigna un directorio privado a cada usuario, se requiere que cada usuario que accese el sistema Unix sea dado alta como usuario.Esta sección presenta la ventaja que cuando se genera un usuario en el sistema Unix, éste también podrá accesar su directorio directamente de cualquier plataforma Windows si así lo requiere.

 
[homes]              -- Nombre que aparecerá en el "Network Neighborhood" de los usuarios de Windows  
 comment = Directorio por usuario   -- Comentarios adicionales del Directorio 
 read only = no     -- El usuario esta permitido escribir y leer del directorio en Unix. 
create mode = 0750   -- Los permisos de acceso (en Unix) que serán otorgados al crear un archivo   

Sección [printers]

 
 [printers]
  comment = Todas las impresoras   --Comentarios adicionales de la sección 
  browseable = yes             -- Permite a los usuarios elegir impresora 
  printable = yes              -- Indica que esta sección es de Impresión, mas no de archivos. 
  public = no                 -- Parámetro para resguardar seguridad. 
  read only = yes             -- Parámetro de seguridad para que otros usuarios no pueden eliminar trabajos.
  create mode = 0700  -- Los permisos de acceso (en Unix) que serán otorgados al crear un archivo.  
  directory = /tmp   -- Especifica donde se guardan los archivos temporales de impresión. 

NOTA: También es necesario configurar las computadoras bajo plataforma Windows con un driver apropiado para la Impresora de Unix.

NOTA 2: De nuevo utilice el comando testparm para detectar una posible inconsistencia en el archivo smb.conf .Además se debe rejecutar "restart" el script ubicado en /etc/rc.d/init.d que lleva por nombre smb , para que el archivo smb.conf sea releído.

Configuración Adicional de Windows 95,98 y NT

Las versiones de Windows 95 y 98 (con Service Pack mayor que 3) y Windows NT (con Service Pack mayor que 3), utilizan contraseñas encriptadas para su verificación, esto presenta un problema para Samba, ya que Samba espera recibir nombre de usuarios y contraseñas en sólo texto.

Para configurar un Sistema de Windows que utilice contraseñas en sólo texto

Siga los siguientes pasos:

  • Ejecutar el comando regedit para modificar "el registro" de la plataforma Windows.

  • Para Windows 95 y 98 (lado izquierdo) y para Windows NT (lado derecho), localice el siguiente parámetro:

 
    /HKEY_LOCAL_MACHINE				  /HKEY_LOCAL_MACHINE        
       /System	                                     /SYSTEM 
          /Controllers                                 /CurrentControlSet
            /Services                                    /Services 
              /VxD                                         /Rdr
                /VNETSUP                                     /Parameters

  • Una vez localizado el parámetro VNETSUP o Parameters según sea el caso, seleccione Edit -> New y elija generar un valor de DWORD .

  • Se generará un valor llamado "new value#1", cambie este valor a EnablePlainTextPassword.

  • Se abrirá un ventana nueva, solicitándole un valor, de el valor 1 (uno), y cierre el registro.

  • Reinicialice el sistema Win95,98 o NT, según sea el caso.

Configurar Red para utilizar Contraseñas encriptadas

Existen dos posibilidades

Utilizar un Servidor NT para autorizar a usuarios
  • Generar las cuentas de usuario en el Servidor Windows NT

  • En el servidor Unix modificar el parámetro password server indicando el nombre del Servidor Windows NT, esto indica que la autorización será llevada acabo por Windows NT.

  • Utilizar el comando testparm para asegurarse que los parámetros del archivo smb.conf están correctos.

  • Reiniciar el servicio de Samba

Utilizar Contraseñas encriptadas en el Servidor Unix (Linux)
  • Utilizar el script mksmbpasswd.sh para generar un archivo de contraseñas similar a /etc/passwd .

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

  • Esto generará un archivo de la forma:

 
daniel:510:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxx:daniel:/nsadmin:/bin/tcsh

  • Ahora se deben de generar las contraseñas encriptadas con el comando smbpasswd , ( smbpasswd daniel ) .

  • Una vez generadas las contraseñas de los usuarios, agregue el parámetro encrypt passwords = true , al archivo smb.conf

  • Utilice el comando testparm para verificar la validez del parámetro smb.conf y reinicialice el servicio Samba.

Links:
  • Redes en Windows : Descripción del surgimiento de Redes en plataformas Windows y las debilidades comparado con una Red en Unix.
  • Using Samba (En Ingles) : Libro sobre la configuración de Samba
  • Actualizado : 2004/12/22 21:06

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com