Samba (Entorno de Red "Linux|Windows")

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

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

 
[global]
socket options = TCP_NODELAY 

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

 
 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 :

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 

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:

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

Configurar Red para utilizar Contraseñas encriptadas

Existen dos posibilidades

Utilizar un Servidor NT para autorizar a usuarios
Utilizar Contraseñas encriptadas en el Servidor Unix (Linux)

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

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

Links: