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.
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.
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.
|
|
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:
|
Lo anterior solo montaría el subdirectorio oracle del "share" documentos de la computadora contable1 en el directorio docwindows del sistema Unix.
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:
|
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:
|
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.
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.
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:
|
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 :
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".
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
.
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 |
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") |
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 |
[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.
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.
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.
Existen dos posibilidades
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 el script mksmbpasswd.sh
para generar un archivo de contraseñas similar a /etc/passwd
.
|
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.