robot de la enciclopedia para niños

Network File System para niños

Enciclopedia para niños
Datos para niños
Network File System
(NFS)
Familia Protocolos de sistema de archivos en red
Función Acceso a sistema de archivos vía red.
Última versión NFSv4
Puertos 2049
Ubicación en la pila de protocolos*
Aplicación NFS
Presentación XDR
Sesión ONC RPC
Transporte TCP o UDP
Red IP
* según el Modelo OSI
Estándares
RFC 1094 (versión 2)
RFC 1813 (versión 3)
RFC 3530 (versión 4)

El Network File System (NFS), que significa "sistema de archivos de red", es un protocolo especial que permite a las computadoras compartir archivos a través de una red. Imagina que tienes varios ordenadores conectados en tu casa o en la escuela. Con NFS, estos ordenadores pueden acceder a los archivos de los demás como si estuvieran guardados en su propio disco duro.

NFS fue creado en 1984 por Sun Microsystems. Su objetivo principal era que funcionara bien sin importar el tipo de computadora, el sistema operativo o cómo se enviaban los datos por la red. Esto fue posible porque se basa en otros protocolos como XDR y ONC RPC. Hoy en día, NFS viene incluido en sistemas operativos como UNIX y la mayoría de las distribuciones Linux.

  • Un sistema NFS tiene dos partes principales: un servidor y uno o más clientes. El servidor es la computadora que guarda los archivos, y los clientes son las computadoras que acceden a esos archivos de forma remota.
  • Cuando los archivos están en un lugar centralizado (el servidor), las computadoras cliente necesitan menos espacio en sus propios discos. Además, muchas personas pueden acceder y cambiar los mismos archivos sin tener copias duplicadas.
  • Los usuarios no necesitan tener una carpeta personal ("home") en cada computadora que usen. Pueden crear su carpeta personal en el servidor NFS y acceder a ella desde cualquier computadora conectada a la red.
  • También se pueden compartir otros dispositivos, como unidades de CD-ROM o unidades ZIP, a través de la red. Esto ayuda a usar mejor el equipo disponible.

Todas las acciones que se hacen con los archivos, como guardar o leer, son "síncronas". Esto significa que el servidor no le dice al cliente que terminó hasta que ha guardado los datos físicamente en el disco. Esto asegura que los archivos estén siempre completos y correctos.

¿Cómo funciona NFS?

Imagina que quieres acceder a una carpeta de archivos que está en otra computadora (el servidor NFS) desde tu propia computadora (el cliente). Para hacer esto, se usa un comando especial.

Por ejemplo, si el servidor se llama "computadora_remota" y tiene una carpeta llamada "/home", y tú quieres verla en tu computadora como si fuera una carpeta local llamada "/mis_archivos", usarías algo así:

# mount -t nfs computadora_remota:/home /mis_archivos

Este comando le dice a tu computadora que se conecte con un programa especial en el servidor llamado rpc mountd. El servidor revisa si tu computadora tiene permiso para ver la carpeta "/home". Si todo está bien, la carpeta se "monta" en tu computadora. A partir de ese momento, cuando abres la carpeta "/mis_archivos" en tu computadora, en realidad estás viendo los archivos de la carpeta "/home" en el servidor remoto.

Una vez que la carpeta está montada, la seguridad de los archivos depende de los permisos que tengan. Cuando accedes a un archivo en esa carpeta compartida, tu computadora envía una solicitud al servidor. Esta solicitud incluye tu identificación de usuario y grupo, para que el servidor pueda verificar si tienes permiso para ver o cambiar ese archivo.

¿Cómo se usa NFS normalmente?

En un sistema como Unix, si una computadora (el cliente) necesita acceder a datos guardados en otra computadora (el servidor NFS), esto es lo que suele pasar:

  • El servidor tiene programas especiales llamados "demonios NFS" (como `nfsd`) que hacen que sus datos estén disponibles para los clientes.
  • El administrador del servidor decide qué carpetas se pueden compartir. Esto se hace configurando un archivo especial y usando un comando.
  • El servidor se asegura de que solo las computadoras autorizadas puedan acceder a los archivos.
  • La red del servidor se configura para que las computadoras cliente puedan comunicarse con él, incluso si hay un cortafuegos.
  • Tu computadora (el cliente) pide acceso a los datos compartidos, normalmente con un comando de "montaje". El cliente pregunta al servidor qué puerto usa el servicio NFS, se conecta a él, y el servidor procesa la solicitud.
  • Si todo funciona bien, puedes ver y usar los archivos del servidor como si estuvieran en tu propia computadora, siempre dentro de los permisos que tengas.
  • A veces, este proceso de conexión se puede hacer de forma automática cuando enciendes la computadora.

