Configuración de Samba y NFS en Linux para Compartir Archivos en Red

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 10,76 KB

Introducción a Samba y NFS

Samba se utiliza para compartir archivos y recursos entre equipos Linux y Windows, facilitando la interoperabilidad. Por otro lado, NFS (Network File System) es un protocolo nativo en sistemas Linux diseñado específicamente para compartir carpetas en red dentro de entornos Unix/Linux, destacando por su estabilidad.

Configuración de Samba

Instalación de Samba

  • Ubuntu/Debian: sudo apt-get update sudo apt-get install samba smbclient (Nota: samba4 es parte del paquete samba moderno)
  • Fedora/CentOS/RHEL: sudo yum install samba samba-client o sudo dnf install samba samba-client

Gestión del Servicio Samba

  • Iniciar Servicio:
    • Ubuntu/Debian (Systemd): sudo systemctl start smbd nmbd
    • Fedora/CentOS/RHEL (Systemd): sudo systemctl start smb nmb
    • Sistemas más antiguos (SysVinit): sudo service smbd start o sudo /etc/init.d/smbd start
  • Reiniciar Servicio:
    • Ubuntu/Debian (Systemd): sudo systemctl restart smbd nmbd
    • Fedora/CentOS/RHEL (Systemd): sudo systemctl restart smb nmb
    • Sistemas más antiguos (SysVinit): sudo service smbd restart o sudo /etc/init.d/smbd restart
  • Habilitar al inicio:
    • Ubuntu/Debian (Systemd): sudo systemctl enable smbd nmbd
    • Fedora/CentOS/RHEL (Systemd): sudo systemctl enable smb nmb

Configuración Principal

El archivo de configuración principal de Samba se encuentra en /etc/samba/smb.conf. Para modificarlo, puedes usar un editor de texto como nano:

sudo nano /etc/samba/smb.conf

Después de modificar la configuración, recuerda reiniciar el servicio Samba para aplicar los cambios.

Gestión de Usuarios de Samba

Samba requiere que los usuarios del sistema Linux sean añadidos también a la base de datos de Samba con una contraseña.

  • Añadir un usuario (el usuario debe existir previamente en Linux):
    sudo smbpasswd -a nombre_usuario
    Ejemplo: sudo smbpasswd -a antonio
  • Eliminar un usuario:
    sudo smbpasswd -x nombre_usuario
    Ejemplo: sudo smbpasswd -x antonio
  • Ver usuarios de Samba:
    sudo pdbedit -L -w

Opciones comunes de smbpasswd:

  • -a: Añade un usuario.
  • -x: Elimina un usuario.
  • -d: Deshabilita un usuario.
  • -e: Habilita un usuario.
  • -n: Establece la contraseña a null (sin contraseña).

Compartir Carpetas (Configuración en smb.conf)

Ejemplo Básico de Recurso Compartido Público

Añada lo siguiente al final de /etc/samba/smb.conf:

[publico]
    comment = Carpeta de acceso publico
    path = /ruta/a/la/carpeta/publica  # Asegúrese de que esta ruta exista
    public = yes
    guest ok = yes
    read only = yes # 'yes' significa solo lectura, 'no' permite escritura
    writable = no   # Equivalente a read only = yes

Opciones Comunes para Compartir Carpetas

  • [nombre_recurso]: Define el nombre con el que se verá la carpeta compartida en la red.
  • comment: Descripción del recurso compartido.
  • path: Ruta absoluta del directorio en el servidor Linux que se va a compartir.
  • browseable: (yes/no) Indica si el recurso compartido debe ser visible en la lista de recursos del servidor.
  • read only: (yes/no) Si es 'yes', el recurso es de solo lectura. Si es 'no', se permite escritura (equivalente a writable = yes).
  • writable: (yes/no) Alias para read only = no.
  • guest ok: (yes/no) Permite o deniega el acceso a usuarios invitados (sin autenticación). Alias: public.
  • valid users: Lista de usuarios o grupos (con @ prefijo, ej: @grupo) que tienen permitido el acceso. Separe los nombres con comas.
  • write list: Lista de usuarios o grupos (con @ prefijo) que tienen permiso de escritura, incluso si read only = yes está configurado globalmente para el recurso.
  • create mode: Permisos por defecto para los nuevos ficheros creados (ej: 0664).
  • directory mode: Permisos por defecto para los nuevos directorios creados (ej: 0775).
  • force user: Fuerza a que todos los archivos/directorios creados pertenezcan a este usuario.
  • force group: Fuerza a que todos los archivos/directorios creados pertenezcan a este grupo.

Ejemplo: Compartir Carpeta para Usuarios y Grupo Específicos

[miscosas]
    comment = Datos y aplicaciones personales
    path = /datos/
    valid users = juan, encarni, @master  # El grupo 'master' debe existir en Linux
    writable = yes
    browseable = yes

