Logo

dev-resources.site

for different kinds of informations.

Configurar servidor de archivos local con Ubuntu y Samba

Published at
1/13/2025
Categories
linux
ubuntu
tutorial
spanish
Author
asjordi
Categories
4 categories in total
linux
open
ubuntu
open
tutorial
open
spanish
open
Author
7 person written this
asjordi
open
Configurar servidor de archivos local con Ubuntu y Samba

Cuando queremos compartir archivos dentro de una red local puede que el crear una carpeta compartida en un sistema operativo no sea suficiente, ya sea por el espacio de almacenamiento disponible, la incompatibilidad en los protocolos de comunicación, la disponibilidad del equipo, entre otras razones, por lo cual el crear un servidor de archivos dedicado puede ser una solución viable si contamos con un equipo que no utilizamos y queremos aprovecharlo para este fin.

Un servidor de archivos es un sistema que proporciona acceso a archivos y carpetas a través de una red utilizando protocolos de comunicación como SMB, NFS, FTP, entre otros. Por su parte, un NAS es un dispositivo (o servidor) dedicado a almacenar y compartir datos en una red, permitiendo que otros dispositivos en la misma red accedan a los archivos. Ambas son soluciones similares, pero la diferencia radica en que un NAS es un dispositivo dedicado para este fin, mientras que un servidor de archivos puede ser un equipo que utilizamos para otros fines y que también compartimos archivos.

En este tutorial vamos a configurar un servidor de archivos local utilizando Ubuntu Server y Samba, lo cual nos permitirá tener compatibilidad entre sistemas operativos Windows y Linux, además de que podremos acceder a los archivos desde cualquier dispositivo en la red local, ya sea una computadora, un teléfono, una tablet, entre otros.

Requisitos

  • Un equipo de cómputo.
  • Ubuntu Server instalado o la imagen ISO para instalarlo.
  • Conexión a internet, preferentemente por cable.

Instalar Ubuntu Server

Para instalar Ubuntu Server puedes seguir la siguiente guía oficial: Instalación de Ubuntu Server, solo hay que tener en cuanta los siguientes puntos:

  • Configurar correctamente el usuario y contraseña de administrador.
  • Utilizar todo el disco para la instalación, no tiene mucho sentido crear particiones si el equipo solo se utilizará para compartir archivos.
  • Se puede configurar la encriptación del disco, considerar que esto puede afectar el rendimiento del servidor.
  • Configurar la dirección IP estática para el servidor, esto es opcional, ya que más adelante lo haremos.
  • Durante la instalación, asegúrate de seleccionar la opción de instalar el servidor SSH, ya que lo utilizaremos para conectarnos al servidor de archivos.

Instalar paquetes necesarios

Una vez que hacemos login en el servidor, procedemos a instalar los paquetes necesarios para configurar el servidor de archivos. Para ello, ejecutamos los siguientes comandos:

Login

sudo apt update
sudo apt upgrade
sudo apt install samba brightnessctl ufw
Enter fullscreen mode Exit fullscreen mode
  • samba: Es el paquete que nos permitirá compartir archivos en la red local.
  • brightnessctl: Es un paquete que nos permitirá controlar el brillo de la pantalla.
  • ufw: Es un firewall que nos permitirá configurar reglas de seguridad en el servidor.

Instalación de paquetes

Configurar el firewall

Debemos configurar el firewall para permitir el tráfico de red en el servidor mediante SSH y Samba. Para ello, ejecutamos el siguiente comando:

sudo ufw allow ssh
sudo ufw allow samba
Enter fullscreen mode Exit fullscreen mode

Activamos el firewall con el siguiente comando:

sudo ufw enable
Enter fullscreen mode Exit fullscreen mode

Podemos comprobar que el firewall está activo con el siguiente comando:

sudo ufw status
Enter fullscreen mode Exit fullscreen mode

Configuración del firewall

Configurar IP estática