Este sistema es muy útil para que en una red local, diferentes equipos puedan acceder y compartir archivos. Así, una computadora puede ver la información de otra como si fuera un disco duro adicional. NFS se enfoca en que los archivos estén siempre correctos, incluso si se escriben muchos datos.

Uno de los usos principales de NFS es tener todos los archivos importantes en un solo servidor. Esto significa que las otras computadoras no necesitan tener mucho espacio de almacenamiento y pueden acceder a los archivos de forma remota para leerlos o descargarlos. Es especialmente útil cuando muchas personas necesitan modificar los mismos archivos.

Ventajas de NFS

  • Varias computadoras pueden acceder a los mismos archivos al mismo tiempo.
  • Ayuda a que las computadoras cliente necesiten menos espacio en sus discos duros.
  • Cualquier usuario autorizado puede cambiar y actualizar los archivos.
  • Funciona con muchos tipos diferentes de computadoras.
  • Es una forma económica de compartir archivos en una red.
  • La administración de los archivos se hace desde un solo lugar, lo que reduce la necesidad de instalar programas en cada computadora y ahorra espacio.

Desventajas de NFS

  • Seguridad: Es mejor usarlo solo en redes seguras y detrás de un cortafuegos, ya que las versiones antiguas no tienen mucha seguridad para usuarios individuales.
  • Puede ser un poco lento al leer archivos muy grandes.
  • No es tan fácil controlar quién puede bloquear un archivo o dar permisos muy específicos en las versiones antiguas.

Cliente NFS

El cliente NFS es la parte que permite a tu computadora usar los archivos del servidor. Funciona como si fuera parte del sistema operativo de tu computadora. Se encarga de pedir los archivos al servidor y de enviarlos. Para que todo sea más rápido, el cliente guarda una copia temporal de los archivos que usa con frecuencia en una memoria especial llamada "caché".

Memoria caché

El cliente NFS guarda en su caché los resultados de operaciones como leer, escribir o buscar archivos. Los clientes son responsables de preguntar al servidor si los datos en su caché siguen siendo los más recientes.

Para mantener la caché actualizada, cada archivo tiene dos marcas de tiempo: una de la última vez que se revisó y otra de la última vez que se modificó en el servidor. Si un archivo en la caché es demasiado "viejo", el cliente pregunta al servidor si ha cambiado. Si no ha cambiado, la copia en la caché se considera válida y se actualiza su marca de tiempo. Si ha cambiado, el cliente descarga la nueva versión.

Aun así, pueden surgir problemas si dos clientes cambian el mismo archivo al mismo tiempo. Para evitar esto, se usa un sistema de "bloqueo de archivos" con un protocolo llamado Network Lock Manager (NLM). Esto asegura que solo una persona pueda cambiar un archivo a la vez.

Servidor NFS

El servidor NFS es la parte del sistema operativo Linux que se encarga de recibir las solicitudes de los clientes. Puede manejar peticiones para archivos simples o para sistemas de archivos más complejos.

El servidor también ofrece servicios para montar carpetas, controlar quién puede acceder a los archivos y tiene su propia memoria caché.

Memoria caché del servidor

Hay dos formas principales de asegurar que los datos se guarden correctamente en el servidor:

  • Write-through: Los datos se guardan en la caché y se escriben en el disco físico antes de que el servidor le diga al cliente que la operación terminó. Esto es muy seguro.
  • Commit: Los datos se guardan solo en la caché del servidor. Solo se escriben en el disco cuando el cliente envía una operación de "commit" (confirmación). Esto puede ser más rápido, pero menos seguro si el servidor se apaga de repente.

Los programas más importantes que necesita el servicio NFS en el servidor son:

  • rpc.mountd: Este programa se encarga de las solicitudes para montar carpetas. Revisa si la carpeta está compartida y si el cliente tiene permiso para acceder a ella.
  • rpc.nfsd: Este programa es el que realmente sirve los archivos. Puede haber varias copias de este programa funcionando al mismo tiempo. Usa el puerto 2049.
  • rpc.portmap: Ayuda a los clientes a encontrar dónde están los servicios en el servidor. Es muy importante y debe estar funcionando primero. No se usa en NFSv4.
  • rpc.lockd: Trabaja con el bloqueo de archivos para asegurar que no haya problemas si varias personas intentan cambiar el mismo archivo al mismo tiempo. Funciona tanto en el servidor como en el cliente.
  • rpc.statd: Este programa trabaja con `lockd` para ayudar a recuperar el sistema si hay una caída. Guarda información sobre qué clientes tienen archivos bloqueados en el servidor. Cuando el servidor se recupera, `statd` les avisa a los clientes para que puedan resolver los bloqueos.

Seguridad en NFS

Para que tu servicio NFS sea más seguro, es importante tener en cuenta algunos puntos:

  1. Usa los caracteres especiales (como `*`) lo menos posible al configurar los permisos, para no dar acceso a más computadoras de las que quieres.
  2. Usa reglas de cortafuegos (como Iptables) para limitar el acceso a los puertos que usan los programas de NFS.
  3. Configura los archivos `/etc/hosts.allow` y `/etc/hosts.deny` para controlar qué computadoras pueden conectarse.
  4. Si es posible, comparte las carpetas solo para lectura (ro), así nadie podrá cambiarlas.
  5. Asegúrate de que el dueño de los archivos compartidos sea el usuario "root" (el administrador), ya que es posible que otros usuarios se hagan pasar por "root" si no se configura bien.
  6. Intenta que los archivos compartidos no tengan permiso de escritura para grupos de usuarios.
  7. Las versiones 2 y 3 de NFS no controlan el acceso por usuario específico. Esto significa que si una carpeta se comparte, cualquier usuario de una computadora conectada al servidor NFS podría acceder a los datos. La única forma de seguridad es usar acceso de solo lectura o asignar un usuario y grupo genérico.
  8. Si no usas la opción squash al compartir, un usuario administrador en una computadora cliente podría obtener permisos especiales. Es importante activar alguna opción de squash.
  9. La versión más segura de NFS es la 4.

Kerberos

NFS normalmente incluye la identidad del usuario en las solicitudes al servidor, pero solo para comparar con los permisos, no para verificar que el usuario es quien dice ser.

Con Kerberos, la identidad del usuario se verifica cuando se conecta al sistema de archivos. Los resultados de esta verificación se guardan y se usan en cada solicitud de NFS. Esto ayuda a proteger contra la mayoría de los ataques.

Versiones de NFS

Las versiones más importantes de NFS son NFSv2, NFSv3 y NFSv4.

La versión 2 de NFS es la más antigua y la más usada, pero también la menos segura. La versión 3 es más potente que la 2, pero no es totalmente compatible con los clientes de la versión anterior. Estas dos versiones pueden usar TCP o UDP para enviar datos. Usar UDP puede reducir el tráfico de red, pero si el servidor se cae, los clientes seguirían enviando mensajes y podrían saturar la red.

En general, las versiones 2 y 3 de NFS permiten controlar qué computadoras pueden acceder a las carpetas compartidas, pero no qué usuarios específicos. Esto significa que si una carpeta se comparte, cualquier usuario de una computadora cliente podría acceder a ella. Los únicos mecanismos de seguridad son los permisos de solo lectura o usar un usuario y grupo genérico. Esto limita bastante la forma en que se pueden compartir los archivos.

En la versión 4 de NFS, estos problemas de seguridad se resuelven, pero a cambio, necesita una configuración más compleja y servicios adicionales. Por ejemplo, en la versión 4 es obligatorio usar sistemas para verificar la identidad de los usuarios. Para esto, se puede usar el servicio Kerberos, que funciona como un servidor de "tickets" de seguridad. Esto hace que NFSv4 sea mucho más seguro, aunque más difícil de configurar.

