NAS

NAS (del inglés Network Attached Storage) es el nombre de una tecnología de almacenamiento dedicada a compartir la capacidad de almacenamiento de un servidor con otros sistemas cliente a través de una red (normalmente TCP/IP). Por lo general, NAS está asociado a ciertos protocolos específicos destinados a la transferencia de archivos o al uso remoto de sistemas de archivos, como CIFS(SMB), NFS, FTP o TFTP.

Servidor SAMBA

Samba es un servicio que proporciona el acceso por SMB/CIFS a un directorio compartido en Linux.

Instalación de SAMBA en RHEL/Centos 7

Instalamos los paquetes siguientes:

yum install samba samba-client samba-common

Configuración de Samba

La configuración de Samba está en /etc/samba/smb.conf. Inicialmente el archivo está repleto de comentarios. Vamos a renombrar este archivo y a empezar con uno nuevo vacío:

mv /etc/samba/smb.conf /etc/samba/smb.conf.bk touch /etc/samba/smb.conf

Ahora editamos dicho archivo, y añadimos un contenido como el siguiente:

[global] server string = Servidor Samba para ISO netbios name = centos security = user [Compartida] path = /samba/secured valid users = pepe, @smbgrp guest ok = no writable = yes browsable = yes create mask = 0700 directory mask = 0700

Este archivo admite muchas otras configuraciones (que se pueden conocer mediante man smb.conf). El ejemplo dado es una configuración simple. Algunas de las cuestiones destacables:

  • El archivo smb.conf se organiza por secciones.
  • Cada sección se indica entre corchetes, como por ejemplo [global].
  • Todas las secciones se refieren a un recurso compartido que se publicará con el nombre indicado entre corchetes, menos la sección [global].
  • La sección [glogal] permite indicar configuraciones por defecto para todas las secciones definidas. En el ejemplo anterior, sólo hay un recurso compartido, llamado Compartida. Cualquier configuración de la sección [global] puede ser sobreescrita en otra sección concreta.
  • Se puede consultar el significado de cada opción con man smb.conf.

Los usuarios que pueden acceder a un recurso

En nuestro caso, solamente tiene acceso a nuestro recurso compartido el usuario pepe. También pueden acceder los usuarios del grupo smbgrp. Dicho usuario, al igual que el grupo, deben existir en el sistema:

useradd pepe usermod -G smbgrp pepe

Es preciso que especifiquemos una contraseña como usuario válido de Samba. Para hacer esto:

smbpasswd -a pepe

Si posteriormente deseamos eliminar este usuario de la base de datos de Samba, debemos ejecutar el comando siguiente:

smbpasswd -x pepe

Si por el contrario, deseamos consultar los usuarios que actualmente están en la base de datos de usuarios de Samba, debemos ejecutar el sugiente comando:

pdbedit -L -v

Los recursos compartidos

Los recursos compartidos deben existir. Por ejemplo, en nuestro archivo smb.conf tenemos un recurso llamado Compartida. El parámetro path hace referencia a la ubicación del recurso. Para que nuestro recurso compartido esté disponible para pepe, haremos lo siguiente:

mkdir -p /samba/secured chmod -R 0770 /samba/secured chown pepe:smbgrp /samba/secured

El firewall

El firewall de Centos/RHEL bloquea por defecto Samba. Podemos evitar este problema mediante el comando siguiente:

firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload

SELinux

SELinux es una característica de Linux que provee control de acceso mediante directivas de seguridad. Aunque es una característica interesante, en nuestro caso nos impide trabajar normalmente con Samba. Tendríamos que configurar SELinux, pero eso es algo que se sale de lo que se busca en este manual. Por ello, vamos a desactivarlo.

Para desactivar SELinux, editamos el archivo 7etc/sysconfig/selinux. En dicho archivo encontraremos un contenido similar a este:

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted

Debemos modificar el archivo para que quede así:

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted

Una vez hecho esto, debemos reiniciar el sistema para que la nueva configuración de SELinux se aplique.

Una vez que reiniciemos, podemos comprobar la configuración actual de SELinux utilizando el comando siguiente:

getenforce

Reiniciar el servicio

systemctl restart smb systemctl restart nmb

Comprobar la corrección del archivo smb.conf

El comando testparm comprueba que no haya ningún error de sintaxis en smb.conf. Lo que no puede comprobar es que la configuración sea correcta.

Acceder al recurso compartido

Desde un cliente Windows, podemos escribir la ruta UNC del servidor. Por ejemlo: \\192.168.1.140

Actividad 1. Comparte un recurso llamado "Sambashare" con un compañero de la clase mediante Samba. Dicho recurso compratido se corresponde con el directorio /mnt/smb/. Asegúrate de el usuario y contraseña válidos para acceder al recurso coincide con el del usuario de Windows, para que no tenga que introducir usuario y contraseña.

Después, repite el ejercicio, de modo que ahora el cliente SMB seas tú y el servidor Samba lo implemente tu compañero.

Servidor NFS

NFS, al igual que CIFS/SMB permite compartir un sistema de archivos en red. Es habitual en sistemas Linux, aunque Windows también provee soporte para cliente NFS (aunque solo para algunas versiones).

Configurar el servidor

En el servidor es preciso instalar el siguiente paquete:

yum install nfs-utils

A continuación hay que especificar qué directorios se van a compartir, y con qué propiedades. Esto se hace indicándolo en el archivo /etc/exports. Tras editar dicho archivo, añadimos la siguiente línea:

/mnt/nfs 192.168.1.0/24(rw,no_root_squash)

El contenido de /etc/exports

En el ejemplo anterior se indica /mnt/nfs como directorio que se está compartiendo.

También se aclara que la compartición es válida para las máquinas en la red 192.168.1.0/24. También se puede especificar una dirección concreta, o un nombre de equipo (especificado en /etc/hosts o bien resuelto por DNS).

Por último se indican dos opciones para la compartición, pero existen otras además de estas. Las más comunes son:

  • ro Esta opción provoca que el montaje de NFS sea para sólo lectura. Esta opción está activada por omisión.
  • rw Esta opción monta la jerarquía de ficheros en lectura-escritura.
  • root_squash Indica que un cliente identificado como root tendrá acceso al directorio con privilegios de un usuario anónimo.
  • no_root_squash Permite que un cliente identificado como root tenga acceso de superusuario al punto de montaje.

Finalmente reiniciamos los servicios implicados, y los habilitamos para futuros reinicios:

systemctl restart rpcbind systemctl start nfs-server systemctl enable rpcbind systemctl enable nfs-server

El firewall

El firewall estará bloqueando inicialmente el servicio NFS. Es preciso habilitar el acceso mediante el comando siguiente:

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

Configuración del cliente

En el cliente (suponiendo que es linux), instalamos el siguiente paquete:

yum install nfs-utils

Después reinicamos los servicios necesarios, y los habilitamos para el siguiente reinicio:

systemctl restart rpcbind systemctl start nfs-mountd systemctl enable rpcbind systemctl enable nfs-mountd

Después hay montar el volumen NFS:

mount -t nfs 192.168.1.140:/home /home

En este punto, podemos comprobar que el montaje es efectivo mediante el comando mount.

NFS y fstab

Se puede montar automáticamente durante cada reinicio las unidades NFS, a través de fstab. Un ejemplo:

/dev/mapper/centos-root / xfs defaults 1 1 UUID=a18716b4-cd67-4aec-af91-51be7bce2a0b /boot xfs defaults 1 2 /dev/mapper/centos-swap swap swap defaults 0 0 192.168.1.140:/mnt/nfs /mnt/nfs nfs defaults 0 0

Actividad 2. Monta una unidad NFS compartida por un compañero.

La unidad compartida debe poder mapear el usuario root.

Toma una captura donde se pueda comprobar que la unidad está montada y guárdala con el nombre Act2-naslinux.png.