En caso de que no hayamos configurado la dirección IP estática durante la instalación de Ubuntu Server, podemos seguir los siguientes pasos, de lo contrario, podemos omitir esta sección. Para verificar la interfaz de red y dirección IP actual, ejecutamos el siguiente comando:

ip a
Enter fullscreen mode Exit fullscreen mode

También podemos utilizar el comando ifconfig (en caso de que no esté instalado, podemos instalarlo con sudo apt install net-tools), con ambos comandos podemos identificar la interfaz de red, en mi caso es enp0s3, y la dirección IP actual, en mi caso es 192.168.0.20.

Interfaz de red y dirección IP

Para comenzar hacemos login como superusuario:

sudo su
Enter fullscreen mode Exit fullscreen mode

Abrimos el archivo /etc/netplan/50-cloud-init.yaml con nano para editarlo (puede que el nombre sea diferente, pero el archivo debe estar en la misma ruta):

nano /etc/netplan/50-cloud-init.yaml
Enter fullscreen mode Exit fullscreen mode

Agregamos la siguiente configuración al archivo, debemos cambiar los valores para la interfaz de red, dirección IP y máscara de subred, puerta de enlace y servidores DNS según nuestra red:

network:
    ethernets:
        enp0s3:
            dhcp4: false
            addresses: [192.168.0.64/24]
            routes:
            - to: default
              via: 192.168.0.1
            nameservers:
              addresses: [8.8.8.8]
    version: 2
Enter fullscreen mode Exit fullscreen mode

Configuración de IP estática

A continuación se muestra una descripción de los campos:

  • network: Es el elemento raíz del fichero de configuración y significa el inicio de la configuración de red.
  • ethernets: Esta sección especifica el inicio de la configuración de las interfaces ethernet.
  • enp0s3: Identifica la interfaz Ethernet específica que se está configurando (puede variar dependiendo del sistema).
  • dhcp4: Indica si la interfaz obtiene una dirección IP automáticamente de un servidor DHCP, en este caso se establece en false para configurar una dirección IP estática.
  • addresses: Aquí se especifica la dirección IP estática y la máscara de subred, en este caso 192.168.0.64/24.
  • routes: Esta sección define rutas estáticas donde: default especifica una ruta por defecto a través de la puerta de enlace, 192.168.0.1, con via: 192.168.0.1.
  • nameservers: Esta clave especifica los servidores DNS que utilizará el sistema.

Una vez configurado, presionar Ctrl + O seguido de Enter para guardar los cambios y Ctrl + X para salir. Ejecutamos el siguiente comando para aplicar los cambios:

netplan apply
Enter fullscreen mode Exit fullscreen mode

Nuevamente, podemos ejecutar el comando ip a para verificar que la dirección IP estática se ha configurado correctamente.

Dirección IP estática

Crear usuario para Samba

Para compartir archivos en la red local, necesitamos crear un usuario en el servidor de archivos. Para ello, ejecutamos el siguiente comando:

sudo adduser usuario
Enter fullscreen mode Exit fullscreen mode

En este caso usuario es el nombre del usuario que vamos a crear, podemos utilizar el nombre que queramos. A continuación, establecemos una contraseña para el usuario:

sudo smbpasswd -a usuario
Enter fullscreen mode Exit fullscreen mode

Crear directorio para compartir archivos

Creamos un directorio que nos servirá para almacenar los archivos que queremos compartir en la red local. En este caso se llamará sambashare y estará ubicado en /home/jordi (puedes cambiar la ubicación y el nombre del directorio según tus necesidades):

sudo mkdir /home/jordi/sambashare
Enter fullscreen mode Exit fullscreen mode

Ahora debemos asignarle permisos sobre el directorio sambashare al usuario que hemos creado, cambiar jordi por el nombre de usuario que se creó al instalar Ubuntu Server, y usuario por el nombre del usuario que hemos generado anteriormente, al igual que la ruta del directorio:

sudo chown -R jordi:usuario /home/jordi/sambashare
Enter fullscreen mode Exit fullscreen mode