Otra característica importante de NFSv4 es que usa ACLs (Listas de Control de Acceso), que son similares a las que usa Windows. Las ACLs permiten especificar permisos muy detallados para cada usuario sobre un archivo o carpeta, algo que no soportan las versiones 2 y 3 de NFS.

Ventajas de NFS

  • Reduce el riesgo de que si una sola computadora falla, no puedas acceder a tus datos.
  • Permite tener un lugar centralizado para los datos que deben ser compartidos por todos los usuarios.
  • Facilita el acceso a datos que están en sistemas más rápidos.
  • Permite centralizar tareas administrativas, como hacer copias de seguridad de los datos.
  • Ofrece compatibilidad y flexibilidad. Normalmente, puedes acceder a sistemas de archivos en red desde computadoras con Linux, Windows, Mac OS X y otros. Esto hace que sea fácil usar el equipo que mejor se adapte a tus necesidades y aun así acceder a los mismos datos.

Desventajas de NFS

  • NFSv2 y NFSv3 pueden usar UDP, que es rápido pero no verifica si los datos llegan. Si el servidor NFS se cae, los clientes seguirían enviando solicitudes, lo que podría saturar la red.
  • Las versiones 2 y 3 de NFS controlan el acceso por computadora, no por usuario. Esto significa que si una carpeta se comparte, cualquier usuario de una computadora cliente podría acceder a ella.
  • NFS puede tener algunos problemas de rendimiento porque su diseño no "recuerda" el estado de las conexiones (aunque esto ha mejorado en las últimas versiones). Por ejemplo, cuando se escribe un archivo, el servidor debe asegurarse de que los datos estén guardados en el disco antes de confirmar al cliente, lo que puede causar un pequeño retraso.

Operaciones de NFS

Al principio, NFS soportaba 18 operaciones básicas para manejar archivos. Los comandos de la versión 2 del protocolo incluían:

  • NULL: No hace nada, pero sirve para probar la conexión con el servidor.
  • CREATE: Crea un archivo nuevo.
  • LOOKUP: Busca un archivo en una carpeta y, si lo encuentra, da información sobre él.
  • READ y WRITE: Para leer y escribir datos en un archivo.
  • RENAME: Cambia el nombre de un archivo.
  • REMOVE: Borra un archivo.
  • MKDIR y RMDIR: Para crear y borrar carpetas.
  • READDIR: Para ver la lista de archivos y carpetas dentro de una carpeta.
  • GETATTR y SETATTR: Para obtener o cambiar las propiedades de un archivo.
  • LINK: Crea un enlace a un archivo.
  • SYMLINK y READLINK: Para crear y leer enlaces simbólicos (atajos) a archivos.
  • STATFS: Da información sobre el sistema de archivos.
  • ROOT: Para ir a la carpeta principal (ya no se usa en la versión 2).
  • WRITECACHE: Reservado para uso futuro.

En la versión 3 del protocolo, se quitaron algunos comandos (STATFS, ROOT y WRITECACHE) y se agregaron otros:

  • ACCESS: Para verificar permisos de acceso.
  • MKNOD: Crea un tipo especial de archivo.
  • READDIRPLUS: Una versión mejorada de READDIR.
  • FSSTAT: Da información dinámica del sistema de archivos.
  • FSINFO: Da información estática del sistema de archivos.
  • PATHCONF: Recupera información de POSIX.
  • COMMIT: Envía los datos de la caché del servidor a un lugar de almacenamiento permanente.

La versión 4, lanzada en 2003, no es compatible con las versiones anteriores y soporta 41 comandos diferentes, incluyendo muchos de los anteriores y otros nuevos para mejorar la seguridad y el rendimiento.

Véase también

Kids robot.svg En inglés: Network File System Facts for Kids

Temas relacionados con NFS:

  • ONC RPC, un sistema para que los programas se comuniquen a distancia, usado con NFS.
  • XDR, un protocolo para organizar datos, usado por NFS.
  • VFS, un sistema que permite a los programas usar diferentes tipos de archivos de la misma manera.

Otros sistemas similares:

  • AppleTalk
  • Samba (software)
  • Server Message Block
  • Andrew File System
  • Secure Shell Filesystem
kids search engine
Network File System para Niños. Enciclopedia Kiddle.