viernes, 11 de julio de 2025

Sistemas operativos 7.- Compartir archivos en red mediante NFS

  ¿Te pierdes entre tantos temas? 📚✨ Descubre todo lo que ofrece este blog en un solo vistazo [👉 Ver índice completo]

NFS (network file system) o sistema de archivos en red, es un protocolo que nos va a permitir acceder a archivos y directorios en otros ordenadores como si estuvieran ubicados localmente en el nuestro. Es un sistema de archivos distribuido que opera bajo el modelo cliente servidor, sobre todo en sistemas Linux, donde un servidor NFS comparte sus archivos y directorios, y los clientes pueden acceder a ellos a través de la red. NFS comparte para equipos mientras que como veremos posteriormente otro protocolo llamado samba comparte para usuarios.

Para verlo mejor vamos a partir de dos máquina con Linux instalado y en ambas, lo primero que tenemos que hacer es instalar este protocolo. Se suele instalar en ambas máquinas el protocolo cliente y servidor porque es normal que a veces una máquina sirva unas cosas y la otra otras. Que un ordenador tenga instalado los paquetes NFS, no significa que automáticamente este compartiendo su sistema de archivos en la red. Para ello es necesario configurar y arrancar el servicio.

El ejemplo que presento lo voy a hacer entre una Rapsberry que actuará de servidor y una máquina virtual que será el PC cliente. También lo puedes hacer creando dos máquinas virtuales, con conexión de red en modo bridge. Lo importante es que ambas máquinas estén en la misma red. Para ver si están correctamente conectadas hay que probar si ambas máquinas se ven en la red utilizando el comando "ping". Para saber cual es la IP de tus máquinas usa el comando "ifconfig" y luego utiliza el comando ping para ver si ambas máquinas se ven bien en la red.

máquina haciendo ping

Cada pc tiene que hacer ping con la ip de la otra máquina correctamente, si no, no podrás compartir los archivos.

  1. Instalar NFS en ambas máquinas.

    sudo apt-get install nfs-common nfs-kernel-server

    // nfs-common es el modulo para instalar el cliente de nfs
    // nfs-kernel-server es el módulo para instalar el servidor de nfs

  2. Configurar el servicio NFS en el servidor, es decir en el equipo donde se van a compartir las carpetas. Tenemos que hacerlo como root. 
    Antes de arrancar el servicio NFS es necesario indicar que carpetas queremos compartir y si queremos que los usuarios accedan con permisos de solo lectura o de lectura y escritura. También existe la posibilidad de establecer que PC´s pueden conectarse. Estas opciones se configuran en el archivo /etc/exports

    En cada línea del archivo de configuración del servidor NFS /etc/exports, se puede especificar:
    - La carpeta que se quiere compartir.
    - Desde que PC o PC´s se permite el acceso (nombre o IP del PC o rango de IP´s)
    - El modo en el que se comparte (solo lectura 'ro' o lectura y escritura 'rw')

    Por ejemplo, compartir la carpeta /casitodos (que ya tiene que estar creada y con todos los permisos) del servidor en modo lectura y escritura para las máquinas de la dirección de red 192.168.1.0, se añade, en el fichero /etc/exports la siguiente línea:

    /casitodos    192.168.1.0/255.255.255.0(rw)

    Si queremos compartir la carpeta /sololec (que ya tiene que estar creada) del servidor en el modo solo lectura para el equipo con IP 192.168.1.118, se añade, en el fichero /etc/exports la siguiente línea:

    /sololec 192.168.1.118(ro)

    Si queremos compartir la carpeta /todos (que ya tiene que estar creada) del servidor en modo solo lectura para todos los ordenadores, se añade en el fichero /etc/exports la siguiente linea:

    /todos *(ro)

    Por lo que el fichero /etc/exports nos quedaría de la siguiente manera:

    archivo /etc/exports

    ¡¡IMPORTANTE!! Los  permisos  de  compartición  por  NFS  no  excluyen  a  los  permisos  del  sistema Linux, sino  que prevalecen los más restrictivos. Si una carpeta está compartida con permiso NFS de lectura y escritura pero en los  permisos  del  sistema  solo  disponemos  de  permiso  de  lectura,  no  podremos  escribir.  Si  una carpeta  está compartida con permisos NFS de lectura y disponemos de permisos de lectura y escritura en el sistema, tampoco podremos  escribir.  Para  poder  escribir  necesitaremos  disponer  permiso  de  lectura  y  escritura  tanto  en  los permisos del sistema como en los permisos de compartición NFS.


  3. Arranque y parada de NFS(en el equipo servidor)

    Para arrancar el servidor NFS se ejecuta el comando(como root):

    //Arranque del servidor NFS
    sudo service   nfs-kernel-server  start

    Este comando iniciará los procesos necesarios que necesita NFS para su funcionamiento.
    Si deseamos detener el servidor NFS, debemos ejecutar:

    //Parada delservidor NFS
    sudo service   nfs-kernel-server   stop

    Si deseamos reiniciar el servidor NFS, debemos ejecutar:

    //Reinicio delservidor NFS
    sudo service   nfs-kernel-server   restart

    Cada vez que modificas el fichero /etc/exports hay que reiniciar el servicio.


  4. Acceso a carpetas compartidas por NFS (en el equipo cliente, equipo que accede a las carpetas compartidas en el servidor)

    Para poder acceder desde un PC a una carpeta compartida por NFS en un servidor, es necesario montar la  carpeta  compartida  en  nuestro  sistema  de  archivos.  De esta manera,  el  acceso  a  la  carpeta  compartida  es exactamente  igual  que  el  acceso  a  cualquier  otra  carpeta  de  nuestro  disco  duro (o  como  si  montásemos  un dispositivo).

    Por ejemplo,  supongamos  que  un  servidor (con  IP  192.168.1.200) comparte  por  NFS la carpeta  llamada  /todos (anteriormente  compartida).  En  el  PC  cliente  podemos  crear  una  carpeta  llamada  /cliente (punto  de  montaje) y montar  sobre  ella  la  carpeta  compartida  en  el  servidor.  Para  ello,  en  el  cliente  y  como root, ejecutaríamos  el siguiente comando:

    //Montar carpeta compartida por NFS
    sudo mount  -t  nfs  192.168.1.200:/todos  /cliente

    A partir de este momento, podemos comprobar que nuestra carpeta /cliente, contiene la información de la carpeta /todos del  servidor.  Si  disponemos  de  permisos  de  lectura  y  escritura,  podemos  incluso  crear  o  modificar  los archivos dentro de nuestra carpeta /cliente y los cambios se estarán guardando realmente en la carpeta /todos del servidor.

    Para  realizar  el  montaje,  debemos  hacerlo  sobre  una  carpeta  existente  en  nuestro  sistema.  Si  dicha  carpeta  de nuestro  sistema  contiene  archivos,  estos  no  estarán  accesibles  ya  que  la  carpeta  nos  mostrará  los  archivos remotos.

    Si  deseamos  que  nuestro  PC  monte  siempre  de  forma  automática  una  carpeta  compartida  por  NFS  cuando iniciemos nuestro Linux, existe la posibilidad de añadir en el archivo /etc/fstab una línea como, por ejemplo:

    //Montaje automático al iniciar el PC
    #añadir en el fichero /etc/fstab del cliente
    ip-del-servidor:/carpeta_servidor  /carpeta_cliente   nfs    auto,user,rw

    De esta manera,   cuando   arranquemos   nuestro   PC,   la   carpeta   /carpeta_servidor del servidor   quedará automáticamente montada sobre nuestra carpeta /carpeta_cliente y no tendremos que ejecutar el comando mount. Un  usuario  también  podrá  acceder  a  la  carpeta  compartida  montando  la  carpeta (de  la  misma  forma  que  lo hacíamos con una partición).

No hay comentarios:

Publicar un comentario