Ejemplo: Compartir Impresoras

[printers]
    comment = Todas las impresoras
    path = /var/spool/samba
    browseable = no
    printable = yes
    public = no
    writable = no
    create mode = 0700

Herramientas Gráficas de Configuración

Existen herramientas con interfaz gráfica para facilitar la configuración de Samba:

  • system-config-samba (Puede requerir instalación)
  • Webmin (Interfaz de administración web)
  • SWAT (Herramienta web antigua, puede no estar disponible o recomendada en sistemas modernos)
  • Para impresoras: system-config-printer

Estas herramientas suelen permitir importar usuarios del sistema y configurar los recursos compartidos de forma visual.


Configuración de NFS (Network File System)

NFS es ideal para compartir directorios entre sistemas Linux/Unix.

Instalación de NFS

  • Ubuntu/Debian: sudo apt-get update sudo apt-get install nfs-kernel-server nfs-common (portmap/rpcbind suele ser una dependencia)
  • Fedora/CentOS/RHEL: Generalmente viene instalado. Si no: sudo yum install nfs-utils o sudo dnf install nfs-utils

Gestión del Servicio NFS

  • Iniciar Servicio:
    • Ubuntu/Debian (Systemd): sudo systemctl start nfs-kernel-server
    • Fedora/CentOS/RHEL (Systemd): sudo systemctl start nfs-server
    • Sistemas más antiguos (SysVinit): sudo service nfs-kernel-server start o sudo /etc/init.d/nfs-kernel-server start / sudo service nfs start
  • Habilitar al inicio:
    • Ubuntu/Debian (Systemd): sudo systemctl enable nfs-kernel-server
    • Fedora/CentOS/RHEL (Systemd): sudo systemctl enable nfs-server
  • Aplicar cambios en exports (sin reiniciar): sudo exportfs -ra

Configuración de Carpetas Compartidas (Exports)

La configuración de qué carpetas compartir y con quién se realiza en el fichero /etc/exports.

La sintaxis básica es: /ruta/directorio cliente1(opciones) cliente2(opciones) ...

Ejemplo de Configuración en /etc/exports

Para compartir la carpeta /datos con el equipo 192.168.20.9 con permisos de lectura/escritura (rw) y con el equipo 192.168.20.8 solo con permisos de lectura (ro), añada la siguiente línea a /etc/exports:

/datos 192.168.20.9(rw,sync,no_subtree_check) 192.168.20.8(ro,sync,no_subtree_check)

Nota: Es recomendable añadir opciones como sync (espera a que la escritura se complete en disco) y no_subtree_check (mejora la fiabilidad).

Después de editar /etc/exports, ejecute sudo exportfs -ra para aplicar los cambios.

Montaje de Recursos NFS en el Cliente

Montaje Manual

Para montar temporalmente una carpeta NFS compartida desde un servidor (ej: 192.168.20.100) en un punto de montaje local (ej: /mnt/trabajo o /prueba):

  1. Asegúrese de que el punto de montaje existe: sudo mkdir /mnt/trabajo
  2. Ejecute el comando mount: sudo mount 192.168.20.100:/datos /mnt/trabajo

Donde 192.168.20.100:/datos es el recurso compartido (servidor:/ruta/exportada) y /mnt/trabajo es el directorio local donde se montará.

Montaje Automático (al inicio del sistema)

Para que el recurso NFS se monte automáticamente cada vez que el cliente inicie, edite el fichero /etc/fstab y añada una línea como la siguiente:

sudo nano /etc/fstab

Añada la línea (asegúrese de usar tabulaciones o espacios consistentes entre campos):

192.168.20.100:/datos  /mnt/trabajo  nfs  defaults,rw,hard,intr  0  0
Explicación de Opciones Comunes en fstab para NFS:
  • rw: Monta el sistema de ficheros en modo lectura/escritura. Use ro para solo lectura.
  • hard: Si el servidor NFS deja de responder, los programas que intenten acceder al recurso esperarán indefinidamente hasta que el servidor vuelva a estar disponible. Es la opción por defecto y generalmente recomendada para asegurar la integridad de los datos. (Contrasta con soft, que puede causar errores o corrupción si el servidor no responde).
  • intr: Permite interrumpir (con Ctrl+C, por ejemplo) un proceso que está bloqueado esperando al servidor NFS (en modo hard). Útil para evitar bloqueos irrecuperables.
  • defaults: Utiliza un conjunto de opciones predeterminadas (que suelen incluir rw, suid, dev, exec, auto, nouser, async). Puede ser conveniente especificar las opciones explícitamente.
  • 0 0: Estos son los campos para `dump` y `fsck` (chequeo del sistema de ficheros). Para NFS, generalmente se establecen en 0.

Para montar todo lo definido en /etc/fstab sin reiniciar: sudo mount -a

Entradas relacionadas: