Page cover

Carpetas compartidas NFS

Introducción

En las redes locales, como las que se encuentran en las oficinas y los hogares, es deseable que los ordenadores no sólo puedan acceder a Internet, sino que también puedan comunicarse entre sí.

En ocasiones un ordenador puede actuar como un servidor y un cliente. Por ejemplo, cuando se desea acceder a los archivos de otro ordenador de la red (Supongamos, que se necesita acceder a un archivo almacenado en un ordenador de sobremesa desde un dispositivo portátil) sin la molestia de tener que copiarlo en una unidad USB o similar.

Ejemplo de mapa de servicio NFS con un servidor compartiendo carpetas.

Entre máquinas Linux, NFS (Network File System) se utiliza a menudo para este tipo de funciones, el protocolo NFS es la forma estándar de compartir sistemas de archivos en redes equipadas únicamente con máquinas Unix/Linux con las que un ordenador puede compartir uno o varios de sus directorios con ordenadores específicos de la red. De este modo, NFS puede leer y escribir archivos en estos directorios.

Incluso se puede usar NFS para compartir el árbol de directorios de todo un sistema operativo con clientes que lo usarán para arrancar (Bootear) desde el servidor. Estas computadoras, llamadas thin clients, se utilizan principalmente en redes grandes para evitar el mantenimiento de cada sistema operativo de cada máquina.

Si existen otros tipos de sistemas operativos conectados a la red, como Windows, se recomienda utilizar un protocolo de datos compartidos comprensible para todos ellos como es Samba.

Compartir una carpeta con un grupo de LDAP

Esta práctica esta pensada para realizarse con la práctica de la infraestructura LDAP, la puedes ver aquí ya que para poder realizar debemos revisar lo siguiente:

✅ Servidor LDAP configurado y funcionando.

✅ Grupo LDAP creado (por ejemplo, grupo_nfs).

✅ Usuarios LDAP que formen parte de ese grupo.

✅ Un servidor NFS instalado y funcionando.

✅ Un cliente que pueda montar ese recurso.

Si ya lo tienes todo claro, ¡prosigue con la guía!

Paso 1. Asegúrate de que LDAP gestiona los usuarios y grupos del sistema Si tienes LDAP funcionando con NSS (Name Service Switch), los grupos de usuarios de LDAP pueden ser reconocidos por el sistema, en mi caso es "smx" , desde el cliente ejecuta:

Si el grupo LDAP aparece en la salida, puedes usarlo en permisos de archivos, quédate con el gid del grupo que aparecerá al lado.

También es muy importante que los usuarios LDAP tengan el mismo UID/GID en el cliente y servidor NFS. Si no, los permisos no se aplicarán correctamente. Puedes verificar con:

Ahora deberemos comprobar que el servidor tambien detecte estos grupos como locales, para ello prueba lo mismo que antes, si esto no funciona deberás hacer lo siguiente:

Asegurarnos que el grupo ldap se reconoce correctamente

Si tu servidor NFS no está conectado a LDAP correctamente, necesitarás configurar el cliente LDAP en el servidor. Para ello, asegúrate de que los servicios como nslcd o sssd (dependiendo de la configuración de tu sistema) estén instalados y funcionando.

  • Instala nslcd (si no está instalado):

    Cuando aparezca el mensaje asegúrate de marcar las tres primeras opciones:

Esto permitirá usar los usuarios y grupos de ldap, realmente para esta practica con marcar la opción "group", ya funciona.
  • Luego, asegúrate de que el servicio esté activo y lo fijamos:

  • Reinicia nslcd para que cargue la configuración:

Esto debería permitir que el sistema reconozca los grupos de LDAP y sea capaz de usarlos en los comandos de chown como lo haces con grupos locales.

Paso 2. Instala el servidor NFS:

Revisa si nfs esta instalado:

y, sino, instálalo con:

Paso 3. Crea la carpeta compartida en el servidor NFS

En nuestro caso la carpeta la llamaremos "redes", le daremos los permisos solo para el grupo "smx":

El chmod con esta configuración permitirá que usuarios del grupo LDAP grupo_nfs puedan leer, escribir y ejecutar (entrar en) la carpeta pero bloqueará completamente el acceso a usuarios que no pertenezcan ni al grupo ni sean root.

Paso 4. Exporta la carpeta en /etc/exports Abrimos el archivo:

Y agregaremos una entrada que definirá que directorios se van a compartir por NFS y con que opciones (recuerda cambiar la IP a la de tu red):

Las opciones marcadas entre paréntesis hacen lo siguiente:

Opción
Qué hace

rw

Permite lectura y escritura a los clientes.

sync

Hace que los datos se escriban de inmediato en disco, no en caché (más seguro, menos rápido).

no_subtree_check

Desactiva la comprobación de subdirectorios, lo cual mejora el rendimiento y evita errores si el directorio compartido es parte de otro más grande.

Paso 5. Aplica los cambios en el servidor NFS

Es necesario como siempre, para aplicar los cambios, que reiniciemos los servicios:

Paso 6. Monta la carpeta en los clientes Vamos ahora a nuestro cliente, que son los equipos que usarán la carpeta NFS, ejecutaremos:

Crearemos el punto de montaje:

Montamos la carpeta usando la IP del servidor:

  • Si queremos que sea temporal para esta sesión:

Y si queremos que sea permanente deberemos añadirla a fstab:

Y ahora, para terminarlo del todo:

La magia de esto está en que solo los usuarios del grupo smx podrán ahora escribir, gracias a los permisos 770 y la pertenencia al grupo, por lo tanto, si tus usuarios LDAP están en ese grupo, ya deberían poder ver la carpeta.


Comprobación del servicio NFS

Vamos ahora a ver, en cualquier caso, cómo verificar que todo esté correcto desde el servidor NFS y desde el cliente:

🖥️ EN EL SERVIDOR NFS

1. Verifica que la carpeta exista

La carpeta que estás compartiendo en /etc/exports debería existir ya en el sistema de archivos:

* Si no aparece nada o da error, vuelve a revisar los pasos

2. Asegúrate de que tenga permisos adecuados

Puedes revisar:

3. Verifica la exportación NFS

Una vez hayas añadido la línea al /etc/exports, ejecuta:


💻 EN EL CLIENTE NFS

1. Verifica que puedes ver lo que exporta el servidor:

Esto te mostrará algo como:

2. Verifica que está montada:


Vamos a hacer la prueba para revisar si al subir un archivo se comparte con otros usuarios:

  1. Desde el servidor creamos un archivo:

Desde servidor
  1. Ahora vamos a comprobar desde un usuario no perteneciente al grupo smx el acceso a la carpeta:

Como ves, desde el usuario "ubuntu" no me deja acceder ni ver el directorio.
  1. Ahora vamos a probar desde el usuario "alex" de mi ldap autorizado en el cliente:

Ahora sí! ya puedo ver el archivo compartido.

Espero que esta guia te haya ayudado.

Última actualización