domingo, 17 de abril de 2011

Compartir carpetas en sistemas Libres



Compartir carpetas en sistemas Libres

Bueno, ahora que tengo GNU-Linux Debian Squeeze en 2 equipos, (mi cuarto esta full de software libre |_|) me propuse compartir mis archivos en red, intenté directamente abrir mi Panel de Gnome,
hacer clic en lugares y luego en Red y adivinen que, no aparecen mis equipos (hora de aprender un poco).

Bueno, existe un protocolo estándar para compartir carpetas de red en entornos UNIX / Linux, su nombre es NFS. Sabiendo eso me puse a investigar que necesitaba para oner a trabajar ese protocolo, dado que hace uso del modelo cliente/servidor, necesitaremos definir si queremos que nuestro computador vea datos (cliente) o comparta los datos (servidor), si deseamos que el equipo haga ambas cosas (que es lo más común) necesitaremos instalar tanto el cliente como el servidor de NFS.

Procedemos primero a instalar NFS para SERVIDORES.
Lo busco en los paquetes que me proveen mis repositorios
sudo aptitude search nfs-kernel-server

Y lo instalo en el equipo
sudo aptitude install nfs-kernel-server


Por alguna razón se me indicó que desinstalaría portmap, en mi caso pude continuar y compartir los datos sin esa aplicación.
Verifiqué que tuviera instalado el nfs-common que es quien me provee el soporte de archivos para los clientes y servidores de nfs, en realidad es un conjunto de aplicaciones (códigos), pero los necesitamos. Hago uso de
sudo aptitude show nfs-common

Y en la información que me suministra me indica que el paquete SI se encuentra instalado en mi equipo

Hago un pausa aquí pues en el siguiente paso necesitaremos conocer nuestra IP, para eso debemos utilizar el comando
sudo ifconfig
En mi caso particular me encuentro con que mi dirección IP actual es
inet addr:192.168.0.101


Ahora bien, ya instalamos en nuestro equipos los programas necesarios para compartir información, ahora sólo debemos indicarle a los servidores cuales son las carpetas que deseamos compartir; para esto debemos editar el archivo /etc/exports, usando el editor de texto de su preferencia.
sudo gedit /etc/exports


Continuamos añadiendo ahora una línea que le indique al servidor cual es el directorio a compartir y las máquinas con las que desea compartirse esa información, adicionalmente se le dan ciertos parámetros de exportación, veremos el formato y un ejemplo de la línea (en este caso, la línea que yo utilicé)

Formato
directorio_a_compartir equipos_con_las_que_compartir(opciones_de_exportación)
Ejemplo
/home/raite 192.168.0.1/24(rw,no_root_squash,async,no_subtree_check)


En mi caso, yo deseo compartir toda la carpeta de mi home, por eso indico /home/raite, deseo igualmente compartirla con todos los equipos de mi red, por eso coloco el rango de las direcciones IP como 192.168.0.1/24.
Ahora explicaré que parámetros se pueden utilizar y su efecto.


  • ro: Compartir el directorio en modo sólo lectura.

  • rw: Compartir el directorio en modo lectura/escritura.

  • root_squash: Para conseguir que un usuario root del cliente no pueda escribir con permisos de root en el directorio compartido.

  • no_root_squash: Hace que se permita que un usuario root del cliente pueda escribir con permisos de root en el directorio compartido.

  • sync: Hace que el servidor no atienda peticiones antes de que los cambios hechos por una petición de escritura sean realizados en el disco.

  • async: Hace que el servidor atienda peticiones sin comprobar si los cambios hechos por una petición de escritura se han escrito en disco. Es la opción por defecto, si no se especifica nada.

  • subtree_check: Si se exporta un subdirectorio (no un sistema de ficheros completo) al producirse una petición de un fichero, el servidor comprueba que el fichero solicitado esté en el árbol de directorios exportado.

  • no_subtree_check: Desactiva la comprobación de subtree_check.



Nota, inicialmente yo había omitido el parámetro "no_subtree_check" y el sistema me indicó que igualmente lo estaba tomando, así que da lo mismo ponerlo o no.

Ahora debemos exportar la configuración de ese archivo para que el equipo la tome.
sudo exportfs -a


Y por último reiniciamos el servidor
sudo /etc/init.d/nfs-kernel-server restart


Dado que a mi me gusta comprobar que las cosas estén funcionando tal y como lo deseo, hice uso de un comando que me indica lo que está pasando con mis servicios, enumerando así todos los programas registrados en el asignador de puertos del equipo.
sudo rpcinfo -p


Ese comando provee una salida bastate amplia en algunos casos, sin embargo yo mostraré aquí lo que me dijo en los puertos correspondientes nfs

program vers proto port service
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs


Perfecto, hecho esto, ya hemos configurado nuestro servidor para que comparta la información, intenté entonces acceder desde mi otro equipo a mi Menú de Gnome/Lugares/Red y me encuentro con que sigo sin ver mi equipo (rayos, que lata, que me falta).
Pues resulta que necesitamos configurar el servidor y decirle que monte en una ubicación nuestra carpeta compartida, para tal efecto ejecutaremos los siguientes pasos.

Procedemos primero a instalar NFS para Clientes:

Primero, hice una carpeta en mi home del cliente para allí cargar toda la carpeta que deseo ver del servidor, por razones de facilidad la cree desde mi interfaz gráfica, pero si prefieren comandos pues hagan un mkdir /home/raite/Red (como verán, mi carpeta se llama Red, no olviden que GNU/Linux si es case sensitive, o sea, si diferencia las mayúsculas y minúsculas, cosa que Guindows no hace jejeje).

Luego hice uso de un comando que me indica cuales son las carpetas que me permite montar el servidor
sudo showmount -e 192.168.0.101


Obteniendo entonces la siguiente salida
Export list for 192.168.0.101:
/home/raite 192.168.0.1/24


Perfecto, eso fue lo que yo especifiqué en mi Lista de exportación (el archivo que editamos en el servidor). Ahora sólo me queda montar ese directorio en mi equipo cliente (el cual debe tener instalado el paquete nfs-common, en caso de que no lo tengan, instalenlo)
sudo mount 192.168.0.101:/home/raite /home/raite/Red


Y ahora pueden acceder desde su interfaz gráfica a la carpeta /home/raite/Red y ver desde el cliente los archivos compartidos del servidor.

Desde todo equipo del cual deseen compartir información deben ejecutar los pasos de Servidores, y desde todo equipo del cual deseen leer información, deben efectuar los pasos de Clientes.

Todo esto no habría sido posible sin la ayuda de las siguientes páginas


Haz clic en la imagen para que veas un screeshot que muestra la velocidad de transferencia entre los dos equipos que he configurado siguiendo estos pasos. Vale acotar que esa es la velocidad con ambos conectados por wifi, imaginate como sería si fuera por red cableada :D :O

2 comentarios:

Jarreth Duarte dijo...

MUCHAS GRACIAS. otros manuales se me hacen muy dificiles, de verdad ayudo mucho

Anónimo dijo...

El mejor tutorial que he visto acerca del uso de servidores y clientes nfs para compartir archivos en distribuciones gnu7linux. Gracias me funciono al 100%