Samba en Slackware Linux
Autor: Augusto Sotelo L.
Mis pretenciones en este howtito son mas bien basicas, ya que solo deceo
entregarles mi experiencia configurando samba en Linux Slackware ( nuestra
gloriosa distribucion ) que se encuentra en una pequeña lan con dos
cliente Windows XP.
Para comenzar dire que debemos tener instalado el paquete samba-3.0.1-i486-1aw.tgz
( la ultima version de samba actualmente), el cual podremos encontrar en
http://www.linuxpackages.net/. Como Slackware Linux ya trae instalado el
paquete Samba, lo mas recomendable es actualizarnos a la ultima version. Para
saber cual es exactamente la ultima version de Samba podemos visitar http://www.samba.org/.
Una vez que tengamos el paquete descargado podremos instalarlo en nuestro
sistema utilizando el siguiente comando:
# installpkg samba-3.0.1-i486-1aw.tgz
Ahora, como mencione posteriormente probablemente ya tengamos en nuestro
sistema instalado una de las versiones de Samba, pero como nosotros deceamos
tener la ultima version por razones de seguridad simplemente actualizamos
el paquete ya instalado con el siguiente comando:
# upgradepkg samba-3.0.1-i486-1aw.tgz
Ahora bien, si nos encontramos en el supuesto caso que NO encontramos
la ultima version en tgz para ser llegada e instalado o actualizada, siempre
tenemos la opcion de descargarnos el codigo fuente desde http://www.samba.org/
para compilarlos nosotros mismos. No dare mayor detalle de como compilar
samba desde la fuente, pero a grandes rasgoz es asi:
$ tar zxfv samba-a.b.c-iy86.tar.gz
$ cd samba-a.b.c-iy86
$ ./configure
$ make
$ su
password:
# make install o checkinstall <<-- Aqui resaltare que lo mejor
es ejecutar checkinstall
NOTA: Si tú lector no sabes que es o que hace el comando checkinstall
siempre podras recurrir a la "Guía de Slackware 9.0" que se encuentra
en esta misma pagina.
Si alguno de ustedes decea saber con mayor detalle alguna opción
determinada durante el proceso de compilación del paquete Samba,
siempre podemos recurrir a leer el README o la documentacion que se encuentra
en la pagina de Samba.
Ahora vamos a lo contundente. Es en esta etapa donde describire basicamente
la función de algunas utilidades que nos facilitaran el camino. Es
aquí donde me referiré a los demonios smbd y nmbd.
El demonio smbd es el encargado de manejar los recursos compartidos
(como lo son directorios, impresoras, etc.) a los clientes Windows. Este
demonio provee tanto servicios de impresion como espacio para los clientes
utilizando el protocolo SMB ( o CIFS). Esto es compatible con el protocolo
LanManager ( que significa manejador de red), proveyendo LanManager para
los clientes. El termino LanManager es como una definicion que engloba
todos los protocolos usados por SAMBA para poder comunicarce con los diferentes
SO ( Sistemas Operativos) que este soporta. Esto incluye MSCLIENT 3.0 para
DOS, Windows para Workgroup( grupo de trabajo), Windows 95/98/ME, Windows
NT, WIndows 2000, OS/2, DAVE para Machintosh y smbfs para Linux.
El demonio nmbd es un servidor que comprende y puede responder a NetBIOS
las peticiones del servicio de nombre IP como las producidas por los clientes
SMB/CIFS, tales como Windows 95/98/ME, Windows NT, Windows 2000, Windows
XP y los clientes LanManager. Ademas de esto el demonio nmbd tambien
participa en los protocolos de exploramiento, con lo que hacen la vista
"vecindario de red" en Windows
Ahora describire algunas utilidades que son parte del paquete "samba-3.0.1-i486-1aw.tgz".
smbclient: Es un cliente que puede comunicarce con el servidor
SMB/CIFS, ofreciendo una interfaz similar a la del pprograma ftp. Entre
algunas de las operaciones que incluye podemos encontrar la obtencion de
los archivos que se encuentran en la maquina local, la transferencia de archivos
desde el servidor a la maquina local, recuperando la informacion del servidor,
etc..
smbtar: Es un shell script muy pequeño en la parte superior
de smbcliente(1) que descarga SMB compartidos directamente para guardar.
nmblookup:Es usado para realizar peticiones de nombres NetBIOS y
mapear asi a la direccion IP en la red de trabajo usando NetBIOS sobre peticiones
TCP/IP. Las opciones permiten que las peticiones de nombres vayan directamente
a un area de una direccion IP broadcast o a una maquina en particular.
Todas las peticiones son realizadas sobre UDP.
smbpasswd: Este programa tiene funciones diferentes, dependiendo
si es ejecutado por el usuario root o no. Cuando es ejecutado como usuario
normal, este permite al usuario cambiar la clave usada en la sesiones SMB
en cualquier maquina que almacene claves SMB.
Por defecto ( cuando es ejecutada sin argumentos) este programa intenta
cambiar la clave SMB actual del usuario que lo ejecuto en la maquina local,
ya que funciona de forma similar a como lo hace el programa passwd(1). smbpasswd
difiere con el programa passwd en la forma de funcionar, sin embargo en
eso este no obvtiene setuid root ( osea cero ), pero funciona en modo cliente-servido
y se comunica con el demonio smbd(8). Como consecuencia el demonio smbd
debe estar ejecutandoce en la maquina local. En las maquinas UNIX la password
SMB encriptada es usualmente almacenada en el archivo smbpaswd(5).
Cuando es ejecutada como usuario normal sin ninguna opcion, smbpasswd
incita teclear la antigua clave SMB y luego pregunta por la nueva clave dos
veces, asegurandose así que la nueva clave este bien escrita. Ninguna
clave sera mostrada en pantalla durante su escritura. Si tu tienes una clave
SMB en blanco ( especificado por la opcion "NO PASSWORD" en el archivos
smbpasswd), entonces simplemente presiona la tecla <ENTER> cuando
se nos pregunte por nuestra antigua clave ( old password ).
El programa smbpasswd también puede ser usada por un usuario normal
para cambiar la clave SMB en maquinas remotas, tales como Windows NT Primary
Domain Controllers ( Controlador primario de dominio). Para una mayor informacion
sobre esto chequea las opciones "-r" y -U".
Cuando es ejecutado por root, smbpasswd permite que los nuevos usuarios
sean agregados o borrados del archivo smbpasswd, asi como tambien permite
modificar las propiedades de los usuarios que se encuentren en este archivo.
Además de esto, smbpasswd accede directamente al archivo smbpasswd,
lo que habilita cambios para que sean hechos solo si el demonio smbd no
esta siendo ejecutado.
smbstatus: Este es un programa muy simple, el cual sencillamente
nos lista las conexiones de samba actuales.
testparm: Este es un simple programa de chequeo, el que verifica
el archivo de configuracion del demonio smbd(8), para así poder correcgir
errores internos. Si este programa no reporta problemas, tú puedes
usar el archivo de configuracion con confianza, ya que el demonio smbd cargará
satisfactoriamente el archivo de configuración.
NOTA: Esto NO garantiza para nada que los servicios especificados en el
archivo de configuración se encontrarán habilitados u operables
como se espera.
SI el nombre opcional del host y la dirección IP del host son especificadas
desde la línea de comandos, este programa de prueba correrá
a través del servicio de entradas, reportando si un host específico
tiene acceso a cada servicio.
Si testparm encuentra un error en el archivo smb.conf este devolverá
un codigo de salida 1 al programa que llama, sino, este devolverá
un codigo de salida 0. Esto permite shell scripts para chequear la salida
proveniente de testparm.
testprn: Este sencillo programa de prueba determina si un nombre
de impresora dado es válido para ser usado como servicio proveido
por smbd(8).
"Valido" en este contexto significa que " puede ser encontrado en el printcap
especificado".
smbmount: Este programa monta un sistema de archivos SMB Linux.
Es usualmente llamado como mount.smbfs por el comando mount(8) cuando es
usada la opción "-t smbfs". Este comando solo funciona en Linux, y
el kernel debe soportar el sistema de archivos smbfs.
swat: Este es un programa que permite al administrador de Samba
configurar el complejo archivo smb.conf() usando el navegador. Adicionalmente,
la página de configuración de swat posee diversos links de
ayuda para todas las opciones permitidas en el archivo smb.conf, haciendo
así más sencilla la tarea del administrador, permitiendole
ver con facilidad cualquier efecto que traiga un cambio que se haya realizado.
Este programa se ejecuta desde el archivo inetd.
Entonces lo primero es iniciar el servidor samba, para asi poder montar
el sistema de archivos de nuestro Windows XP en algun directorio
que tengamos en mente ( yo uso /mnt/samba/winXP y /mnt/samba/win98 ). Esto
lo podemos hacer de tres formas. La primera es iniciandolo manualmente
con los siguientes comandos:
# smbd -D
# nmbd -D
La segunda forma es editando el archivo /etc/inetd.conf y descomentar
las siguientes lineas quitandoles el "#" que se les encuentra antepuesto:
#netbios-ssn stream tcp
nowait root /usr/sbin/smbd smbd
#netbios-ns dgram udp
wait root /usr/sbin/nmbd nmbd
Una vez editado y guardado el archivo debemos proceder a reinicar el
proceso de inetd con el siguiente comando:
# killall -HUP inetd
La tercera forma de ejecutar el servidor Samba cada vez que nuestro
sistema se inice es editando el script de incio del sistema rc.M que se
encuentra ubicado en /etc/rc.d/. En este archivo debemos tener las siguientes
lineas:
# Start Samba (a file/print server for Win95/NT machines).
# Samba can be started in /etc/inetd.conf instead.
if [ -x /etc/rc.d/rc.samba ]; then
. /etc/rc.d/rc.samba start
fi
Además de esto debemos asegurarnos que el archivo /etc/rc.d/rc.samba
tenga los permisos para ser ejecutado, esto lo hacemos con el siguiente
comando:
# chmod 755 /etc/rc.d/rc.samba
Si por alguna razón deceamos que adicionalmente se nos monten
y muestren el o los sistema(s) de archivo(s) remoto(s) debemos editar el
archivo de incio rc.inet2 ubicado en /etc/rc.d/ y verificar que contenga
las siguientes líneas:
# Mount remote (SMB) filesystems:
echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
/sbin/mount -a -t smbfs
# Show the mounted volumes:
/sbin/mount -v -t smbfs
# Done mounting remote (SMB) filesystems.
El primer comando "mount" quiere decir que, todos los sistemas de archivos
de tipo smbfs smencionados en el archivo /etc/fstab sean montados al inicio
del sistema, ya que es ahí donde se ejecutan precisamente, excluyendo
aquellos que contengan la opción "noauto". Y el segundo mount simplemente
nos muestra los sistemas de archivos de tipo smbfs que se hayan montado con
el comando antorior.
Es en este momento donde te estarás preguntado como podría
ser esa línea que va en el fstab y bueno, he aquí la sintaxis
:
[Archivo de sistema remoto a montar] [punto de montaje] [tipo del sistema
de archivos] [opciones de montaje] [nº dump] [nº 0|1|2 fsck]
Para que todo quede más claro aquí les dejo un ejemplo:
//WINXP/SharedDocs /mnt/samba/winxp/
smbfs defaults 0 0
o bien si nos pide password seria asi:
//WINXP/slacky /mnt/samba/winxp smbfs username=slacky,password=slackware,defaults,user
0 0
NOTA: Los directorios que vayamos a compartir deben tener los permisos
"0755" y los archivos los permisos "0555", aunque esto es variable. Si tienes
dudas sobre los permisos en Linux, puedes recurrir a la "Guía de Slackware
9.0" que se encuentra en este mismo sitio.
Ahora debemos editar o mas bien crear nuestro archivo de configuracion
de Samba, el que se encuentra en el directorio /etc/samba/ y se llama "smb.conf".
La configuración de Samba puede ser hecha de dos formas. La primera
es usar swat ( Samba Web Administration Tool ), utilidad que expliqué
más arriba.. Para poder utilizar swat debemos editar nuestro archivo
/etc/inetd.conf, descomentar la siguiente línea y reiniciar el demonio
inetd como se muestra a continuación:
#swat stream
tcp nowait.400 root /usr/sbin/swat swat
y luego :
# killall -HUP inetd
Luego simplemente debemos poner en nuestro navegardor "localhost:901"
en donde se nos pedira user y password y luego podremos ver la utilidad
swat.
La otra forma de configuración de Samba es editar directamente
el archivo smb.conf, lo que describire en las siguiente líneas.
El archivo smb.conf se divine en tres secciones especiales, las cuales
son [global], [homes] y [printers].
Los parametros definidos en la seccion [global] son los que se aplican
al servidor Samba en su totalidad.
Los parámetros definidos en la seccion [homes] son aplicados
cuando uno de los clientes intenta conectarse a un recurso compatirdo que
NO existe en el servidor, pero existe en esta sección, Samba interpreta
esta petición como si se tratara de un nombre de usuario, por lo
que comparte el directorio del usuario en cuestión.
La sección [printers] trabaja de forma similar que [homes], pero
para la(s) impresora(s). Esto permite que un usuario se conecte a cualquier
impresora especificada en el archivo printcap.
A continuacion podrán observar un ejemplo del archivo "smb.conf"
:
-- Inicio Archivo smb.conf --
# Opciones globales para el demonio smbd
[global]
workgroup = Mshome
server string = samba %v
netbios name = Slackware
encrypt passwords = yes
security = share
log level = 2
max log size = 50
log file = /var/log/samba/%m.log
debug timestamp = yes
use client driver = yes
load printers = yes
printing = cups
printcap = cups
# Directorio a compartir en el servidor Samba
[testing]
path = /var/samba/test/
writeable = no
guest ok = yes
browseable = yes
read only = yes
# Impresoras para compartir en la red
[printers]
path = /var/spool/samba
browseable = no
public = yes
guest ok = yes
writeable = no
printable = yes
-- Fin archivo smb.conf --
Con el archivo listo podremos proceder a verificar si tenemos o no errores
en nuestro archivo de configuración con el siguiente comando:
# testparm
Ahora debemos proceder a la configuración de nuestro cliente
Windows 98 siguiendo los pasos que describire a continuación:
Las opciones que utilizaremos a continuación seran resumidas brevemente:
Dirección IP Slackware : 192.168.0.1
Dirección IP cliente win98 : 192.168.0.2
Dirección IP cliente winXP: 192.168.0.3
Mascara de red
: 255.255.255.0
Hemos de tener nuestra tarjeta de red devidamente instalada en el sistema,
lo cual se puede verificar en Proiedades de "MI PC" -> Administrador
de dispositivos. Luego debemos entrar en propiedades de "Entorno de red",
en la pestaña "Configuracion" debemos tener los protoclos NetBEUI
y TCP/IP instalados. Luego seleccionamos el protocolo TCP/IP de nuestra tarjeta
de red y hacemos click en el botoncito de mas abajo que dice "Propiedades",
luego se nos abrira una ventana llamada "Propiedades de TCP/IP", en
donde elegimos la pestaña llama "Direccion IP" y marcamos la opcion
"Espesificar una direccion IP", donde obviamente pondremos la direccion IP
que tendra nuestra tarjeta de red, que es 192.168.0.2, y luego nuestra mascara
de subred que será 255.255.255.0. Luego de esto nos vamos a la pestaña
llama "Puerta de enlace" en donde tecleamos la ip de la tarjeta de red
de nuestro servidor Linux y luego le damos click al boton Agregar. Para
concluir debemos ir a la pestana llamada "Configuracion DNS" y seleccionamos
la opcion Activar DNS, es aqui donde escribimos un nombre para el
campo "Host", el cual puede ser win98 ( ingenioso he? ) y luego en
el campo inferior a "Orden de busqueda del servidor DNS" tecleamos el dns
primario de nuestro ISP, que en mi caso es 206.137.97.254 ( Entel
:|) y luego click en el boton "Agregar" y luego en "Aceptar" y "Aceptar"
. Luego de eso todo estara listo en nuestro cliente, solo nos falta
reiniciar ( es windows :| ) y nuestro cliente estara en condiciones de funcionar
perfectamente.
Con la configuración finalizada de nuestro Windows 98 podemos
proceder a compatir un directorio de la siguiente manera:
Click en boton derecho sobre el directorio ( o carpeta como dicen) que
deceamos compatir, ahora seleccionamos la opcion "Compartir..." lo que nos
dejara dentro de la pestaña Compartir, mostrandonos ahi los campos
que debemos llenar, como lo son "Nombre del recurso compartido" y "Comentario".
Ademas debemos escoger un "Tipo de accesso" al recurso, el cual puede ser
"solo lectura","completo" o "depende de la contraseña. La opcion
"Solo lectura" depende de una contraseña si nosotros lo deceamos,
del mismo modo la alternativa "Completo" depende de una contraseña
si lo deceamos, pero la opcion "Depende de la contraseña" es algo diferente,
ya que se podria decir que es la mezcla de la primera y segunda opcion, lo
que significa que dependiendo de la contraseña que ingresemos al tratar
de utilizar el recurso, el tipo de acceso sera de "solo lectura" o "completo".
Y ahora debemos configurar nuestro cliente Windows XP siguiendo estos
pasos:
Start -> Control Panel -> Network and Internet conections ->
Set up or change your home or small office network -> next -> next
-> This computer connect to the internet through another computer on
my network or through a residential gaterway (segunda opcion), mas claridad
click on "view an example" -> next
Luego debemos rellenar los campos "Computer description", "Computer
name" y despues next.
Ahora debes rellenar "Workgroup name" y click en next.
Luego se nos muestra un resumen con las opciones y campos que hemos
rellenado y click en next para aplicar la configuración al sistema.
Posteriormente de esperar un momento nos aparecerá la última
pantalla ( you´re almost done..).
En mi caso aqui escogere la opcion "Just finish the wizard, I don´t
need run the wizard on other computers" (la última opción)
y hacemos click en siguiente y finalmente hacemos click en finish y todo
estará listo.
Ahora debemos configurar debidamente nuestra ethernet , para esto siguimos
los pasos que mostrare:
Start -> Control Panel -> Network and Internet Connections ->
Network Connections boton derecho sobre la conexion que tengamos creada
en esta seccion, para asi poder reconfigurarla . seleccionamos "properties"
-> selecciona el item "Internet Protocol (TCP/IP)" y luego click en el
boton que dice "Properties" -> seleccionas la opcion llamada " Use the
following IP address " y rellenas los campos pertinentes. A continuacion
la configuracion que yo uso:
IP address : 192.168.0.3
<-- IP
de la ethernet en el Windows XP
Subnet mask: 255.255.255.0
<-- Mascara de subred para el Windows
XP
Default gaterway: 192.168.0.1
<-- IP del Gaterway ( IP ethernet Slackware )
Luego Selecciono la segunda opción de la segunda mitad llamada
" Use the following DNS server address y relleno el primer campo, que como
en mi caso mi ISP ( porveedor servicio Internet ) es Entel, usaré
sus DNS como mostraré a continuación:
Preferred DNS server: 206.137.97.254 <-- DNS primario
de mi ISP
Alternate DNS server:
<-- Lo dejo en blanco
Luego click en "OK" y nuevamente click en "OK" ( mi dedo se gasta tantos
click :( ..)
NOTA: Por si alguien tiene dudas cabe mencionar que la mascara de red
o subred SIEMPRE debe ser la misma para todas las maquinas, en el
caso de este documento es 255.255.255.0 para aquellos que no lo habían
notado :D .
Ahora que nuestro cliente Windows XP se encuentra configurado procedemos
a exportar los recursos compartidos, para esto podemos utilizar los comandos
smbmount o mount.
Una cosa muy importante antes de exportar los recursos es saber que
recursos podemos exportar y cuales no, pues para esto hay un programa llamado
smbclient que nos muestra junto con el host de uno de los cliente su(s)
directorio(s) compartido(s). Su sintaxis es basicamente la siguiente:
smbclient [nombre del servicio] [password] [-b <tamaño del
buffer>] [-d nivel_de_depuracion ]
Por ejemplo:
# smbclient -L win98
Lo que generara una salida mas o menos como esta:
Sharename
Type Comment
---------
----
-------
FLOPPY
Disk
disket
CDROM
Disk
unidad de cdrom
SHAREDDOCS
Disk
IPC$
IPC
Comunicación remota entre procesos
Server
Comment
---------
-------
SLACKWARE
samba 3.0.1
WIN98
windows 98 segunda edicion
Workgroup
Master
---------
-------
MSHOME
WIN98
Como bien describí mís arriba podemos ver los recursos
compartidos del host "win98" junto con sus respectivos comentarios y otros
detalles como su grupo de trabajo ( MSHOME ).
El comando smbmount se utiliza de la siguiente forma:
# smbmount [servicio] [ punto de montaje [ -o opciones]
Por ejemplo:
# smbmount //WINXP/SharedDocs/ /mnt/samba/winxp -o username=pepe,fmask=700,ro
Password: <-- ingresamos password del recurso
EL uso de mount es el siguiente:
mount [Recurso a exportar] [tipo de archivo de sistema a exportar] [
punto de montaje]
Por ejemplo:
# mount //WINXP/SharedDocs -t smbfs /mnt/samba/winxp/
Bueno, eso es todo, espero que este howtito te haya ayudado en todo
lo que tiene relación con Samba de forma básica, también
cabe destacar que esta completamente orientado a Linux Slackware, ya que
es así el enfoque que le dí, pero lo que varía de una
distribución como Redhat o Debian a Slackware es la simple estructura
de sus directorios. Si tienes dudas o si deceas saber más sobre parametros
que utilicé en este documento u alguna otra opcion relacionada con
lo que leiste a lo largo de él, tienes a tu disposición el man,
info, google, la misma herramiento de administracion de Samba ( swat ) trae
una gran cantidad de ayuda y definiciones, y si esto no te es suficiente siempre
podras recurrir a Google o ver la documentacion de Samba en su sitio web
http://www.samba.org/. Mi intención NO es la de detallar alguno de
los comandos, archivos o conceptos que han sido utilizados a lo largo de
este documento.