3 minute read

Existen dos protocolos que hacen posible compartir directorios: NFS (en sistemas Linux) y Samba (entre Linux, indos y MacOs)

Instalación y configuración de servidor NFS

Instalación de servidor (Debian)

Primero verificamos primero si el paquete esta instalado ejecutando el siguiente comando:

sudo apt info nfs-kernel-server

Si esta ya instalado comprobaremos si el servidor esta activo, en caso de que no lo este, se instalara usando apt install nfs-kernel-server. Comprobamos si esta activo con el comando sudo systemctl status nfs-kernel-server. En caso de que este activo, seguimos adelante, si esta inactivo tendremos que activarlo.

sudo systemctl enable --now nfs-kernel-server

Crearemos un directorio sobre el que vamos a definir el directorio compartido:

sudo mkdir nfs_comp

Accedemos a /etc/exports y vamos a agregar la siguiente linea para definir los parámetros del compartimiento del directorio:

/nfs_comp    192.168.1.0/24(rw,sync,no_subtree_check)

Indicamos la red donde sera posible compartir el directorio y el nombre del directorio, rw permite escritura y lectura en este directorio, sync hace que el host sincronice los directorios y no subtree_check evita comprobaciones innecesarias.

Ademas de estas opciones usadas, podemos usar otras que también pueden sernos útiles:

  • ro: solo lectura
  • root_squash: evita que root actué como root en el servidor
  • no_root_squash: Permite a root remoto tener privilegios (no es recomendable)

Aplicamos los cambios.

sudo exportfs -ra

Podemos ver los recursos que estamos exportando con el comando exportfs -v.

Configuración del Firewall (opcional)

Para UFW:

sudo ufw allow from 192.168.1.0/24 to any port nfs

Para firewalld (CentOS):

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

Instalación y configuración de un cliente NFS

Empezamos instalando el cliente NFS.

sudo apt install nfs-common -y

A continuación tendremos que crear el punto de montaje donde podremos acceder al directorio que comparte el servidor.

sudo mkdir -p /mnt/nfs_compartido

Este directorio se podrá montar de dos formas, de forma manual o permanente:

  • Montaje manual: Es un montaje temporal que tú realizas con un comando, y solo existe hasta que reinicias la máquina o desmontas el recurso. Ej:
sudo mount 192.168.1.10:/srv/nfs/compartido /mnt/nfs_compartido

Esta opción es usada sobre todo para realizar pruebas

  • Montaje permanente: Es un montaje que se configura para realizarse automáticamente en cada arranque del sistema, sin necesidad de que el usuario lo monte manualmente. Esto se consigue añadiendo una línea en /etc/fstab:
192.168.1.10:/srv/nfs/nfs_comp /mnt/nfs_compartido nfs defaults 0 0

Esta opción se usa mas en entornos de producción y carpetas en red usadas a diario.

Instalación y configuración de un servidor SAMBA

Samba permite compartir archivos entre Linux ↔ Windows. Es imprescindible en entornos mixtos. Para realizar una instalación de samba en Linux ejecutaremos el siguiente comando.

sudo apt install samba -y

Al igual que con nfs comprobaremos si esta activo una vez instalado con systemctl status smbd, en caso de no estar activo, tendremos que activarlo con la opción enable.

Creamos el directorio a compartir

sudo mkdir /smb_comp

En el caso de samba la configuracion la realizaremos modificando el fichero /etc/samba/smb.conf aadiendo las siguientes lineas:

[smb_comp]
   path = /srv/samba/smb_comp
   browseable = yes
   read only = no
   writable = yes
   guest ok = yes #acceso sin contraseñas para pruebas
   create mask = 0777
   directory mask = 0777

Una vez instalado y configurado todo reiniciamos el servicio,

sudo systemctl restart smbd

Realizamos la prueba desde Linux

smbclient //192.168.1.10/smb_comp -N

O montamos

sudo mount -t cifs //192.168.1.10/smb_comp /mnt/smb -o guest

En el caso de windows podremos acceder al directorio ejecutamos win+R ejecutando \192.168.1.10\smb_comp.

SAMBA con usuarios (opción mas segura)

Esta configuración iría cara a entornos reales dado que la configuración anterior era muy poco segura y mas orientada a entornos de prueba.

Empezaremos creando un usuario a modo de prueba

sudo useradd -m sergio
sudo passwd sergio

La opción -m la usaremos para que al usuario se le cree el home, aunque esto no es obligatorio.

Este usuario recién creado lo añadimos a samba.

sudo smbpasswd -a sergio
sudo smbpasswd -e sergio

Configuramos el fichero smb.conf añadiendo las siguientes lineas:

[smb_comp]
   path = /srv/samba/smb_comp
   valid users = sergio
   read only = no
   browsable = yes
   create mask = 0660
   directory mask = 0770

Reiniciamos el servicio para que la configuración indicada empiece a funcionar.

sudo systemctl restart smbd

Esta vez a la hora de realizar el montaje en linux, al tener un usuario creado ejecutaremos el mismo comando pero indicando el usuario que tiene acceso

sudo mount -t cifs //192.168.1.10/smb_comp /mnt/smb -o username=sergio

El acceso a través de windows sera exactamente igual, a través de win+R y ejecutando \192.168.1.10\smb_comp, la diferencia en este caso es que al ejecutar la linea anterior, se nos pedirá usuario y contraseña para poder acceder.