Configurar Samba

Para configurar Samba, debemos editar el archivo /etc/samba/smb.conf, para ello ejecutamos el siguiente comando:

sudo nano /etc/samba/smb.conf
Enter fullscreen mode Exit fullscreen mode

Al final de este archivo agregamos la siguiente configuración:

[sambashare]
    comment = Samba on Ubuntu Sever
    path = /home/jordi/sambashare
    read only = no
    writable = yes
    browsable = yes
    guest ok = no
    public = no
    force user = root
    force group = usuario
    valid users = usuario
Enter fullscreen mode Exit fullscreen mode
  • sambashare: Es el nombre de la carpeta compartida.
  • comment: Es un comentario opcional.
  • path: Es la ruta del directorio que queremos compartir.
  • read only: Indica si el directorio es de solo lectura, en este caso se establece en no.
  • writable: Indica si el directorio es de escritura, en este caso se establece en yes.
  • browsable: Indica si el directorio es navegable, en este caso se establece en yes.
  • guest ok: Indica si se permite el acceso de invitados, en este caso se establece en no.
  • public: Indica si el directorio es público, en este caso se establece en no.
  • force user: Fuerza que cualquier operación realizada en el recurso compartido sea tratada como si la ejecutara el usuario root, sin importar qué usuario autenticado esté usando el recurso.
  • force group: Fuerza que cualquier archivo o directorio creado en el recurso compartido pertenezca al grupo usuario, sin importar el grupo del usuario autenticado.
  • valid users: Especifica que solo el usuario puede acceder al recurso compartido. Esto permite restringir el acceso a usuarios específicos.

Configuración de Samba

Presionamos Ctrl + O seguido de Enter para guardar los cambios y Ctrl + X para salir. Para verificar nuestra configuración ejecutamos el siguiente comando:

testparm
Enter fullscreen mode Exit fullscreen mode

Si no hay errores, reiniciamos el servicio de Samba con el siguiente comando:

sudo systemctl restart smbd
Enter fullscreen mode Exit fullscreen mode

Podemos verificar el estado del servicio con el siguiente comando:

sudo systemctl status smbd
Enter fullscreen mode Exit fullscreen mode

Acceder a la carpeta compartida desde Windows

Para acceder a la carpeta compartida desde Windows, abrimos powershell y ejecutamos el siguiente comando:

NET USE J: \\192.168.0.64\sambashare
Enter fullscreen mode Exit fullscreen mode

Donde J: es la letra de la unidad que queremos asignar a la carpeta compartida y 192.168.0.64 la dirección IP del servidor de archivos. Nos pedirá el nombre de usuario y contraseña que hemos creado anteriormente, en este caso usuario y su contraseña. Si no ocurre ningún error, ya sea de autenticación o de conexión, nos mostrará un mensaje similar a The command completed successfully. y montará la carpeta compartida en la unidad J:.

Para verificar que la carpeta compartida se ha montado correctamente, podemos abrir el explorador de archivos y verificar que la unidad J: está disponible, realizar algunas pruebas de escritura y lectura, y comprobar que esos archivos se reflejan en nuestro servidor de archivos.

Acceso a la carpeta compartida

Carpeta compartida

Configuraciones Adicionales

Bajar brillo de la pantalla

En caso de que el equipo sea una laptop podemos bajar el brillo de la pantalla remotamente accediendo mediante SSH y con el paquete brightnessctl.

ssh usuario@ip

# Ejemplo
ssh [email protected]
Enter fullscreen mode Exit fullscreen mode

Una vez dentro del servidor, ejecutamos el siguiente comando:

brightnessctl s 0
Enter fullscreen mode Exit fullscreen mode

Para subir el brillo de la pantalla, ejecutamos el comando anterior con el valor 100:

brightnessctl s 100
Enter fullscreen mode Exit fullscreen mode

En caso de que sea un equipo de escritorio, basta con apagar el monitor manualmente, o también este proceso es válido, todo depende de nuestras necesidades.

Modificar política de suspensión

Una vez que el brillo está al mínimo, podemos modificar algunas configuraciones de energía para evitar que se suspenda al bajar la pantalla o al presionar el botón de encendido. Para ello, ejecutamos el siguiente comando:

Abrimos con permisos de superusuario el archivo /etc/systemd/logind.conf:

sudo nano /etc/systemd/logind.conf
Enter fullscreen mode Exit fullscreen mode

Buscamos las siguientes líneas, eliminamos el símbolo # al inicio de la línea y cambiamos el valor a ignore, en caso de que no existan, las agregamos al final del archivo:

HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore
HandlePowerKey=ignore
Enter fullscreen mode Exit fullscreen mode

Presionamos Ctrl + O seguido de Enter para guardar los cambios y Ctrl + X para salir. Reiniciamos el servicio de systemd-logind con el siguiente comando:

sudo systemctl restart systemd-logind
Enter fullscreen mode Exit fullscreen mode

Con esto evitamos que el sistema se suspenda al bajar la pantalla o al presionar el botón de encendido.

Conclusión

Estos son todos los pasos necesarios para configurar un servidor de archivos de manera local utilizando Ubuntu Server y Samba. Con esto, podemos compartir archivos en la red local de manera sencilla y segura, además de que podemos acceder a los archivos desde cualquier dispositivo en la red local. Aprovechando este equipo de cómputo podemos configurar otros servicios como un servidor de impresión, un servidor de correo, desplegar una página web, usar docker y exponer servicios, entre otros.

linux Article's
30 articles in total
Favicon
Easy development environments with Nix and Nix flakes!
Favicon
Setting Up a Simple Two-Node Kubernetes Cluster in No Time
Favicon
Nextcloud on Raspberry Pi - Fedora + Podman Quadlets
Favicon
NVIDIA Drivers with Secure Boot on Ubuntu
Favicon
Как создать свой VPN и получить доступ ко всему?
Favicon
How I used a named pipe to save memory and prevent crashes (in Perl)
Favicon
KDE vs GNOME vs Others: Choosing the Best Linux Desktop Environment in 2025
Favicon
The Linux Foundation Data and AI Fundamentals
Favicon
Kubernetes Security Best Practices
Favicon
A new shell for using modern alternatives to Unix commands
Favicon
Como configurar 2FA em Servidores Linux
Favicon
Configurar servidor de archivos local con Ubuntu y Samba
Favicon
Google Cloud Shell: Establishing Secure Connections via SSH
Favicon
Understanding Linux Shells: Interactive, Non-Interactive, and RC Files
Favicon
[Boost]
Favicon
I am going to learn java in next 8 weeks, please follow me for regular updates
Favicon
Configuring network access with Cisco ASA via minicom utility
Favicon
Fixing Linux Backup Sync Issues for exFAT Compatibility
Favicon
Enhance Your macOS Terminal with Oh My Zsh, Autosuggestions, and Powerlevel10k
Favicon
Turning Markdown into Learning: publishing a challenge on labs.iximiuz.com
Favicon
Fixes for a critical rsync vulnerability (CVE-2024-12084) have been released for Stable/Bookworm, Testing and Unstable....
Favicon
My Zig with Ghostty
Favicon
Understanding Node Problem Detector in Kubernetes: Beyond Default Node Conditions
Favicon
Nginx Simplified: Technical Insights with Real-World Analogies
Favicon
GNOME vs KDE Plasma: Which One Is for You?
Favicon
SSH Keys | Change the label of the public key
Favicon
Debian and KDE 6 - WSL - How to install KDE 6 via Debian - Windows 11 - X410 - Linux - 2024 https://www.youtube.com/watch?v=yrtgmwsptVc
Favicon
Linux/Unix login overview and a bit of clever tricks with "history"
Favicon
🏆 Branching to Level Up in the Cloud! ☁️
Favicon
Mastering Linux File Systems: Everything You Need to Know About Symlinks and Hard Links

Featured ones: