Samba es una implementación para Linux del protocolo SMB (Server Message Block), con el que podremos acceder (por TCP/IP) a servidores SMB como cliente, o montar un servidor SMB propio. Con Samba podemos hacer básicamente cuatro operaciones:
- Compartir una unidad Linux con máquinas Windows
- Compartir una unidad Windows con máquinas Linux
- Compartir una impresora Linux con máquinas Windows
- Compartir una impresora Windows con máquinas Linux
Antes de empezar, hemos de tener instalado Samba. Concretamente el paquete samba-server si queremos que se pueda acceder nuestro ordenador Linux, y samba-client si queremos acceder a un ordenador Windows. Una vez instalado, tendremos dos demonios corriendo llamados: smbd y nmbd, que hacen referencia a los demonios de SMB y Netbios respectivamente.
Dicho esto vamos a ver los pasos principales para configurar nuestro servidor y cliente de Samba.
1) Configurando usuarios para acceder a los recursos compartidos
Hemos de elegir un usuario (o usuarios) para darles permiso de acceso a los recursos compartidos. Si usamos un Windows anterior al NT, este usuario tendrá que existir obligatoriamente en Windows con el mismo nombre y la misma contraseña que en Linux; en Windows a partir de NT esto no será necesario.
Podemos crear un usuario expresamente para acceder a Samba (useradd <usuario> ya sería suficiente) o simplemente utilizar un usuario que ya exista en el sistema. Nosotros usaremos como ejemplo el usuarioNacx.
Añadimos el usuario a la lista de usuarios de Samba (que se encuentra en el fichero /etc/samba/smbpasswd, con el comando (como root):
# smbpasswd -a Nacx
Le pondremos la misma contraseña que tiene el usuario en el sistema.
2) Revisando el fichero de configuración
El fichero de configuración es: /etc/samba/smb.conf. Está muy bien comentado y explicado cada apartado, pero veremos aquí los puntos más importantes. Sólo root tiene permisos para modificar este fichero, así que deberemos ser root para poder continuar.
Grupo de trabajo:
Antes de nada hemos de cambiar la línea:
workgroup = <grupo_de_trabajo>
Y poner el nombre de nuestro grupo de trabajo. Para poder compartir ficheros, es importante que tanto en Linux como en Windows usemos el mismo grupo de trabajo.
Configurar acceso:
Ahora modificaremos la siguiente línea para dar acceso a los PC que queramos. Por ejemplo podría ser algo asi (evidentemente cambiando las direcciones IP por las propias IPs locales):
hosts allow = 192.168.0. localhost
Con esto daríamos acceso a localhost y a todas las máquinas desde 192.168.0.1 hasta 192.168.0.255
Ahora especificamos los usuarios que podrán utilizar Samba (los que hemos añadido con el método explicado al principio). Para ello revisaremos las siguientes líneas:
encrypt passwords = yes
; guest account = nobody
valid users = Nacx
La primera línea es necesaria para decir que usaremos contraseñas encriptadas. Es necesaria sobretodo si usamos un Windows anterior a NT, ya que sin ella no nos funcionará. En la tercera línea podemos definir los usuarios a los que permitimos acceso. La segunda esta comentada (tiene el ; delante). Si la descomentamos (quitando el 😉 permitiríamos que se pudiera acceder con ese nombre de usuario y sin contraseña a modo de Invitado, pero en principio la dejaremos comentada. Si quisiéramos permitir el acceso anónimo la descomentaríamos y no pondríamos al línea valid users. Esta última línea podríamos ponerla en algún recurso compartido para limitar los usuarios de ese recurso, pero no en la sección global.
Definir los recursos compartidos:
Ahora iremos a la sección [Share Definitions] que es donde se definen los recursos que queremos compartir. Veremos algo así:
[homes]
comment = Home Directories
browseable = no
writable = no
create mask = 0700
directory mask = 0700
Y lo cambiaremos por lo siguiente:
[homes]
comment = Home Directories
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
Con esto estamos configurando el acceso a los directorios home de los usuarios. Es decir, cada usuario de Samba comparte su directorio home con esta configuración. Así cuando desde Windows cada usuario verá su directorio home (y cada uno sólo podrá ver el suyo, ya que pedirá contraseña). Para no compartir el home de los usuarios basta comentar toda la sección [homes] poniendo un # delante.
Concretamente, con este cambio hemos permitido navegar por el directorio (browseable = yes), permitimos escribir en él (writeable = yes) y hemos dicho que los ficheros y directorios que se creen lo hagan con permisos rwx (create mask y dirctory mask).
Si quisiéramos compartir algún otro directorio, añadiríamos al fichero una entrada del tipo:
[nombre para el recurso compartido]
comment = Mi directorio compartido
path = /tmp/directorio
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
El nombre del recurso compartido puedes poner el que quieras. Lo importante es que en la línea path = <directorio> pongas la ruta al directorio que quieres compartir. Puedes incluir también la línea de valid users = <usuario> para restringir el acceso a ese directorio a determinados usuarios.
También para crear un direcorio público se puede incluir la línea public = yes para que se puedan tener accesos anónimos a ese directorio, e incluir guest only = yes para que los accesos a él únicamente puedan ser anónimos.
Más adelante hay una sección [printers] que es para compartir las impresoras, pero de momento no lo explicaremos aquí.
3) Reiniciando Samba
Una vez hemos terminado de adaptar a nuestras necesidades el fichero de configuración, lo guardamos y salimos. Podemos utilizar el comando testparm para comprobar nuestra configuración.
Como hemos modificado el fichero de configuración de un demonio que estaba en marcha, tenemos que reiniciarlo para que cargue su nueva configuración (tendremos que reiniciarlo cada vez que modifiquemos el fichero de configuración). Lo haremos así (evidentemente como root):
# /etc/init.d/smb restart
Una vez hecho esto, ya tendremos el servidor de Samba funcionando con la nueva configuración.
4) Accediendo a los recursos compartidos
Ahora que ya tenemos configurado el servidor sólo nos queda poder acceder a los recursos compartidos. Tanto desde Windows como desde Linux se puede acceder de forma muy sencilla.
Accedo desde Windows a Linux
Desde Windows podemos acceder a los recursos compartidos en la máquina Linux simplemente utilizando el Entorno de Red y navegando por los recursos que encontremos.
Acceso desde Linux a Windows
Para acceder a los recursos compartidos por Windows, si usamos Konqueror o Nautils, es tan simple como escribir en al barra de direcciones:
smb://nombre_maquina_windows
De todos modos, disponemos también de herramientas gráficas que van muy bien y hacen esta tarea tan sencilla como navegar por directorios. Algunas de ellas son:
- komba
- smb4k
- xfsamba
También podemos utilizar la línea de comandos de la siguiente manera:
- smbclient -L <host> Nos muestra los recursos compartidos en el equipo <host>. Podemos especificar el usuario (la contraseña la preguntará) con smbclient -L <host> -U <usuario>
- smbmount //host/nombredelrecurso /mnt/samba Nos montara el recurso compartido llamado nombredelrecurso en el directorio /mnt/samba. Antes de hacer esto, el directorio /mnt/samba debe existir. Una vez montado podremos navegar por /mnt/samba como si fuera el directorio compartido de windows. Para especificar el nombre de usuario usaremos: smbmount //host/nombredelrecurso /mnt/samba -o username=<usuario>
- smbumount /mnt/samba Desmontara el recurso compartido que habíamos montado en /mnt/samba. Hay que hacerlo antes de apagar el ordenador windows, ya que si no saldrán mensajes de error.
- nmblookup <host> Nos devuelve la Ip del <host> presente en la red.
- nbtscan <red/mascara> Nos escaneara la red en busca de equipos que comparten recursos. Por ejemplo: nbtscan 192.168.0.0/24 nos escanearía la red en busca de equipos.
- smbstatus Nos permite ver quien está conectado al servidor Samba.
Pero como hemos dicho antes, las herramientas gráficas nos facilitan enormemente esta tarea y combinan los comandos anteriores para que podamos trabajar de forma más cómoda y podamos olvidarnos de estas instrucciones.
Samba en el fichero /etc/fstab
Podemos automatizar el montaje de recursos compartidos mediante Samba añadiéndolos al fichero /etc/fstab (ver capítulo montar dispositivos). Simplemente hemos de añadir una línea teniendo en cuenta los siguientes datos:
- Dispositivo: Recurso que queremos montar, siguiendo esta sintaxis: //host/recurso
- Punto de montaje: El directorio donde queramos montarlo (debe existir)
- Sistema de ficheros: smbfs
- Opciones: Aparte de las habituales: username=<usuario>,password=<contraseña>. Si se omiten nos lo pedirá cuando intente montarlo.
Un ejemplo podría ser (nos pedirá contraseña al montar ya que no la hemos especificado):
//despacho/Compartidos /mnt/samba smbfs username=Nacx,user,noauto,rw 0 0
El resto de parámetros no varian respecto al montaje de otro tipo de dispositivos. Una vez configurado el recurso compartido en el fichero /etc/fstab podemos montarlo y desmontarlo utilizando el comando mountcomo si de un dispositivo corriente se tratara.
Afinando las opciones
Si en cambio queremos que el montaje sea automatico deberiamos colocar algo como:
//despacho/Compartidos /mnt/samba smbfs username=Nacx,password=nueces,user,noauto,rw 0 0
de esta forma el recurso seria montado sin solicitarnos un password.
Debido a que el archivo /etc/fstab posee permisos de lectura para cualquier usuario del sistema, que el password en este archivo conlleva un problema de seguridad.
La alternativa consiste en utilizar un fichero de credenciales (opción de montaje credentials=FICHERO), donde escribimos el nombre del usuario y su contraseña. A pesar de que la contraseña en dicho fichero también se escribe en texto plano, resulta suficiente que dicho fichero pueda ser leído por el usuario que realiza el montaje (por ejemplo, root, si es un montaje automático durante el inicio, o Nacx si ese usuario va a montar el recurso a mano), lo cual permite un nivel de seguridad un poco mayor. Podemos quitar los permisos y evitar que alguien indeseado lea el fichero con: chmod go-rw <fichero>
Con esto nuestra linea en el fstab seria algo como
//despacho/Compartidos /mnt/samba smbfs credentials=/etc/mountsmbxx,user,noauto,rw 0 0
como digimos el archivo /etc/mountsmbxx debe poder ser leido por el usuario que quiere realizar el montaje.(Notese que el nombre del archivo es de eleccion personal)
Dicho archivo contendria:
username = Nacx
password = nueces
workgroup = GRUPO_DE_TRABAJO
(este dato es opcional, pero en caso de ser necesario deberia indicarse, el nombre del grupo de trabajo o el nombre del dominio)
Una muy buena opcion si queremos que el recurso este disponible para todos los usuarios del sistema es montar el recurso al iniciar el sistema, quedando nuestra linea de la siguiente forma:
//despacho/Compartidos /mnt/samba smbfs credentials=/etc/mountsmbxx,dmask=777,fmask=666,user,auto,rw 0 0
dmask=777
es para que los directorios tengan esos permisos.
fmask=666
es para que los archivos tengan esos permisos.
Si en cammbio queremos que solo un grupo de usuarios acceda al recurso mnuestra linea seria de la siguiente forma:
//despacho/Compartidos /mnt/samba smbfs credentials=/etc/mountsmbxx,dmask=770,fmask=660,gid=accesosmb,user,auto,rw 0 0
gid=accesosmb
De esta foma solo el grupo accesosmb tendra acceso al recurso (leer,ecribir,borrar)
Para más detalles de estas opcion consultar la página de manual smbmount(8).
Tutorial elaborado por Nacx para ADSLAyuda.com