Categoría: Sistemas

  • Práctica guiada: Instalación de Cypht en Ubuntu Server con Docker

    Práctica guiada: Instalación de Cypht en Ubuntu Server con Docker

    1. Introducción

    En esta práctica vamos a instalar Cypht en una máquina Ubuntu Server.

    Cypht es una aplicación web que permite consultar varias cuentas de correo desde una única interfaz. A diferencia de otros clientes webmail más clásicos, Cypht está pensado para actuar como un agregador de cuentas de correo, por lo que resulta especialmente útil cuando queremos gestionar varias direcciones desde el navegador.

    Durante la práctica utilizaremos Docker y Docker Compose, ya que esto nos permite instalar Cypht junto con su base de datos de una forma más limpia, controlada y fácil de mantener.


    2. Objetivos de la práctica

    Al finalizar esta práctica, el alumno será capaz de:

    • Crear una máquina virtual Ubuntu Server.
    • Instalar Docker en Ubuntu Server.
    • Usar Docker Compose para desplegar varios servicios.
    • Instalar Cypht junto con MariaDB.
    • Acceder a Cypht desde un navegador web.
    • Comprender el funcionamiento básico de un servicio web desplegado con contenedores.
    • Solucionar errores habituales relacionados con permisos de Docker.

    3. Escenario de la práctica

    Vamos a crear el siguiente entorno:

    Navegador del alumno
    |
    v
    http://IP_DEL_SERVIDOR:8085
    |
    v
    Ubuntu Server
    |
    +-- Contenedor Cypht
    |
    +-- Contenedor MariaDB

    Cypht será la aplicación web y MariaDB almacenará la configuración y los datos necesarios.


    4. Requisitos previos

    Para realizar esta práctica necesitamos:

    • Una máquina virtual con Ubuntu Server 24.04 o similar.
    • Acceso a Internet desde la máquina virtual.
    • Un usuario con permisos de sudo.
    • Al menos:
      • 2 CPU
      • 4 GB de RAM recomendados
      • 25 GB de disco como mínimo
    • Conocimientos básicos de terminal Linux.

    5. Configuración recomendada de la máquina virtual

    Si se trabaja con Proxmox, VirtualBox, VMware o similar, se recomienda crear la máquina con estos valores:

    RecursoValor recomendado
    Sistema operativoUbuntu Server 24.04
    CPU2 cores
    RAM4 GB
    Disco25 GB mínimo
    RedNAT o adaptador puente
    AccesoConsola o SSH

    Importante:
    Con 1 CPU y 2 GB de RAM la instalación puede funcionar, pero el sistema irá justo. Para trabajar cómodamente con Docker, Cypht y MariaDB, se recomienda usar 2 CPU y 4 GB de RAM.


    Parte 1: Preparación del sistema

    Paso 1. Actualizar el sistema

    sudo apt update

    Entramos en la máquina Ubuntu Server y actualizamos los repositorios:

    Después actualizamos los paquetes instalados:

    sudo apt upgrade -y

    Paso 2. Instalar herramientas necesarias

    Instalamos algunos paquetes que necesitaremos para añadir el repositorio oficial de Docker:

    sudo apt install -y ca-certificates curl gnupg

    Parte 2: Instalación de Docker

    Paso 3. Crear el directorio para las claves de Docker

    Ejecutamos:

    sudo install -m 0755 -d /etc/apt/keyrings

    Este directorio se usará para guardar la clave GPG del repositorio oficial de Docker.


    Paso 4. Descargar la clave GPG de Docker

    Ejecutamos:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

    Después damos permisos de lectura a la clave:

    sudo chmod a+r /etc/apt/keyrings/docker.gpg

    Paso 5. Añadir el repositorio oficial de Docker

    Ejecutamos el siguiente comando completo:

    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
    https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    Actualizamos de nuevo los repositorios:

    sudo apt update

    Paso 6. Instalar Docker y Docker Compose

    Instalamos Docker:

    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    Comprobamos que Docker se ha instalado correctamente:

    docker --version

    Y comprobamos Docker Compose:

    docker compose version

    Si los comandos muestran una versión, la instalación ha sido correcta.


    Paso 7. Comprobar el estado del servicio Docker

    Ejecutamos:

    sudo systemctl status docker

    Si aparece como active (running), Docker está funcionando.

    Podemos salir de esa pantalla pulsando:

    q

    Si Docker no estuviera activo, lo arrancamos con:

    sudo systemctl enable --now docker

    Parte 3: Preparación de Cypht

    Paso 8. Crear la carpeta de trabajo

    Crearemos la instalación en /opt/cypht.

    sudo mkdir -p /opt/cypht

    Cambiamos el propietario de la carpeta para poder trabajar cómodamente con nuestro usuario:

    sudo chown -R $USER:$USER /opt/cypht

    Entramos en la carpeta:

    cd /opt/cypht

    Paso 9. Crear el archivo docker-compose.yml

    Creamos el archivo:

    nano docker-compose.yml

    Dentro pegamos el siguiente contenido:

    services:
    db:
    image: mariadb:10
    container_name: cypht-db
    restart: unless-stopped
    volumes:
    - ./data/mysql:/var/lib/mysql
    environment:
    MYSQL_ROOT_PASSWORD: Cambia_Esta_Clave_Root
    MYSQL_DATABASE: cypht
    MYSQL_USER: cypht
    MYSQL_PASSWORD: Cambia_Esta_Clave_Cypht
    healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-ucypht", "-pCambia_Esta_Clave_Cypht"]
    interval: 10s
    timeout: 5s
    retries: 5

    cypht:
    image: cypht/cypht:2.8.0
    container_name: cypht
    restart: unless-stopped
    depends_on:
    db:
    condition: service_healthy
    ports:
    - "8085:80"
    environment:
    AUTH_USERNAME: admin
    AUTH_PASSWORD: Cambia_Esta_Clave_Admin

    DB_CONNECTION_TYPE: host
    DB_DRIVER: mysql
    DB_HOST: db
    DB_NAME: cypht
    DB_USER: cypht
    DB_PASS: Cambia_Esta_Clave_Cypht

    SESSION_TYPE: DB
    USER_CONFIG_TYPE: DB
    volumes:
    - ./data/log/nginx:/var/log/nginx
    - ./data/log/php:/var/log/php
    - ./data/log/supervisord:/var/log/supervisord
    - ./data/fonts:/usr/local/share/cypht/site/fonts

    Guardamos el archivo en nano:

    Ctrl + O
    Enter
    Ctrl + X

    Paso 10. Cambiar las contraseñas

    Antes de arrancar los contenedores, debemos modificar las siguientes claves:

    Cambia_Esta_Clave_Root
    Cambia_Esta_Clave_Cypht
    Cambia_Esta_Clave_Admin

    Podemos editar el archivo de nuevo:

    nano docker-compose.yml

    Por ejemplo:

    MYSQL_ROOT_PASSWORD: Root_1234_segura
    MYSQL_PASSWORD: Cypht_1234_segura
    AUTH_PASSWORD: Admin_1234_segura
    DB_PASS: Cypht_1234_segura

    Importante:
    La contraseña MYSQL_PASSWORD y la contraseña DB_PASS deben coincidir, porque una define la contraseña del usuario de la base de datos y la otra es la contraseña que usará Cypht para conectarse a esa base de datos.


    Parte 4: Arranque de Cypht

    Paso 11. Levantar los contenedores

    Desde la carpeta /opt/cypht, ejecutamos:

    sudo docker compose up -d

    La opción -d significa que los contenedores se ejecutarán en segundo plano.


    Paso 12. Comprobar que los contenedores están funcionando

    Ejecutamos:

    sudo docker ps

    Deberíamos ver dos contenedores:

    • cypht
    • cypht-db

    Ejemplo de salida esperada:

    CONTAINER ID   IMAGE              PORTS                  NAMES
    xxxxxxxxxxxx cypht/cypht:2.8.0 0.0.0.0:8085->80/tcp cypht
    xxxxxxxxxxxx mariadb:10 3306/tcp cypht-db

    Paso 13. Ver los logs si algo falla

    Si algún contenedor no aparece o hay problemas, revisamos los logs:

    sudo docker compose logs -f

    Para salir de los logs:

    Ctrl + C

    También podemos ver solo los logs de Cypht:

    sudo docker compose logs -f cypht

    O solo los de MariaDB:

    sudo docker compose logs -f db

    Parte 5: Acceso desde el navegador

    Paso 14. Obtener la IP del servidor

    Ejecutamos:

    ip a

    Buscamos la dirección IP de la tarjeta de red principal. Suele aparecer en interfaces como:

    ens18
    ens33
    eth0
    enp0s3

    Ejemplo:

    inet 192.168.1.80/24

    En este caso, la IP sería:

    192.168.1.80

    Paso 15. Entrar en Cypht desde el navegador

    Desde el ordenador anfitrión o desde otro equipo de la misma red, abrimos:

    http://IP_DEL_SERVIDOR:8085

    Por ejemplo:

    http://192.168.1.80:8085

    El usuario será:

    admin

    La contraseña será la que hayamos puesto en:

    AUTH_PASSWORD

    Parte 6: Apertura del puerto en el firewall

    Paso 16. Comprobar si UFW está activo

    Ejecutamos:

    sudo ufw status

    Si aparece como inactive, no hace falta abrir nada.

    Si aparece como active, abrimos el puerto 8085:

    sudo ufw allow 8085/tcp

    Comprobamos de nuevo:

    sudo ufw status

    Parte 7: Añadir cuentas de correo en Cypht

    Paso 17. Datos necesarios para configurar una cuenta

    Para añadir una cuenta de correo en Cypht necesitamos conocer los datos del servidor de correo.

    Normalmente necesitaremos:

    DatoEjemplo
    Servidor IMAPmail.midominio.com
    Puerto IMAP993
    Seguridad IMAPSSL/TLS
    Usuariousuario@midominio.com
    ContraseñaContraseña del correo
    Servidor SMTPmail.midominio.com
    Puerto SMTP587
    Seguridad SMTPSTARTTLS

    Paso 18. Añadir una cuenta IMAP

    Dentro de Cypht:

    1. Entramos con el usuario admin.
    2. Accedemos a la configuración.
    3. Buscamos la sección de cuentas o servidores IMAP.
    4. Añadimos los datos de la cuenta.
    5. Guardamos la configuración.

    Ejemplo de configuración IMAP:

    Servidor IMAP: mail.midominio.com
    Puerto: 993
    Seguridad: SSL/TLS
    Usuario: usuario@midominio.com
    Contraseña: ********

    Paso 19. Añadir una cuenta SMTP

    Para poder enviar correos también debemos configurar SMTP.

    Ejemplo:

    Servidor SMTP: mail.midominio.com
    Puerto: 587
    Seguridad: STARTTLS
    Usuario: usuario@midominio.com
    Contraseña: ********

    Nota:
    En algunos proveedores de correo puede ser necesario activar el acceso por aplicaciones externas o generar una contraseña específica de aplicación.


    Parte 8: Comandos básicos de administración

    Ver contenedores activos

    sudo docker ps

    Ver todos los contenedores, incluso los detenidos

    sudo docker ps -a

    Parar Cypht

    cd /opt/cypht
    sudo docker compose down

    Arrancar Cypht de nuevo

    cd /opt/cypht
    sudo docker compose up -d

    Reiniciar los contenedores

    cd /opt/cypht
    sudo docker compose restart

    Ver logs

    cd /opt/cypht
    sudo docker compose logs -f

    Actualizar imágenes

    cd /opt/cypht
    sudo docker compose pull
    sudo docker compose up -d

    Parte 9: Error habitual de permisos con Docker

    Problema

    Puede aparecer este error:

    unable to get image 'mariadb:10': permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

    Este error significa que el usuario actual no tiene permisos para comunicarse con Docker.


    Solución rápida

    Ejecutar el comando con sudo:

    sudo docker compose up -d

    Solución permanente

    Añadimos nuestro usuario al grupo docker:

    sudo usermod -aG docker $USER

    Después reiniciamos la máquina:

    sudo reboot

    Cuando vuelva a arrancar, comprobamos:

    docker ps

    Si ya no aparece el error, podremos usar Docker sin sudo.

    Importante:
    Añadir un usuario al grupo docker le da mucho poder sobre el sistema. En un servidor real, esto debe hacerse solo con usuarios de confianza.


    Parte 10: Comprobaciones finales

    Al terminar la práctica, debemos comprobar:

    ComprobaciónResultado esperado
    Docker está instaladodocker --version muestra una versión
    Docker Compose funcionadocker compose version muestra una versión
    Los contenedores están activossudo docker ps muestra cypht y cypht-db
    Cypht responde en navegadorSe puede acceder a http://IP:8085
    El usuario admin funcionaPodemos iniciar sesión
    El puerto está abiertoEl navegador conecta correctamente
    Se puede añadir una cuenta IMAPLa cuenta aparece en Cypht
  • 3. ¿Qué es una Red Virtual?

    3. ¿Qué es una Red Virtual?

    Muchas aplicaciones y servicios precisan de una infraestructura de red formada por varios equipos conectados entre sí. Esto puede suceder tanto cuando trabajamos en producción como para pruebas de calidad o en el ámbito académico. A veces no nos resulta interesante o no compensa económicamente hacerlo con hardware y cableado real. Es por eso por lo que disponemos de la posibilidad de crear redes complejas de forma virtual, donde administraremos diferentes equipos virtuales desde un solo equipo anfitrión.

    En este apartado vamos a aprender a crear redes virtuales, ya sea para instalar servidores aislados, entornos de prueba y escenarios profesionales de forma más flexible, económica y segura.

    ¿Qué es una Red Virtual?

    En una red virtual no solo tenemos virtualizados los equipos con sistemas operativos, sino que además virtualizamos todos los elementos de la infraestructura como tarjetas de red, cables, switches y routers.

    En otras palabras, una red virtual reproduce una red real, pero lo hace dentro de un entorno virtualizado.

    Por ejemplo, vamos a imaginar que tenemos que montar un pequeño laboratorio para simular la red de una empresa, en esta red queremos configurar un servidor, comprobar que los clientes pueden acceder a las aplicaciones y servicios, detectar errores y vulnerabilidades.

    Al hacerlo mediante una red virtual podremos trabajar con un caso de uso muy próximo a la realidad, pero en un entorno más accesible y seguro para el aprendizaje.

    VLANs y Redes Virtuales

    Aunque no son exactamente lo mismo, las VLAN están muy relacionadas con la virtualización de redes. Una VLAN permite organizar la red física en varias redes independientes. En entornos virtuales podemos integrar máquinas virtuales en redes segmentadas reales o crear nuevas redes.

    Vamos a hacer una comparativa entre crear una VLAN física frente a una en Red virtual

    Ventajas

    VentajaDescripción
    FlexibilidadPermiten levantar sistemas y redes en poco tiempo.
    Ahorro de costesReducen la necesidad de hardware físico.
    EscalabilidadEs fácil ampliar el número de máquinas o segmentos de red.
    AislamientoSe pueden crear entornos seguros y separados del resto.
    ReutilizaciónUn mismo host puede albergar múltiples laboratorios o servicios. Duplicarlos, clonarlos…
    Rapidez de despliegueLos cambios se aplican mucho más rápido que en infraestructuras físicas y no tenemos que desplazarnos.

    Desventajas

    DesventajasDescripción
    Dependencia del hostSi el equipo anfitrión falla, pueden caer varias máquinas y redes a la vez.
    Posibles cuellos de botellaTodos los sistemas virtuales comparten recursos de la máquina anfitrión.
    Riesgo de mala segmentaciónUna mala configuración puede mezclar redes o exponer servicios sin querer.
    Falsa sensación de aislamientoSi no se diseña bien, una red supuestamente privada, puede terminar conectada al exterior.

    Tipos de Conexiones en Redes Virtuales

    Cuando utilizamos hipervisores como, VirtualBox, VMware, Hyper-V, Proxmox, KVM/QEMU, etc. al crear las máquinas virtuales disponemos de una o varias interfaces de red virtuales, que se comportan como tarjetas de red físicas y también Switch y routers para que interactúen entre sí.

    De tal modo que podemos simular cualquier topología de red que deseemos implementar. Existen varios tipos de red al utilizar hipervisores, las cuatro más comunes son:

    • NAT: Esta opción permite que una máquina virtual pueda acceder a internet utilizando el equipo anfitrión como router. Como ya hemos utilizado anteriormente, sirve para aislar un solo sistema de nuestra red manteniendo un acceso a internet.
    • Red NAT: Mantiene las restricciones del caso anterior NAT, pero nos permite simular más de un dispositivo pudiendo crear infraestructuras de Red complejas con acceso a internet, pero que no tengan comunicación con la red principal. Muy útiles para realizar pruebas de implantaciones que precisen de varios equipos para realizar pruebas de seguridad o calidad.
    • Adaptador puente o Bridged: Las máquinas virtuales se integran en la red física como equipos reales, son totalmente visibles al resto de la red. Conectarlas en este modo resulta útil cuando queremos ampliar algún servicio en nuestra red sin tener que implementar nuevo hardware a nuestra red.
    • Red Interna: La opción de Red Interna actúa de forma muy similar a las redes NAT donde podemos crear nuevas redes, pero en este caso sin acceso a internet. Este tipo es muy útil para laboratorios de ciberseguridad, dado que tiene un aislamiento absoluto.
    • Host-only: Esta opción es la menos versátil, pues solo permite comunicación creando un canal privado con el host o equipo anfitrión.
    Caso de Uso Para entender todo esto mucho mejor, vamos a realizar un caso de uso paso a paso. Desde el departamento de desarrollo nos han pedido que creemos una subred con tres equipos aislados del resto de la red de la empresa, pero con conexión a internet. La red contendrá dos dispositivos clientes y un servidor web Ubuntu Server con Apache2 y conexión vía SSH, para que los desarrolladores puedan realizar pruebas de funcionamiento y en encontrar posibles errores del proyecto que están realizado antes de subirlo a producción. Nos solicitan que los equipos clientes tengan diferentes sistemas operativos, uno con Ubuntu Desktop y otro con Windows.

    Para resolver la petición del departamento de desarrolladores, vamos a crear una red virtual que permita la comunicación entre tres máquinas, manteniéndolas aisladas de la red principal de la empresa, pero con acceso a Internet. Para ello utilizaremos un hipervisor como VirtualBox, aunque se podría realizar en otras plataformas de virtualización como VMWare.

    Diseño de la topología

    El primer paso será definir el tipo de red que queremos implantar. En este caso, la opción más adecuada es utilizar una Red NAT dentro de VirtualBox. Este tipo de red cumple con los requerimientos solicitados permitiendo que varias máquinas virtuales compartan una misma subred privada, puedan comunicarse entre sí y, además, tengan salida a Internet a través del equipo anfitrión.

    EquipoDirección IPMáscaraPuerta de enlace
    Ubuntu Desktop10.0.2.10255.255.255.010.0.2.1
    Windows10.0.2.11255.255.255.010.0.2.1
    Ubuntu Server10.0.2.12255.255.255.010.0.2.1

    Dentro de VirtualBox, debemos acceder al apartado de herramientas de red y crear una Red NAT nueva para las tres máquinas virtuales. Por ejemplo, podemos crear una red con estas características:

    • Nombre de la red: RedDesarrollo
    • Rango de red: 10.0.2.0/24
    Panel de configuración de Red NAT en VirtualBox

    Es importante que todas estén conectadas a la misma red virtual; de lo contrario, no podrán comunicarse entre sí.

    Partiendo de tres máquinas ya creadas y procederemos a configurar la red de cada una de ellas.

    Seleccionamos la máquina Ubuntu Desktop y en la configuración de VirtualBox. En el campo conectado a, elegimos la opción Red NAT y en el nombre de la red seleccionamos RedDesarrollo. Guardamos los cambios y pasamos a la siguiente máquina.

    Panel de configuración de adaptador de red en VirtualBox

    Repetimos el mismo procedimiento con la máquina Windows y la de Ubuntu Server poniendo en todas el tipo de Red NAT y nombre de la red RedDesarrollo.

    Ahora ya tenemos los equipos en una única red, el siguiente paso es realizar la configuración de las direcciones IPs según la tabla de la topología y realizar las pruebas para ver que todo funciona.

    Si la red NAT está funcionando correctamente, cada máquina debería obtener una dirección IP perteneciente a la misma subred.

    Por ejemplo, en los sistemas Linux podemos utilizar en la terminal el comando:

    ip a

    Y comprobamos que los equipos pertenecen a la red de redDesarrollo al tener una IP con la dirección 10.0.2.X.

    Captura de terminal Linux mostrando la IP asignada al dispositivo.

    El último paso que debemos realizar antes de entregar el despliegue sería ver si las máquinas tienen conexión entre sí y acceso a internet. Para ello desde la terminal de las diferentes máquinas realizaremos un “ping” a los dispositivos y a una IP de un servicio de internet.

    Captura de terminal Linux con resultados de la conexión

    Conclusión

    Gracias a las redes virtuales es posible segmentar servicios, aislar entornos, conectar servidores, automatizar despliegues y administrar infraestructuras complejas de forma rápida y segura. Por ello, comprender cómo se implantan y configuran no solo resulta útil para el aprendizaje, sino que constituye también una competencia esencial para trabajar en administración de sistemas, virtualización, cloud y redes empresariales modernas, para organizar entornos mucho más grandes en plataformas como Proxmox, centros de datos virtualizados o servicios en la nube como AWS.

  • 2. Sistemas Operativos de Red y Protocolos TCP/IP

    2. Sistemas Operativos de Red y Protocolos TCP/IP

    🎧 Resumen en audio del tema
    Escucha este breve audio para repasar las ideas principales de los fundamentos de redes informáticas antes de continuar o al finalizar la lectura.


    Cuando hablamos de redes informáticas, muchas veces pensamos solo en cables, routers, switches o conexión a Internet. Sin embargo, una red no funciona de verdad solo por estar físicamente conectada. Para que varios equipos puedan compartir recursos, trabajar de forma organizada y mantener la seguridad, hace falta una capa de software que controle todo ese entorno.

    Ahí es donde entran en juego los Sistemas Operativos de Red (SOR) y la familia de protocolos TCP/IP.

    Un sistema operativo de red permite administrar usuarios, equipos, permisos, recursos compartidos y servicios. Por su parte, TCP/IP proporciona el lenguaje común que utilizan los dispositivos para comunicarse, tanto dentro de una red local como a través de Internet.

    En este tema vamos a estudiar los fundamentos de ambos conceptos, viendo cómo se gestionan usuarios y accesos en entornos profesionales, cómo funcionan las redes en sistemas Microsoft y por qué TCP/IP es la base de prácticamente todas las comunicaciones actuales.


    1. El Sistema Operativo de Red (SOR)

    Un Sistema Operativo de Red es un sistema diseñado para permitir la comunicación, administración y uso compartido de recursos entre varios equipos conectados en red.

    Su misión principal es coordinar el acceso a los recursos y garantizar que los usuarios puedan trabajar de manera simultánea, ordenada y segura.

    ¿Por qué es necesario un SOR?

    Imagina una red con 20 ordenadores en un aula, oficina o empresa. Si cada equipo gestionara sus propios usuarios, sus propias contraseñas, sus propias carpetas compartidas y sus propios permisos de forma independiente, el resultado sería un auténtico caos:

    • los usuarios tendrían múltiples cuentas distintas,
    • sería difícil controlar quién accede a qué,
    • la administración sería lenta y repetitiva,
    • la seguridad sería mucho más débil.

    Un sistema operativo de red evita ese desorden, centralizando o coordinando la gestión del entorno.


    2. Tipos de sistemas operativos

    Podemos distinguir dos grandes grupos:

    2.1. Sistemas operativos de escritorio

    Son los diseñados para el uso cotidiano de un único usuario sobre un equipo concreto.

    Ejemplos:

    • Windows 10
    • Windows 11
    • Ubuntu Desktop
    • Linux Mint
    • Fedora Workstation

    Están orientados a tareas como navegación web, ofimática, reproducción multimedia o programación local.

    2.2. Sistemas operativos de servidor

    Están preparados para funcionar de manera estable durante largos periodos de tiempo, gestionando servicios, usuarios, permisos y recursos compartidos.

    Ejemplos:

    • Windows Server
    • Ubuntu Server
    • Debian Server
    • Red Hat Enterprise Linux
    • AlmaLinux

    Estos sistemas suelen utilizarse para ofrecer servicios como:

    • autenticación de usuarios,
    • almacenamiento de archivos,
    • servidores web,
    • bases de datos,
    • impresión en red,
    • copias de seguridad,
    • control de dominios.

    3. Arquitectura cliente-servidor

    En una red profesional, lo habitual es trabajar con una arquitectura cliente-servidor.

    ¿Qué significa esto?

    • Cliente: equipo o programa que solicita un recurso o servicio.
    • Servidor: equipo o programa que ofrece ese recurso o servicio.

    Por ejemplo:

    • un navegador web es cliente cuando solicita una página,
    • un servidor web entrega esa página,
    • un ordenador de aula puede actuar como cliente,
    • un servidor central puede almacenar usuarios y carpetas compartidas.

    Ventajas de este modelo

    • centraliza la administración,
    • facilita el control de usuarios y permisos,
    • mejora la seguridad,
    • permite escalar mejor la red,
    • simplifica el mantenimiento.

    Ejemplo real

    En un instituto, los alumnos pueden iniciar sesión en distintos ordenadores usando la misma cuenta de red. Eso es posible porque existe un servidor que centraliza la autenticación, los permisos y, en muchos casos, sus carpetas personales.


    4. Gestión de usuarios, derechos y accesos

    Una red profesional no puede funcionar correctamente si no está bien definida la gestión de identidades y permisos.

    No basta con que un usuario “entre” al sistema. También hay que controlar qué puede hacer, dónde puede hacerlo y hasta qué punto.


    5. Usuario vs. persona

    Es importante no confundir ambos conceptos.

    Persona

    Es el individuo real: un alumno, un profesor, un técnico, un empleado.

    Usuario

    Es la identidad digital con la que esa persona accede al sistema.

    Una misma persona puede tener:

    • una cuenta corporativa,
    • una cuenta de administrador,
    • una cuenta de pruebas,
    • o incluso no tener ninguna cuenta en un sistema concreto.

    Idea clave

    Las cuentas de usuario no deben compartirse.
    Cada acción realizada en un sistema debe poder asociarse a una identidad concreta. Esto permite:

    • mantener la trazabilidad,
    • exigir responsabilidad,
    • investigar incidencias,
    • reforzar la seguridad.

    6. Usuarios locales y usuarios de red

    Usuarios locales

    Son cuentas que existen únicamente en un equipo concreto.

    Ejemplo: un usuario creado en un PC con Windows o en una máquina Linux local.

    Características:

    • solo sirven en ese equipo,
    • no se comparten automáticamente con otros dispositivos,
    • son útiles en entornos pequeños o aislados.

    Usuarios de red

    Son cuentas almacenadas y gestionadas desde un servidor central.

    Características:

    • permiten iniciar sesión desde distintos equipos de la red,
    • centralizan la autenticación,
    • facilitan la administración,
    • son la base de los entornos profesionales.

    Comparativa rápida

    Tipo de usuarioDónde se almacenaDónde puede usarseAdministración
    LocalEn un único equipoSolo en ese equipoIndividual
    De redEn un servidor centralEn varios equipos de la redCentralizada

    7. Grupos de usuarios

    En redes medianas o grandes, asignar permisos usuario por usuario es una mala idea. Es lento, propenso a errores y difícil de mantener.

    Por eso se usan los grupos.

    ¿Qué es un grupo?

    Es una agrupación lógica de usuarios con características o necesidades similares.

    Ejemplos:

    • Alumnos
    • Profesores
    • Administración
    • Soporte
    • Dirección

    Ventajas de usar grupos

    • simplifican la gestión,
    • permiten aplicar permisos de forma masiva,
    • facilitan altas y bajas,
    • reducen errores administrativos.

    Ejemplo

    En lugar de dar permiso manual a 30 alumnos sobre una carpeta, se crea el grupo Alumnos y se asigna el permiso una sola vez a ese grupo.

    Cuando llega un nuevo alumno, basta con añadirlo al grupo.


    8. Derechos y permisos

    Aunque a veces se usan como sinónimos, no son exactamente lo mismo.

    Derechos

    Son capacidades del usuario sobre el sistema.

    Ejemplos:

    • iniciar sesión,
    • apagar el equipo,
    • administrar el sistema,
    • instalar software,
    • acceder por escritorio remoto.

    Permisos

    Son autorizaciones sobre un recurso concreto.

    Ejemplos:

    • leer un archivo,
    • modificar una carpeta,
    • ejecutar un programa,
    • borrar un documento,
    • controlar totalmente un recurso.

    Permisos más habituales

    PermisoQué permite
    LecturaVer el contenido
    EscrituraCrear o modificar
    EjecuciónEjecutar archivos o programas
    ModificaciónCambiar y borrar contenido
    Control totalGestión completa del recurso

    Herencia de permisos

    Muchos sistemas permiten que una carpeta herede permisos de su carpeta superior. Esto facilita la administración, pero también puede provocar errores si no se revisa bien.

    Ejemplo:

    • Carpeta principal: Documentos_Profesorado
    • Subcarpeta: Exámenes

    Si la subcarpeta hereda permisos, podría estar accesible para más usuarios de los deseados si la carpeta principal estaba mal configurada.


    9. Autenticación y autorización

    Son dos conceptos básicos y diferentes.

    Autenticación

    Responde a la pregunta: ¿Quién eres?

    Se verifica la identidad del usuario mediante:

    • nombre de usuario y contraseña,
    • PIN,
    • huella dactilar,
    • tarjeta inteligente,
    • doble factor de autenticación.

    Autorización

    Responde a la pregunta: ¿Qué puedes hacer?

    Una vez que el usuario ya ha demostrado quién es, el sistema decide:

    • a qué carpetas puede entrar,
    • qué programas puede usar,
    • si puede imprimir,
    • si puede instalar software,
    • si puede administrar el equipo.

    Ejemplo sencillo

    Un alumno inicia sesión correctamente en la red del centro:

    • La autenticación ha sido correcta.
    • Pero si intenta entrar en la carpeta de profesores y el sistema se lo impide, ahí entra en juego la autorización.

    10. Principio de mínimo privilegio

    Uno de los principios más importantes en administración y seguridad es el principio de mínimo privilegio.

    ¿Qué significa?

    Cada usuario debe tener únicamente los permisos imprescindibles para realizar su trabajo. Ni más, ni menos.

    ¿Por qué es tan importante?

    Porque reduce:

    • errores accidentales,
    • borrados no intencionados,
    • accesos indebidos,
    • impacto de un malware,
    • abuso de privilegios.

    Ejemplo

    Un alumno no necesita privilegios de administrador en los equipos del aula.
    Un profesor tampoco debería tener acceso total al servidor si no es necesario.
    Un técnico puede tener más permisos, pero solo en los sistemas que debe gestionar.

    Dar permisos de más parece cómodo al principio, pero suele acabar generando problemas.


    11. Redes en sistemas Microsoft

    Los entornos Microsoft han sido históricamente muy usados en empresas, centros educativos y administraciones públicas.

    Windows utiliza TCP/IP de forma nativa para comunicarse en red y ofrece mecanismos específicos para compartir recursos, autenticar usuarios y administrar equipos.


    12. Protocolos clave en entornos Microsoft

    12.1. SMB (Server Message Block)

    Es el protocolo utilizado para compartir:

    • archivos,
    • carpetas,
    • impresoras,
    • recursos de red.

    Cuando en Windows accedes a una carpeta compartida como:

    \\SERVIDOR\DOCUMENTOS

    normalmente estás usando SMB.

    12.2. Kerberos

    Es un protocolo de autenticación muy utilizado en dominios Windows.

    Su objetivo es verificar la identidad de los usuarios de forma segura, evitando enviar la contraseña constantemente por la red.

    Kerberos funciona mediante tickets y es una pieza esencial en Active Directory.

    12.3. DNS

    Es el sistema que traduce nombres a direcciones IP.

    Ejemplo:

    • Nombre: servidor-aula.local
    • IP: 192.168.1.20

    Hoy es fundamental en redes Microsoft, ya que muchos servicios de dominio dependen de una resolución de nombres correcta.

    12.4. NetBIOS

    Fue muy importante en redes Windows antiguas para identificar equipos y compartir recursos por nombre.

    Actualmente su uso es mucho menor, y en redes modernas ha sido desplazado en gran medida por DNS y otros mecanismos más actuales.


    13. Grupo de trabajo y dominio

    En Windows existen dos formas clásicas de organizar una red: grupo de trabajo y dominio.

    13.1. Grupo de trabajo

    Es un modelo simple en el que no existe un servidor central de autenticación.

    Cada equipo:

    • mantiene sus propias cuentas locales,
    • comparte sus propios recursos,
    • administra sus propios permisos.

    Ventajas

    • sencillo de montar,
    • útil en redes pequeñas,
    • no requiere servidor central.

    Inconvenientes

    • poca seguridad,
    • mala escalabilidad,
    • administración repetitiva,
    • poca trazabilidad.

    13.2. Dominio

    Es el modelo profesional. En él existe un servidor central, normalmente con Windows Server y Active Directory, que gestiona:

    • usuarios,
    • grupos,
    • políticas,
    • equipos,
    • permisos,
    • recursos compartidos.

    Ventajas

    • administración centralizada,
    • mejor seguridad,
    • más control,
    • mayor escalabilidad,
    • aplicación uniforme de políticas.

    Inconvenientes

    • mayor complejidad,
    • requiere servidor y configuración específica.

    Comparativa

    CaracterísticaGrupo de trabajoDominio
    Gestión de usuariosLocal en cada equipoCentralizada
    SeguridadLimitadaAlta
    EscalabilidadBajaAlta
    AdministraciónDesordenada en redes grandesMucho más eficiente
    Uso recomendadoRedes pequeñasEmpresas, centros educativos, organizaciones

    14. La familia de protocolos TCP/IP

    Si el sistema operativo de red organiza el entorno, TCP/IP hace posible la comunicación.

    La familia TCP/IP es el conjunto de protocolos que permite que los datos viajen entre dispositivos, tanto en redes locales como en Internet.

    Es el estándar real y práctico utilizado hoy en día.

    TCP/IP frente al modelo OSI

    Aunque muchas veces se estudia el modelo OSI de 7 capas por motivos didácticos, en la práctica TCP/IP suele representarse en 4 capas:

    1. Aplicación
    2. Transporte
    3. Internet
    4. Acceso a red

    15. Capa de Aplicación

    Es la capa más cercana al usuario y a los programas que utiliza.

    Aquí trabajan los protocolos que permiten servicios concretos.

    Protocolos destacados

    HTTP y HTTPS

    Permiten acceder a páginas web.

    • HTTP transmite información sin cifrar.
    • HTTPS añade cifrado mediante TLS/SSL, protegiendo contraseñas, formularios y datos sensibles.

    DNS

    Convierte nombres de dominio en direcciones IP.

    Ejemplo:

    • www.google.com → una IP concreta

    Sin DNS, tendríamos que recordar direcciones IP numéricas para visitar cualquier servicio.

    DHCP

    Asigna automáticamente parámetros de red a los equipos.

    Por ejemplo:

    • dirección IP,
    • máscara de subred,
    • puerta de enlace,
    • servidores DNS.

    Gracias a DHCP, un usuario puede conectar su portátil a una red y obtener configuración automáticamente sin tener que escribirla a mano.


    16. Capa de Transporte

    Se encarga de transportar los datos entre aplicaciones de origen y destino.

    También utiliza los puertos, que permiten distinguir qué aplicación debe recibir la información.

    Ejemplos:

    • puerto 80 → HTTP
    • puerto 443 → HTTPS
    • puerto 53 → DNS
    • puerto 25 → SMTP

    Protocolos principales

    TCP (Transmission Control Protocol)

    Es un protocolo orientado a conexión y fiable.

    Se asegura de que:

    • los datos lleguen,
    • lleguen completos,
    • lleguen en orden,
    • se retransmitan si algo falla.

    Se utiliza en servicios donde la integridad importa mucho, como:

    • navegación web,
    • transferencia de archivos,
    • correo electrónico,
    • acceso remoto seguro.

    UDP (User Datagram Protocol)

    Es mucho más ligero y rápido que TCP, pero no garantiza:

    • entrega,
    • orden,
    • retransmisión.

    Se usa cuando la velocidad importa más que la perfección.

    Ejemplos:

    • streaming,
    • videollamadas,
    • juegos online,
    • ciertos servicios de DNS.

    Comparativa TCP vs UDP

    CaracterísticaTCPUDP
    FiabilidadAltaBaja
    Control de entregaSíNo
    Orden de llegadaSíNo
    VelocidadMenorMayor
    Uso típicoWeb, archivos, correoStreaming, voz, juegos

    17. Capa de Internet

    Es la encargada del direccionamiento lógico y del encaminamiento de los paquetes hacia su destino.

    Aquí se decide cómo llegar desde un origen hasta una máquina situada en otra red.

    Protocolos principales

    IP (Internet Protocol)

    Es el protocolo fundamental del direccionamiento.

    Cada equipo conectado a una red necesita una dirección IP para poder identificarse y comunicarse.

    Ejemplo de IP privada:

    192.168.1.34

    IP no garantiza por sí sola que los datos lleguen correctamente. Esa fiabilidad, cuando se necesita, la aporta TCP.

    ICMP (Internet Control Message Protocol)

    Se utiliza para diagnóstico y control.

    Un ejemplo muy conocido es el comando:

    ping

    Cuando hacemos ping a una dirección o a un nombre de dominio, normalmente se están enviando mensajes ICMP para comprobar si existe conectividad.

    Ejemplo de uso

    Si un equipo no puede acceder a Internet, una de las primeras pruebas suele ser:

    • hacer ping a su puerta de enlace,
    • hacer ping a una IP externa,
    • hacer ping a un nombre de dominio.

    Con eso se puede empezar a distinguir si el problema es de conectividad o de resolución DNS.


    18. Capa de Acceso a Red

    Es la capa donde el software se encuentra con el hardware.

    Aquí se trabaja con:

    • tarjetas de red,
    • direcciones MAC,
    • tramas,
    • medios físicos,
    • señales eléctricas, ópticas o inalámbricas.

    Tecnologías habituales

    • Ethernet
    • Wi-Fi

    Dirección MAC

    Cada interfaz de red tiene asociada una dirección física o MAC.

    Esta dirección se utiliza en la comunicación dentro de la red local.

    Mientras que la IP identifica lógicamente al equipo en una red, la MAC identifica físicamente la interfaz en el nivel de acceso a red.


    19. El viaje de los datos: ejemplo completo

    Vamos a ver qué ocurre cuando un usuario abre una página web.

    Situación

    Un alumno escribe en el navegador:

    https://www.ejemplo.com

    Paso 1: Capa de Aplicación

    El navegador necesita acceder al sitio web.

    • Si no conoce la IP del servidor, utiliza DNS para resolver el nombre.
    • Después prepara la comunicación usando HTTPS.

    Paso 2: Capa de Transporte

    Se utiliza normalmente TCP porque interesa que los datos lleguen correctamente.

    El navegador se comunica con el puerto 443, que corresponde a HTTPS.

    Paso 3: Capa de Internet

    Los datos se encapsulan en paquetes IP.

    La dirección IP de origen será la del ordenador del alumno y la IP de destino será la del servidor web.

    Paso 4: Capa de Acceso a Red

    Los paquetes se convierten en tramas y se envían físicamente por la red mediante Ethernet o Wi-Fi.

    Resultado

    El servidor recibe la petición, responde, y el proceso inverso permite que la página llegue al navegador del usuario.


    20. Relación entre administración de red y TCP/IP

    Estos dos bloques no deben estudiarse por separado como si no tuvieran relación.

    En realidad, están totalmente conectados.

    • El sistema operativo de red organiza usuarios, equipos, permisos y recursos.
    • TCP/IP permite que todos esos elementos puedan comunicarse.

    Por ejemplo:

    • un usuario inicia sesión contra un servidor,
    • una carpeta compartida se accede por red,
    • una impresora se usa remotamente,
    • un controlador de dominio resuelve nombres y autentica identidades,
    • un servidor DHCP asigna IP a los clientes.

    Todo eso se apoya sobre TCP/IP.


    21. Ejemplos prácticos del día a día

    Ejemplo 1: Inicio de sesión en un aula

    Un alumno enciende un ordenador del aula e introduce su usuario y contraseña.

    • El sistema autentica su identidad.
    • Se aplican sus permisos.
    • Puede acceder a sus recursos de red.

    Ejemplo 2: Carpeta compartida de profesores

    Solo el grupo de profesores debe poder acceder a una carpeta con exámenes.

    • Se crea un grupo llamado Profesores.
    • Se asignan permisos a ese grupo.
    • Los alumnos no tienen acceso.

    Ejemplo 3: Asignación automática de red

    Un portátil se conecta al Wi-Fi del centro.

    • DHCP le entrega una IP.
    • DNS le permite resolver nombres.
    • TCP/IP hace posible toda la comunicación.

    Ejemplo 4: Diagnóstico básico

    Un usuario dice que “Internet no funciona”.

    El técnico puede comprobar:

    • si tiene IP,
    • si responde la puerta de enlace,
    • si funciona DNS,
    • si hay conectividad con el exterior.

    22. Errores habituales que conviene evitar

    En administración de red hay varios errores muy frecuentes:

    Compartir cuentas de usuario

    Rompe la trazabilidad y reduce la seguridad.

    Asignar permisos uno a uno

    Hace la gestión lenta y propensa a errores. Es mejor usar grupos.

    Dar privilegios excesivos

    Aumenta el riesgo de accidentes y abusos.

    No revisar herencias de permisos

    Puede dejar recursos accesibles a usuarios no autorizados.

    Pensar que “tener red” es solo tener Internet

    Una red bien administrada implica mucho más: usuarios, recursos, permisos, autenticación y organización.

    No diferenciar autenticación de autorización

    Un usuario puede estar autenticado correctamente y aun así no tener permiso para acceder a un recurso.


    Un sistema operativo de red es la base organizativa que permite que una red funcione de manera controlada, segura y eficiente. Gracias a él es posible gestionar usuarios, grupos, permisos, servicios y equipos desde una perspectiva global.

    En entornos profesionales, el modelo cliente-servidor y la administración centralizada son esenciales para evitar el desorden y reforzar la seguridad. En ese contexto, conceptos como autenticación, autorización, grupos de usuarios y mínimo privilegio son fundamentales.

    Por otro lado, la familia de protocolos TCP/IP constituye la base de la comunicación moderna. Sus capas permiten que los datos viajen desde una aplicación concreta hasta el medio físico, pasando por el transporte, el direccionamiento y el acceso a red.

    Entender estos fundamentos no es opcional para cualquier administrador de sistemas o técnico de redes: es la base sobre la que se construyen servicios más avanzados como dominios, servidores web, compartición de archivos, monitorización, seguridad y administración centralizada.


    Ideas clave

    Un sistema operativo de red no solo conecta equipos: organiza, controla y protege los recursos compartidos.

    Una persona y un usuario no son lo mismo: el usuario es su identidad digital.

    En redes profesionales, los permisos deben gestionarse mediante grupos, no usuario por usuario.

    Autenticación es demostrar quién eres; autorización es determinar qué puedes hacer.

    El principio de mínimo privilegio reduce riesgos y mejora la seguridad.

    En entornos Microsoft, SMB, Kerberos y DNS son tecnologías fundamentales.

    TCP/IP es el conjunto de protocolos que hace posible la comunicación en redes e Internet.

    TCP prioriza la fiabilidad; UDP prioriza la rapidez.

    IP direcciona los paquetes y ICMP ayuda a diagnosticar problemas de conectividad.

  • 1. Fundamentos de Redes Informáticas

    1. Fundamentos de Redes Informáticas

    🎧 Resumen en audio del tema
    Escucha este breve audio para repasar las ideas principales de los fundamentos de redes informáticas antes de continuar o al finalizar la lectura.


    Vivimos en una sociedad permanentemente conectada. Cada vez que enviamos un mensaje desde el teléfono móvil, vemos un vídeo en streaming o accedemos a una página web, estamos utilizando una red informática.

    Las redes surgieron para resolver una necesidad muy concreta: permitir que los ordenadores dejaran de trabajar de forma aislada y pudieran compartir información, recursos y servicios de manera rápida, eficiente y económica.

    Pero, ¿qué es exactamente una red? ¿Cómo consiguen comunicarse entre sí nuestros dispositivos en cuestión de milisegundos, incluso estando a miles de kilómetros de distancia?

    En este tema vamos a estudiar los conceptos básicos de redes informáticas: los tipos de redes según su alcance, los dispositivos que las forman, las topologías más habituales, los protocolos que hacen posible la comunicación y el modelo OSI, que nos ayuda a entender cómo viajan los datos de un equipo a otro.


    Objetivos del tema

    Al finalizar este tema, el alumno será capaz de:

    • Comprender qué es una red informática y por qué es importante.
    • Diferenciar los principales tipos de redes según su alcance.
    • Identificar los elementos básicos que forman una red local.
    • Entender las topologías más utilizadas en redes.
    • Reconocer los protocolos fundamentales de comunicación.
    • Interpretar el modelo OSI y relacionarlo con dispositivos y servicios reales.

    1. ¿Qué es una red informática?

    Una red informática es un conjunto de dispositivos conectados entre sí que pueden intercambiar información y compartir recursos.

    Estos dispositivos pueden ser ordenadores, móviles, impresoras, servidores, tablets, cámaras IP, televisores inteligentes y muchos otros equipos.

    Gracias a una red, es posible:

    • Compartir archivos.
    • Acceder a impresoras comunes.
    • Navegar por Internet.
    • Enviar correos electrónicos.
    • Utilizar aplicaciones en línea.
    • Conectarse a servidores y bases de datos.

    Ejemplo cotidiano

    Cuando conectas tu portátil al Wi-Fi de casa para ver una página web, están interviniendo varios elementos de red: tu tarjeta de red, el router, el proveedor de Internet, servidores intermedios y el servidor final que aloja esa web.


    2. Clasificación de las redes según su alcance

    Las redes pueden clasificarse según la distancia o el área geográfica que abarcan. De menor a mayor alcance, encontramos los siguientes tipos:

    2.1 BAN (Body Area Network)

    La BAN es una red de alcance muy reducido, normalmente de centímetros o pocos metros. Se utiliza para conectar dispositivos que se llevan encima del cuerpo o incluso integrados en él.

    Ejemplos:

    • Relojes inteligentes.
    • Pulseras de actividad.
    • Sensores médicos.
    • Dispositivos de monitorización corporal.

    2.2 PAN (Personal Area Network)

    La PAN conecta dispositivos personales en un radio pequeño, normalmente de unos 10 metros.

    Suele utilizar tecnologías de bajo consumo, como Bluetooth.

    Ejemplos:

    • Móvil conectado a auriculares inalámbricos.
    • Tablet enlazada con un teclado Bluetooth.
    • Teléfono móvil conectado a un smartwatch.

    2.3 LAN (Local Area Network)

    La LAN es una red de área local. Conecta dispositivos dentro de un espacio limitado, como:

    • Un aula.
    • Una oficina.
    • Un laboratorio.
    • Un edificio pequeño.

    Se caracteriza por ofrecer:

    • Alta velocidad.
    • Baja latencia.
    • Control privado.
    • Facilidad para compartir recursos.

    Ejemplos:

    • La red de ordenadores de un aula de informática.
    • La red de una empresa en una sola planta.
    • La red interna de un laboratorio.

    2.4 HAN (Home Area Network)

    La HAN puede considerarse un caso particular de red local, centrada en el entorno doméstico.

    Conecta los dispositivos de una vivienda.

    Ejemplos:

    • Ordenadores.
    • Móviles.
    • Smart TV.
    • Consolas.
    • Impresoras.
    • Cámaras IP.
    • Asistentes inteligentes.

    2.5 CAN (Campus Area Network)

    La CAN conecta varias redes LAN dentro de un recinto más amplio.

    Ejemplos:

    • Una universidad con varios edificios.
    • Un instituto con distintas sedes.
    • Un hospital con varias áreas conectadas.

    2.6 MAN (Metropolitan Area Network)

    La MAN conecta diferentes redes dentro de una misma ciudad o área metropolitana.

    Normalmente utiliza infraestructuras de alta capacidad, como fibra óptica.

    Ejemplo:

    • La red que conecta distintas sedes de una administración pública dentro de una ciudad.

    2.7 WAN (Wide Area Network)

    La WAN es una red de gran extensión geográfica. Permite conectar redes situadas en diferentes ciudades, países o incluso continentes.

    Para ello se apoya en infraestructuras de operadores de telecomunicaciones.

    Ejemplos:

    • La red corporativa de una empresa con oficinas en varias ciudades.
    • Redes bancarias distribuidas por diferentes países.

    2.8 GAN (Global Area Network)

    La GAN es una red de alcance global que interconecta redes WAN a escala mundial.

    Internet es el mayor ejemplo de este tipo de red.

    Ejemplos:

    • Internet.
    • Redes globales que utilizan satélites y cables submarinos.

    3. Elementos clave de una red local

    Para construir una red no basta con conectar ordenadores sin más. Es necesario utilizar varios componentes, y cada uno cumple una función específica.

    3.1 Equipos finales o hosts

    Son los dispositivos que generan o reciben la información.

    Ejemplos:

    • Ordenadores.
    • Portátiles.
    • Tablets.
    • Móviles.
    • Impresoras.
    • Cámaras IP.
    • Smart TV.
    • Servidores.

    Un servidor es un equipo preparado para ofrecer servicios a otros dispositivos de la red, como páginas web, archivos compartidos, correo electrónico o bases de datos.


    3.2 Switch (conmutador)

    El switch conecta varios dispositivos dentro de una red local cableada.

    Su función principal es enviar la información únicamente al equipo destinatario, utilizando para ello la dirección física o MAC.

    Idea clave:

    El switch organiza el tráfico dentro de la red local.


    3.3 Router (enrutador)

    El router conecta redes diferentes entre sí.

    En una red doméstica o de oficina, el router suele unir:

    • La red local.
    • Internet.

    Trabaja principalmente con direcciones IP y se encarga de decidir qué ruta debe seguir la información.

    Idea clave:

    El router es la puerta de salida desde la red local hacia otras redes.


    3.4 Módem / ONT

    Este dispositivo adapta la señal para que pueda viajar por la infraestructura del proveedor de Internet.

    Dependiendo del tipo de conexión, puede tratarse de:

    • Un módem.
    • Una ONT en conexiones de fibra óptica.

    Función:

    Transformar la señal de la red interna a un formato adecuado para el medio del operador.


    3.5 Medios de transmisión

    Son los caminos por los que viajan los datos.

    Pueden ser:

    Cableados

    • Cable de par trenzado.
    • Cable coaxial.
    • Fibra óptica.

    Inalámbricos

    • Wi-Fi.
    • Bluetooth.
    • Ondas de radio.

    4. Topologías de red: la arquitectura de la conexión

    La topología es la forma en la que se organizan físicamente o lógicamente los dispositivos de una red.

    4.1 Topología en bus

    Todos los equipos comparten un único cable central.

    Ventajas:

    • Sencilla.
    • Económica.

    Inconvenientes:

    • Si el cable principal falla, toda la red deja de funcionar.
    • Genera muchas colisiones.
    • Está obsoleta en entornos modernos.

    4.2 Topología en anillo

    Los dispositivos forman un círculo y la información circula en una dirección determinada.

    Ventajas:

    • Flujo ordenado de la información.

    Inconvenientes:

    • Si un equipo falla o se rompe el enlace, se interrumpe la comunicación.
    • Poco flexible.

    4.3 Topología en estrella

    Es la más utilizada actualmente.

    Todos los dispositivos están conectados a un nodo central, normalmente un switch o router.

    Ventajas:

    • Fácil de administrar.
    • Si falla un cable, solo se desconecta un equipo.
    • Permite ampliar la red con facilidad.

    Inconveniente:

    • Si falla el dispositivo central, la red puede quedar afectada.

    4.4 Topología en malla

    Cada dispositivo está conectado a varios nodos, de forma que existen rutas alternativas.

    Ventajas:

    • Alta redundancia.
    • Gran tolerancia a fallos.
    • Muy útil en redes críticas.

    Inconvenientes:

    • Mayor coste.
    • Configuración más compleja.

    5. El lenguaje de la red: protocolos de comunicación

    Conectar dispositivos no es suficiente. Todos deben seguir unas normas comunes para entenderse. Esas normas reciben el nombre de protocolos.

    La familia más importante hoy en día es TCP/IP, base del funcionamiento de Internet.

    5.1 IP (Internet Protocol)

    El protocolo IP identifica a cada dispositivo dentro de la red mediante una dirección IP.

    Podemos imaginarla como una dirección postal que permite saber:

    • De dónde sale la información.
    • A dónde debe llegar.

    5.2 TCP y UDP

    Ambos son protocolos de transporte, pero funcionan de forma diferente.

    TCP

    • Divide la información en partes.
    • Verifica que todo llegue correctamente.
    • Reordena los datos si es necesario.
    • Garantiza fiabilidad.

    Usos habituales:

    • Navegación web.
    • Correo electrónico.
    • Transferencia de archivos.

    UDP

    • Envía datos sin comprobar si han llegado.
    • Es más rápido.
    • Tiene menos sobrecarga.

    Usos habituales:

    • Videollamadas.
    • Streaming en directo.
    • Videojuegos online.

    5.3 DNS

    El DNS traduce nombres de dominio comprensibles para las personas a direcciones IP comprensibles para las máquinas.

    Ejemplo:

    • www.ejemplo.com → 142.250.190.14

    Idea clave:

    El DNS actúa como una agenda o guía telefónica de Internet.


    5.4 DHCP

    El DHCP asigna automáticamente una dirección IP a los dispositivos cuando se conectan a la red.

    Gracias a ello, el usuario no tiene que configurar manualmente la IP de cada equipo.


    5.5 HTTP y HTTPS

    Son los protocolos utilizados para la navegación web.

    HTTP

    Permite intercambiar páginas web y otros recursos entre cliente y servidor.

    HTTPS

    Es la versión segura de HTTP. Añade cifrado para proteger la información intercambiada.

    Ejemplo:

    Cuando introduces contraseñas o datos bancarios en una web, lo correcto es que esa web utilice HTTPS.


    6. El modelo OSI: entendiendo cómo viajan los datos

    El modelo OSI (Open Systems Interconnection) es un modelo teórico que divide la comunicación de red en 7 capas.

    Su objetivo es facilitar el estudio, diseño y resolución de problemas de red.

    6.1 Capa 1: Física

    Se encarga de transmitir bits a través del medio físico.

    Ejemplos:

    • Cables.
    • Señales eléctricas.
    • Luz en fibra óptica.
    • Ondas Wi-Fi.

    6.2 Capa 2: Enlace de datos

    Agrupa bits en tramas, detecta errores locales y utiliza direcciones MAC.

    Dispositivos relacionados:

    • Switches.

    6.3 Capa 3: Red

    Se encarga del direccionamiento lógico y del enrutamiento.

    Elementos clave:

    • Direcciones IP.
    • Routers.

    6.4 Capa 4: Transporte

    Garantiza la entrega de la información entre origen y destino.

    Protocolos principales:

    • TCP.
    • UDP.

    6.5 Capa 5: Sesión

    Controla el inicio, mantenimiento y cierre de la comunicación entre dos equipos.


    6.6 Capa 6: Presentación

    Se encarga de traducir, comprimir y cifrar los datos.

    Ejemplos:

    • Codificación.
    • Compresión.
    • Cifrado.

    6.7 Capa 7: Aplicación

    Es la capa más cercana al usuario. Aquí trabajan las aplicaciones que utilizamos a diario.

    Ejemplos:

    • Navegadores web.
    • Clientes de correo.
    • Aplicaciones de mensajería.
    • Servicios web.

    7. Encapsulación: el viaje de los datos

    Cuando un usuario envía un mensaje o solicita una página web, la información no viaja “tal cual”.

    Pasa por un proceso llamado encapsulación:

    1. Los datos se generan en la capa de aplicación.
    2. Van descendiendo por las capas del modelo.
    3. Cada capa añade su propia información de control.
    4. Finalmente, los bits viajan por el medio físico.

    En el equipo receptor ocurre lo contrario:

    1. La información entra por la capa física.
    2. Va subiendo capa a capa.
    3. Cada nivel interpreta y elimina su parte de control.
    4. La aplicación final muestra el contenido al usuario.

    8. Relación entre dispositivos, protocolos y capas

    Para entender mejor una red, conviene relacionar los conceptos vistos:

    • Switch → trabaja principalmente en la capa 2.
    • Router → trabaja principalmente en la capa 3.
    • TCP y UDP → pertenecen a la capa 4.
    • HTTP, HTTPS, DNS, DHCP → se usan en capas superiores, cercanas a la aplicación.
    • Cable, fibra, Wi-Fi → están relacionados con la capa 1.

    9. Ejemplo real de comunicación en una red

    Imagina que un alumno abre una página web desde el portátil del aula:

    1. Escribe la dirección de la web en el navegador.
    2. El equipo consulta al DNS para saber qué IP corresponde a ese nombre.
    3. El portátil envía la petición a través del switch de la red local.
    4. El router dirige la petición hacia Internet.
    5. La información atraviesa varias redes hasta llegar al servidor web.
    6. El servidor responde.
    7. Los datos regresan al portátil.
    8. El navegador interpreta la respuesta y muestra la página.

    En este proceso intervienen dispositivos, protocolos, medios físicos y varias capas del modelo OSI.


    Tabla comparativa: Modelo OSI vs Modelo TCP/IP

    Modelo OSIFunción principalModelo TCP/IPFunción principal
    7. AplicaciónProporciona servicios de red a las aplicaciones del usuarioAplicaciónReúne las funciones de aplicación, presentación y sesión
    6. PresentaciónTraduce, comprime y cifra los datosAplicaciónGestiona el formato de los datos y servicios de alto nivel
    5. SesiónEstablece, mantiene y cierra sesiones de comunicaciónAplicaciónControla la comunicación entre aplicaciones
    4. TransporteGarantiza la entrega de datos extremo a extremoTransporteGestiona la comunicación extremo a extremo mediante TCP o UDP
    3. RedSe encarga del direccionamiento lógico y del enrutamientoInternetGestiona direcciones IP y el envío de paquetes entre redes
    2. Enlace de datosControla acceso al medio, tramas y direcciones MACAcceso a la redManeja la transmisión local de datos sobre el medio físico
    1. FísicaTransmite bits por cables, radio o fibraAcceso a la redIncluye los medios físicos y el acceso al medio

    Resumen rápido

    AspectoModelo OSIModelo TCP/IP
    Número de capas7 capas4 capas
    OrigenModelo teórico de referenciaModelo práctico usado en Internet
    Nivel de detalleMás detalladoMás simplificado
    Uso realMuy usado para enseñar y diagnosticarBase real de las comunicaciones en red
    Capas superioresAplicación, Presentación y Sesión separadasSe agrupan en Aplicación
    Capas inferioresEnlace y Física separadasSe agrupan en Acceso a la red

    Relación entre ambos modelos

    OSITCP/IP
    Aplicación + Presentación + SesiónAplicación
    TransporteTransporte
    RedInternet
    Enlace de datos + FísicaAcceso a la red

    10. Resumen del tema

    Una red informática permite conectar dispositivos para compartir información y recursos.

    Según su alcance, las redes pueden ser BAN, PAN, LAN, HAN, CAN, MAN, WAN o GAN.

    Dentro de una red local encontramos elementos fundamentales como:

    • Hosts.
    • Switches.
    • Routers.
    • Módems / ONT.
    • Medios de transmisión.

    Las redes también se pueden organizar según distintas topologías, siendo la estrella la más habitual hoy en día.

    Para comunicarse, los dispositivos utilizan protocolos como:

    • IP
    • TCP
    • UDP
    • DNS
    • DHCP
    • HTTP
    • HTTPS

    Además, el modelo OSI permite entender de forma ordenada cómo viajan los datos desde una aplicación hasta el medio físico y viceversa.

  • 1.1 – Linux básico: rutas, carpetas y archivos

    1.1 – Linux básico: rutas, carpetas y archivos

    Una de las primeras cosas que hay que aprender en Linux es a moverse por el sistema de archivos y a trabajar con carpetas y archivos desde la terminal.

    Aunque al principio pueda parecer extraño, aprender estos comandos es fundamental porque:

    • permite entender cómo está organizado Linux,
    • ayuda a trabajar con rapidez,
    • es imprescindible para administración de sistemas,
    • y será la base para tareas más avanzadas como configurar servicios, editar archivos de configuración, automatizar tareas o revisar logs.

    En esta sesión vamos a centrarnos en:

    • comprender qué es una ruta,
    • movernos entre directorios,
    • listar contenido,
    • crear carpetas,
    • crear, copiar, mover y borrar archivos,
    • y entender buenas prácticas al trabajar en terminal.

    1. ¿Qué es una ruta?

    Una ruta es la dirección que indica dónde está un archivo o una carpeta dentro del sistema.

    Linux organiza la información como un gran árbol que empieza en una raíz llamada:

    /

    Ese símbolo / representa el punto de partida del sistema de archivos.

    Por ejemplo:

    /home/alumno/documentos

    indica que dentro de /home hay una carpeta llamada alumno, y dentro de ella una carpeta llamada documentos.


    2. Rutas absolutas y rutas relativas

    Ruta absoluta

    Una ruta absoluta empieza siempre desde la raíz /.

    Ejemplo:

    /home/alumno/descargas

    Da igual en qué carpeta te encuentres: esa ruta apunta siempre al mismo sitio.

    Ruta relativa

    Una ruta relativa parte desde la carpeta en la que estás en este momento.

    Ejemplo:

    Si estás en:

    /home/alumno

    y escribes:

    cd documentos

    Linux entiende que quieres ir a:

    /home/alumno/documentos

    3. Directorios especiales que debes conocer

    En Linux hay algunos símbolos muy usados para trabajar con rutas:

    .

    Representa el directorio actual.

    Ejemplo:

    cd .

    No cambia nada, porque te quedas donde estás.

    ..

    Representa el directorio superior, es decir, la carpeta anterior.

    Ejemplo:

    cd ..

    Sube un nivel.

    ~

    Representa el directorio personal del usuario.

    Por ejemplo, si tu usuario es alumno, ~ suele equivaler a:

    /home/alumno

    Ejemplo:

    cd ~

    Te lleva directamente a tu carpeta personal.


    4. Comando pwd

    ¿Para qué sirve?

    El comando pwd muestra la ruta completa de la carpeta en la que te encuentras.

    pwd significa:

    print working directory

    Uso

    pwd

    Ejemplo de salida

    /home/alumno

    Cuándo usarlo

    Es muy útil cuando:

    • no sabes en qué carpeta estás,
    • has navegado por varias rutas,
    • o quieres comprobar si un comando te ha llevado al lugar correcto.

    5. Comando ls

    ¿Para qué sirve?

    El comando ls muestra el contenido de una carpeta.

    Uso básico

    ls

    Muestra archivos y carpetas del directorio actual.

    Ejemplo

    ls

    Salida posible:

    documentos descargas imagenes notas.txt

    Variantes útiles

    ls -l

    Muestra la información en formato largo:

    ls -l

    Permite ver:

    • permisos,
    • propietario,
    • tamaño,
    • fecha,
    • nombre.

    ls -a

    Muestra también los archivos ocultos.

    ls -a

    En Linux, los archivos ocultos suelen empezar por punto, por ejemplo:

    .bashrc

    ls -la

    Combina ambas opciones:

    ls -la

    Muy útil para administración y revisión completa del contenido.


    6. Comando cd

    ¿Para qué sirve?

    cd permite cambiar de directorio.

    cd significa:

    change directory

    Ir a una carpeta dentro de la actual

    cd documentos

    Subir un nivel

    cd ..

    Ir al directorio personal

    cd ~

    o simplemente:

    cd

    Ir a una ruta absoluta

    cd /var/log

    Ejemplo práctico

    Si estás en:

    /home/alumno

    y ejecutas:

    cd documentos

    pasarás a:

    /home/alumno/documentos

    Si después haces:

    cd ..

    volverás a:

    /home/alumno

    7. Crear directorios con mkdir

    ¿Para qué sirve?

    Permite crear carpetas nuevas.

    mkdir significa:

    make directory

    Crear una carpeta

    mkdir pruebas

    Crear varias carpetas a la vez

    mkdir tema1 tema2 tema3

    Crear una estructura completa de carpetas

    mkdir -p curso/linux/comandos

    La opción -p permite crear todos los niveles necesarios.

    Sin -p, si alguna carpeta intermedia no existe, dará error.


    8. Crear archivos

    Hay varias formas de crear archivos en Linux.

    Opción 1: touch

    Crea un archivo vacío si no existe.

    touch notas.txt

    También puede usarse para actualizar la fecha de modificación de un archivo existente.

    Opción 2: redirección

    echo "Hola Linux" > saludo.txt

    Esto crea el archivo y escribe contenido en él.


    9. Ver contenido de archivos con cat

    ¿Para qué sirve?

    Muestra el contenido de un archivo en pantalla.

    cat saludo.txt

    Salida:

    Hola Linux

    También puede mostrar varios archivos:

    cat archivo1.txt archivo2.txt

    10. Copiar archivos y carpetas con cp

    Copiar un archivo

    cp notas.txt copia_notas.txt

    Copiar un archivo a otra carpeta

    cp notas.txt documentos/

    Copiar una carpeta completa

    Para copiar directorios se usa -r:

    cp -r proyecto proyecto_backup

    La opción -r significa recursivo.


    11. Mover y renombrar con mv

    El comando mv sirve tanto para mover como para renombrar.

    Renombrar un archivo

    mv notas.txt apuntes.txt

    Mover un archivo a otra carpeta

    mv apuntes.txt documentos/

    Mover una carpeta

    mv proyecto /home/alumno/backup/

    12. Borrar archivos y carpetas con rm y rmdir

    Borrar un archivo

    rm archivo.txt

    Borrar una carpeta vacía

    rmdir carpeta_vacia

    Borrar una carpeta con contenido

    rm -r carpeta

    Mucho cuidado con rm

    Este comando elimina contenido directamente. En terminal no hay papelera mágica que venga a salvarte del caos.

    Especial cuidado con comandos como:

    rm -r *

    o peor aún, usar rm sin revisar bien la ruta.

    Antes de borrar, conviene comprobar dónde estás con:

    pwd

    y qué hay dentro con:

    ls

    13. Comodines básicos

    Linux permite usar comodines para trabajar con varios archivos a la vez.

    *

    Representa cualquier conjunto de caracteres.

    Ejemplo:

    ls *.txt

    Muestra todos los archivos que terminen en .txt.

    ?

    Representa un solo carácter.

    Ejemplo:

    ls archivo?.txt

    Podría mostrar:

    • archivo1.txt
    • archivo2.txt

    pero no archivo10.txt.


    14. Nombres de archivos y carpetas: buenas prácticas

    Aunque Linux permite muchos nombres distintos, conviene seguir ciertas reglas:

    Recomendaciones

    • usar minúsculas,
    • evitar espacios,
    • usar guiones - o guiones bajos _,
    • usar nombres claros y descriptivos.

    Bien

    mis_apuntes.txt
    fotos_viaje
    backup-web

    Mal

    Mis Apuntes Definitivos Final FINAL.txt
    Carpeta Nueva 2

    Los espacios pueden dar problemas o hacer más incómodo el trabajo en terminal.


    15. Rutas con espacios

    Si una carpeta tiene espacios en el nombre, la terminal interpreta cada palabra como algo separado.

    Por ejemplo, esto fallará:

    cd Mis documentos

    Porque Linux intentará entrar en una carpeta llamada Mis y tomará documentos como otro argumento.

    Debe escribirse así:

    cd "Mis documentos"

    o así:

    cd Mis\ documentos

    16. Ejemplo guiado completo

    Vamos a ver un ejemplo realista paso a paso.

    Paso 1: comprobar dónde estamos

    pwd

    Paso 2: listar el contenido

    ls

    Paso 3: crear una carpeta de trabajo

    mkdir practica_linux

    Paso 4: entrar en ella

    cd practica_linux

    Paso 5: crear subcarpetas

    mkdir documentos scripts copias

    Paso 6: crear archivos vacíos

    touch documentos/notas.txt
    touch documentos/tareas.txt

    Paso 7: ver la estructura

    ls
    ls documentos

    Paso 8: copiar un archivo

    cp documentos/notas.txt copias/

    Paso 9: renombrar un archivo

    mv documentos/tareas.txt documentos/tareas_pendientes.txt

    Paso 10: crear contenido dentro de un archivo

    echo "Primera práctica de Linux" > documentos/notas.txt

    Paso 11: leer el archivo

    cat documentos/notas.txt

    17. Resumen de comandos básicos

    ComandoFunción
    pwdMuestra la ruta actual
    lsLista archivos y carpetas
    ls -lLista con detalle
    ls -aMuestra ocultos
    cd rutaCambia de directorio
    cd ..Sube un nivel
    cd ~Va al directorio personal
    mkdir nombreCrea una carpeta
    mkdir -p rutaCrea carpetas anidadas
    touch archivoCrea un archivo vacío
    cat archivoMuestra el contenido
    cp origen destinoCopia archivos o carpetas
    mv origen destinoMueve o renombra
    rm archivoBorra archivo
    rm -r carpetaBorra carpeta con contenido
    rmdir carpetaBorra carpeta vacía

    18. Errores habituales

    1. Confundir archivo y carpeta

    Intentar hacer:

    cd archivo.txt

    Pero cd solo sirve para entrar en directorios, no en archivos.

    2. No saber en qué carpeta están

    Empiezar a ejecutar comandos sin comprobar la ubicación actual.

    Solución:

    pwd

    3. Borrar sin revisar

    Usar rm demasiado rápido y luego llega el drama informático.

    Antes de borrar:

    pwd
    ls

    4. Escribir mal una ruta

    Por ejemplo:

    cd /home/alumno/documento

    cuando la carpeta real es documentos.

    Linux distingue exactamente los nombres.

    5. Problemas con espacios

    Escribir:

    cd Mis documentos

    cuando deberían usar comillas o barra invertida.


    19. Actividad práctica

    Practicar navegación por rutas, creación de carpetas, creación de archivos, copia, movimiento y borrado.

    Enunciado

    Realiza en terminal las siguientes tareas:

    1. Comprueba en qué directorio te encuentras.
    2. Crea una carpeta llamada practica_rutas.
    3. Entra en ella.
    4. Crea dentro tres carpetas:
      • documentos
      • imagenes
      • backup
    5. Crea dentro de documentos los archivos:
      • notas.txt
      • ejercicios.txt
    6. Escribe una línea de texto dentro de notas.txt.
    7. Muestra por pantalla el contenido de notas.txt.
    8. Copia notas.txt dentro de backup.
    9. Renombra ejercicios.txt a ejercicios_linux.txt.
    10. Vuelve al directorio anterior.
    11. Lista el contenido con detalle.
    12. Elimina la carpeta imagenes.
    13. Comprueba el resultado final.

    Posible solución de la actividad

    pwd
    mkdir practica_rutas
    cd practica_rutas
    mkdir documentos imagenes backup
    touch documentos/notas.txt documentos/ejercicios.txt
    echo "Estoy aprendiendo comandos en Linux" > documentos/notas.txt
    cat documentos/notas.txt
    cp documentos/notas.txt backup/
    mv documentos/ejercicios.txt documentos/ejercicios_linux.txt
    cd ..
    ls -l
    rmdir practica_rutas/imagenes
    ls practica_rutas

    Ejercicios adicionales

    Ejercicio 1

    Crea la siguiente estructura:

    linux_practica/
    ├── tema1/
    ├── tema2/
    └── tema3/

    Ejercicio 2

    Dentro de tema1, crea tres archivos:

    • apuntes.txt
    • comandos.txt
    • resumen.txt

    Ejercicio 3

    Copia comandos.txt a tema2.

    Ejercicio 4

    Renombra resumen.txt a resumen_final.txt.

    Ejercicio 5

    Elimina tema3.




    Chuleta

    pwd                     # ver en qué carpeta estoy
    ls # listar contenido
    ls -la # listar con detalle y ocultos
    cd nombre_carpeta # entrar en carpeta
    cd .. # subir un nivel
    cd ~ # ir a mi carpeta personal
    mkdir carpeta # crear carpeta
    mkdir -p a/b/c # crear varias carpetas anidadas
    touch archivo.txt # crear archivo vacío
    cat archivo.txt # ver contenido
    cp origen destino # copiar
    mv origen destino # mover o renombrar
    rm archivo.txt # borrar archivo
    rmdir carpeta # borrar carpeta vacía
    rm -r carpeta # borrar carpeta con contenido
  • 1.2 – Linux básico: trabajo con archivos

    1.2 – Linux básico: trabajo con archivos

    En la sesión anterior comenzamos a trabajar con rutas, carpetas y navegación por el sistema de archivos en Linux. Aprendimos a movernos entre directorios, listar contenido y crear carpetas.

    En esta segunda parte vamos a centrarnos en una tarea fundamental: trabajar con archivos.

    En Linux, los archivos son una parte esencial del sistema. En ellos se guarda información, configuraciones, scripts, documentos, registros del sistema y mucho más. Aprender a manejarlos desde la terminal es una habilidad básica que será necesaria en prácticamente cualquier tarea de administración o uso técnico del sistema.

    A lo largo de esta práctica aprenderemos a:

    • crear archivos,
    • visualizar su contenido,
    • editarlos desde terminal,
    • copiarlos,
    • moverlos o renombrarlos,
    • y eliminarlos correctamente.

    También veremos buenas prácticas, errores comunes y una serie de ejercicios para afianzar los conceptos.


    1. ¿Qué es un archivo en Linux?

    Un archivo es una unidad de información almacenada en el sistema.

    Puede tratarse de:

    • un documento de texto,
    • una imagen,
    • un script,
    • un archivo de configuración,
    • un registro del sistema,
    • o cualquier otro tipo de contenido.

    En Linux, muchos archivos importantes son simplemente archivos de texto plano, lo que permite leerlos o editarlos desde terminal.

    Por ejemplo:

    • un archivo de configuración puede contener opciones del sistema,
    • un script puede contener comandos,
    • un log puede guardar mensajes sobre lo que ha ocurrido en el sistema.

    2. Crear archivos con touch

    ¿Para qué sirve?

    El comando touch permite crear archivos vacíos.

    Si el archivo no existe, se crea.
    Si ya existe, actualiza su fecha de modificación.

    Sintaxis

    touch nombre_archivo

    Ejemplo

    touch notas.txt

    Esto crea un archivo vacío llamado notas.txt.

    Crear varios archivos a la vez

    touch archivo1.txt archivo2.txt archivo3.txt

    Comprobar que se han creado

    ls

    o mejor aún:

    ls -l

    3. Ver el contenido de un archivo con cat

    ¿Para qué sirve?

    El comando cat muestra el contenido de un archivo por pantalla.

    Sintaxis

    cat nombre_archivo

    Ejemplo

    cat notas.txt

    Si el archivo está vacío, no mostrará nada.

    Añadiendo contenido antes

    Si escribimos:

    echo "Hola, esto es una prueba" > notas.txt

    y luego hacemos:

    cat notas.txt

    veremos:

    Hola, esto es una prueba

    Mostrar varios archivos a la vez

    cat archivo1.txt archivo2.txt

    4. Crear contenido con echo y redirecciones

    Comando echo

    echo permite mostrar texto en terminal o escribirlo en un archivo.

    Mostrar texto en pantalla

    echo "Hola Linux"

    Guardar texto en un archivo con >

    echo "Primera línea" > notas.txt

    Esto crea el archivo si no existe y escribe el contenido.

    Importante: si el archivo ya tenía contenido, lo sustituye por completo.

    Añadir texto sin borrar lo anterior con >>

    echo "Segunda línea" >> notas.txt

    Esto añade contenido al final del archivo.

    Ver el resultado

    cat notas.txt

    Salida posible:

    Primera línea
    Segunda línea

    5. Leer archivos largos con less y more

    Cuando un archivo tiene muchas líneas, cat puede no ser la mejor opción porque muestra todo de golpe.

    less

    Permite visualizar el contenido página a página.

    less archivo.txt

    Con less puedes:

    • desplazarte con las flechas,
    • avanzar y retroceder,
    • buscar texto,
    • salir pulsando q.

    Es muy útil para leer archivos de configuración o logs.

    more

    También muestra el contenido por partes.

    more archivo.txt

    Es más simple que less, pero hoy en día suele usarse más less.


    6. Ver solo el principio o el final de un archivo

    Muestra las primeras líneas de un archivo.

    head archivo.txt

    Por defecto muestra 10 líneas.

    Mostrar un número concreto

    head -n 5 archivo.txt

    tail

    Muestra las últimas líneas.

    tail archivo.txt

    Mostrar un número concreto

    tail -n 5 archivo.txt

    Esto será muy útil más adelante para revisar logs del sistema.


    7. Editar archivos con nano

    ¿Qué es nano?

    nano es un editor de texto en terminal sencillo y muy adecuado para empezar.

    Abrir o crear un archivo

    nano notas.txt

    Si el archivo existe, lo abre.
    Si no existe, lo crea.

    Cómo usarlo

    Dentro de nano puedes escribir directamente.

    Los atajos principales aparecen en la parte inferior de la pantalla.

    Atajos importantes

    • Ctrl + O → guardar
    • Ctrl + X → salir
    • Ctrl + K → cortar línea
    • Ctrl + U → pegar línea
    • Ctrl + W → buscar texto

    Recomendación para principiantes

    Para alumnos que están empezando, nano es ideal porque:

    • es simple,
    • se entiende fácilmente,
    • no requiere aprender comandos especiales complicados,
    • y permite editar archivos de forma rápida.

    8. Copiar archivos con cp

    ¿Para qué sirve?

    El comando cp se utiliza para copiar archivos y también directorios.

    Copiar un archivo

    cp origen destino

    Ejemplo

    cp notas.txt copia_notas.txt

    Esto crea una copia del archivo con otro nombre.

    Copiar un archivo a otra carpeta

    cp notas.txt documentos/

    Copiar varios archivos a una carpeta

    cp archivo1.txt archivo2.txt copias/

    Copiar carpetas completas

    Para copiar directorios hace falta usar la opción -r.

    cp -r proyecto proyecto_backup

    La r significa recursivo.


    9. Mover y renombrar archivos con mv

    ¿Para qué sirve?

    El comando mv sirve para:

    • mover archivos,
    • mover carpetas,
    • renombrar archivos,
    • renombrar carpetas.

    Renombrar un archivo

    mv notas.txt apuntes.txt

    Mover un archivo a otra carpeta

    mv apuntes.txt documentos/

    Renombrar una carpeta

    mv documentos apuntes_linux

    Mover una carpeta completa

    mv apuntes_linux /home/alumno/trabajos/

    10. Borrar archivos con rm

    ¿Para qué sirve?

    El comando rm elimina archivos.

    Borrar un archivo

    rm notas.txt

    Borrar varios archivos

    rm archivo1.txt archivo2.txt

    Borrar con confirmación

    rm -i notas.txt

    La opción -i pide confirmación antes de eliminar.

    Esto puede ser muy útil para evitar errores.


    11. Borrar carpetas con rmdir y rm -r

    rmdir

    Solo elimina carpetas vacías.

    rmdir carpeta_vacia

    rm -r

    Elimina carpetas y todo su contenido.

    rm -r carpeta

    Precaución importante

    rm -r puede borrar muchos archivos de golpe. Hay que usarlo con muchísimo cuidado.

    Antes de ejecutar un borrado conviene comprobar:

    pwd
    ls

    No conviene lanzar comandos de borrado a ciegas como quien pulsa botones en una nave espacial averiada.


    12. Diferencia entre copiar, mover, renombrar y borrar

    Conviene dejar clara esta diferencia:

    • Copiar (cp): crea una copia, el original sigue existiendo.
    • Mover (mv): cambia el archivo de ubicación.
    • Renombrar (mv): cambia el nombre del archivo o carpeta.
    • Borrar (rm): elimina el archivo.

    Ejemplo:

    Si tienes:

    notas.txt

    Copiar

    cp notas.txt copia.txt

    Resultado:

    notas.txt
    copia.txt

    Renombrar

    mv notas.txt apuntes.txt

    Resultado:

    apuntes.txt

    Borrar

    rm apuntes.txt

    Resultado: el archivo desaparece.


    13. Ejemplo guiado paso a paso

    Vamos a realizar una práctica completa.

    Paso 1. Crear una carpeta de trabajo

    mkdir practica_archivos
    cd practica_archivos

    Paso 2. Crear dos archivos vacíos

    touch notas.txt tareas.txt

    Paso 3. Comprobar el contenido del directorio

    ls -l

    Paso 4. Escribir texto en notas.txt

    echo "Estoy aprendiendo Linux" > notas.txt

    Paso 5. Añadir otra línea

    echo "Trabajo con archivos desde terminal" >> notas.txt

    Paso 6. Ver el contenido

    cat notas.txt

    Paso 7. Editar con nano

    nano tareas.txt

    Dentro del archivo escribe por ejemplo:

    - Practicar comandos
    - Crear archivos
    - Copiar archivos

    Guarda y sal.

    Paso 8. Copiar notas.txt

    cp notas.txt copia_notas.txt

    Paso 9. Crear una carpeta nueva

    mkdir documentos

    Paso 10. Mover un archivo a la carpeta

    mv tareas.txt documentos/

    Paso 11. Renombrar el archivo copiado

    mv copia_notas.txt respaldo_notas.txt

    Paso 12. Ver el resultado final

    ls -l
    ls documentos

    14. Práctica guiada

    Objetivo

    Aprender a crear, visualizar, editar, copiar, mover, renombrar y borrar archivos desde terminal.

    Enunciado

    Realiza las siguientes acciones:

    1. Crea una carpeta llamada ejercicio_archivos.
    2. Entra en ella.
    3. Crea tres archivos vacíos:
      • dia1.txt
      • dia2.txt
      • dia3.txt
    4. Escribe una línea de texto en dia1.txt.
    5. Añade una segunda línea.
    6. Muestra el contenido de dia1.txt.
    7. Abre dia2.txt con nano y escribe varias líneas.
    8. Crea una carpeta llamada copias.
    9. Copia dia1.txt dentro de copias.
    10. Renombra dia3.txt a resumen.txt.
    11. Mueve dia2.txt a la carpeta copias.
    12. Elimina resumen.txt.
    13. Comprueba el contenido final del directorio principal y de la carpeta copias.

    Posible solución de la práctica

    mkdir ejercicio_archivos
    cd ejercicio_archivos
    touch dia1.txt dia2.txt dia3.txt
    echo "Primera línea del archivo" > dia1.txt
    echo "Segunda línea del archivo" >> dia1.txt
    cat dia1.txt
    nano dia2.txt
    mkdir copias
    cp dia1.txt copias/
    mv dia3.txt resumen.txt
    mv dia2.txt copias/
    rm resumen.txt
    ls -l
    ls -l copias

    Errores habituales

    1. Pensar que touch escribe contenido

    No. touch crea el archivo, pero lo deja vacío.

    2. Usar > y borrar sin querer el contenido anterior

    Ejemplo:

    echo "Nueva línea" > notas.txt

    Esto sustituye todo lo anterior.

    Si se quiere añadir, hay que usar:

    echo "Nueva línea" >> notas.txt

    3. Intentar borrar una carpeta con rm sin opciones

    rm carpeta

    Esto fallará si carpeta es un directorio.

    Para carpetas vacías:

    rmdir carpeta

    Para carpetas con contenido:

    rm -r carpeta

    4. Confundir mover con copiar

    cp copia.
    mv mueve o renombra.

    5. Borrar demasiado rápido

    Conviene revisar siempre el directorio actual antes de borrar.

    pwd
    ls

    Buenas prácticas

    Usa nombres claros

    Mejor:

    notas_linux.txt
    configuracion_red.txt

    Peor:

    archivo1.txt
    cosa.txt
    finalfinal2.txt

    Revisa el contenido antes de borrar

    Usa ls, cat o less para asegurarte.

    Usa rm -i si tienes dudas

    rm -i archivo.txt

    Organiza el trabajo en carpetas

    No dejes todos los archivos mezclados en el mismo sitio.


    Resumen de comandos

    ComandoFunción
    touch archivo.txtCrear archivo vacío
    cat archivo.txtMostrar contenido
    echo "texto" > archivo.txtEscribir sustituyendo contenido
    echo "texto" >> archivo.txtAñadir contenido al final
    less archivo.txtLeer archivo página a página
    more archivo.txtLeer archivo por partes
    head archivo.txtVer primeras líneas
    tail archivo.txtVer últimas líneas
    nano archivo.txtEditar archivo
    cp origen destinoCopiar archivo o carpeta
    mv origen destinoMover o renombrar
    rm archivo.txtBorrar archivo
    rm -i archivo.txtBorrar con confirmación
    rmdir carpetaBorrar carpeta vacía
    rm -r carpetaBorrar carpeta con contenido

    Ejercicio

    Crea la siguiente estructura:

    trabajo_linux/
    ├── notas/
    │ ├── teoria.txt
    │ └── practica.txt
    └── backup/

    Después:

    • escribe contenido en teoria.txt,
    • copia teoria.txt a backup,
    • renombra practica.txt a practica_1.txt,
    • muestra el contenido de teoria.txt,
    • y elimina finalmente la carpeta backup con su contenido.

    mandos, más natural será trabajar en terminal.


    Chuleta rápida

    touch archivo.txt              # crear archivo vacío
    cat archivo.txt # ver contenido
    echo "texto" > archivo.txt # escribir sustituyendo contenido
    echo "texto" >> archivo.txt # añadir contenido
    nano archivo.txt # editar archivo
    less archivo.txt # leer archivo largo
    head archivo.txt # ver primeras líneas
    tail archivo.txt # ver últimas líneas
    cp origen destino # copiar
    mv origen destino # mover o renombrar
    rm archivo.txt # borrar archivo
    rm -i archivo.txt # borrar con confirmación
    rmdir carpeta # borrar carpeta vacía
    rm -r carpeta # borrar carpeta con contenido
  • 1.3 – Estructura de archivos en Linux

    1.3 – Estructura de archivos en Linux

    Cuando empezamos a trabajar con Linux, una de las primeras cosas que debemos aprender es cómo está organizado su sistema de archivos.

    En Windows, estamos acostumbrados a trabajar con unidades como C:, D: o carpetas como “Mis documentos”. En Linux, la lógica es diferente: todo parte de una única raíz y desde ahí se organiza el resto del sistema.

    Esto hace que Linux tenga una estructura muy ordenada y bastante coherente entre distintas distribuciones.

    Aunque esta guía está basada en Ubuntu, gran parte de lo que vamos a ver también se aplica a otras distribuciones como:

    • Debian
    • Linux Mint
    • Fedora
    • Rocky Linux
    • AlmaLinux
    • Arch Linux
    • openSUSE

    Idea clave: en Linux todo cuelga de /

    En Linux, la carpeta principal de todo el sistema es:

    /

    A esto se le llama raíz del sistema.

    Desde esa carpeta nacen todas las demás.
    No existen letras de unidad como en Windows. Aunque haya varios discos o particiones, Linux los integra dentro del mismo árbol de directorios.

    Ejemplo visual

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    ├── media
    ├── mnt
    ├── opt
    ├── proc
    ├── root
    ├── run
    ├── srv
    ├── sys
    ├── tmp
    ├── usr
    └── var

    Qué debes recordar
    En Linux, todo empieza en /.
    Cualquier archivo o carpeta del sistema está dentro de esa jerarquía.


    Ubuntu y el resto de distribuciones

    Ubuntu comparte gran parte de su estructura con otras distribuciones Linux. Esto ocurre porque muchas siguen una organización tradicional común heredada del mundo Unix.

    Esto significa que:

    • si aprendes a moverte por Ubuntu, gran parte de ese conocimiento te servirá en otras distribuciones
    • las carpetas principales suelen tener la misma función
    • lo que más cambia entre distribuciones suele ser:
      • el gestor de paquetes
      • algunas herramientas
      • ciertos archivos o configuraciones concretas

    Ejemplo

    • En Ubuntu y Debian se usa mucho apt
    • En Fedora se usa dnf
    • En Arch Linux se usa pacman

    Pero carpetas como /home, /etc, /var o /usr seguirán teniendo una función muy similar.

    Importante
    La estructura general de directorios en Linux es bastante común entre distribuciones.
    Lo que cambia más es el ecosistema de herramientas, no la lógica principal del sistema de archivos.


    Directorios principales de Linux

    A continuación vamos a ver las carpetas más importantes que debe conocer un alumno cuando empieza con Linux.


    / — La raíz del sistema

    Es el nivel más alto del sistema de archivos.

    No es la carpeta del administrador, ni la carpeta del usuario.
    Es simplemente el punto de partida de toda la estructura.

    Ejemplos de rutas absolutas

    /etc/hosts
    /home/alumno
    /var/log

    Recuerda
    Cuando una ruta empieza por /, estamos hablando de una ruta absoluta.


    /home — Carpetas personales de los usuarios

    Aquí se guardan las carpetas personales de los usuarios normales del sistema.

    Ejemplos

    /home/antonio
    /home/alumno1
    /home/alumno2

    Dentro de cada carpeta de usuario suelen estar:

    • documentos
    • descargas
    • escritorio
    • configuraciones personales
    • archivos ocultos de programas

    Ejemplo práctico

    cd /home
    ls
    cd /home/alumno
    pwd

    Muy importante
    La carpeta personal del usuario suele ser su zona principal de trabajo.


    /root — Carpeta personal del administrador

    Esta carpeta pertenece al usuario root, es decir, al superusuario del sistema.

    Ojo con esto

    Muchos alumnos confunden:

    • / → raíz del sistema
    • /root → carpeta personal del administrador

    No son lo mismo.

    Error muy común
    /root no es “la raíz”.
    La raíz real del sistema es /.


    /etc — Archivos de configuración del sistema

    Aquí se encuentran muchos archivos de configuración global del sistema y de los servicios instalados.

    Ejemplos típicos

    /etc/hostname
    /etc/hosts
    /etc/passwd
    /etc/ssh/sshd_config
    /etc/apache2/

    Si instalamos servicios como SSH, Apache, MySQL o Nginx, gran parte de su configuración suele estar aquí.

    Ejemplo práctico

    cd /etc
    ls

    Qué debes aprender
    Si una configuración afecta al sistema o a todos los usuarios, es muy probable que esté en /etc.


    /usr — Programas y recursos del sistema

    Aunque por el nombre pueda parecer que significa “carpeta de usuario”, en realidad no es la carpeta personal del usuario.

    /usr contiene una gran parte de los programas, bibliotecas y recursos compartidos del sistema.

    Subdirectorios habituales

    • /usr/bin
    • /usr/sbin
    • /usr/lib
    • /usr/share

    Ejemplos

    ls /usr/bin
    ls /usr/share

    Aquí se almacenan, por ejemplo:

    • ejecutables
    • bibliotecas
    • documentación
    • iconos
    • archivos compartidos por programas

    No confundas
    /usr no sustituye a /home.
    /home es para usuarios.
    /usr es para software y recursos del sistema.


    /var — Datos variables del sistema

    La carpeta /var contiene archivos que cambian con frecuencia.

    Aquí suelen guardarse:

    • logs
    • cachés
    • colas
    • datos temporales persistentes
    • información que cambia durante el funcionamiento del sistema

    Subdirectorios frecuentes

    • /var/log
    • /var/cache
    • /var/spool
    • /var/tmp

    Ejemplo práctico

    cd /var/log
    ls

    Muy útil en administración
    Cuando algo falla, muchas veces hay que mirar en /var/log.
    Es uno de los primeros sitios donde buscar pistas.


    /tmp — Archivos temporales

    Esta carpeta se utiliza para guardar archivos temporales.

    Se usa para:

    • datos provisionales
    • archivos de trabajo
    • información temporal de programas o usuarios

    Ejemplo

    cd /tmp
    touch prueba.txt
    ls -l

    Aviso
    No conviene guardar trabajos importantes en /tmp, porque su contenido puede borrarse automáticamente.


    /boot — Archivos de arranque

    Esta carpeta contiene archivos necesarios para iniciar el sistema.

    Aquí pueden encontrarse:

    • el kernel
    • imágenes de arranque
    • archivos del gestor de arranque

    Zona delicada
    No se debe modificar esta carpeta sin saber exactamente lo que se está haciendo.


    /dev — Dispositivos

    En Linux, muchos dispositivos se representan como archivos.

    Ejemplos típicos

    /dev/sda
    /dev/sdb
    /dev/null
    /dev/tty

    Esto permite que Linux trate distintos recursos del sistema siguiendo una misma filosofía: muchas cosas se manejan como archivos.

    Idea importante
    En Linux, los dispositivos también forman parte del sistema de archivos.


    /media y /mnt — Montaje de dispositivos

    Estas rutas están relacionadas con el montaje de discos, particiones, pendrives y otros medios de almacenamiento.

    Diferencia general

    • /media suele usarse para dispositivos montados automáticamente
    • /mnt suele usarse para montajes manuales o temporales

    Ejemplo posible en Ubuntu

    /media/alumno/USB_DATOS

    Recuerda
    Cuando conectas un USB en Ubuntu, lo normal es que se monte dentro de /media.


    /proc — Información sobre procesos y sistema

    /proc no es una carpeta normal guardada en disco.
    Es un sistema de archivos virtual que muestra información del kernel y de los procesos en ejecución.

    Ejemplos

    /proc/cpuinfo
    /proc/meminfo
    /proc/1

    Comandos útiles

    cat /proc/cpuinfo
    cat /proc/meminfo

    Curiosidad interesante
    Linux permite consultar información del sistema como si fueran archivos normales.


    /sys — Información del hardware y del kernel

    Es otra ruta especial del sistema.
    También es virtual y sirve para mostrar información sobre dispositivos, hardware y estructura interna del sistema.

    No suele ser la primera carpeta que necesita dominar un principiante, pero conviene saber que existe.


    /run — Datos temporales del sistema en ejecución

    Aquí se almacenan datos generados desde el arranque del sistema.

    Por ejemplo:

    • identificadores de procesos
    • sockets
    • estados de servicios
    • información temporal de ejecución

    Es una carpeta importante en sistemas Linux modernos.


    /opt — Software adicional

    Se utiliza a menudo para instalar aplicaciones de terceros o software adicional que no forma parte del conjunto básico del sistema.

    Ejemplos

    /opt/google
    /opt/miaplicacion

    No todos los programas se instalan aquí, pero es una ruta bastante habitual en algunos casos.


    /srv — Datos de servicios

    Esta carpeta está pensada para guardar datos servidos por servicios del sistema.

    Por ejemplo:

    • contenido de un servidor web
    • archivos compartidos por un servicio FTP
    • recursos ofrecidos por un servidor

    No siempre se utiliza mucho en entornos domésticos, pero conviene conocerla.


    /bin, /sbin, /lib y /lib64

    Estas carpetas están relacionadas con:

    • comandos esenciales
    • herramientas de administración
    • bibliotecas necesarias para ejecutar programas

    En muchos sistemas modernos algunas de estas rutas están integradas o enlazadas con otras dentro de /usr, pero siguen apareciendo y es importante conocerlas.

    Idea sencilla para el alumno

    • /bin y /sbin → comandos y herramientas
    • /lib y /lib64 → bibliotecas del sistema

    Nota
    Aunque hoy existan cambios internos en muchos sistemas modernos, estas rutas siguen formando parte del mapa clásico de Linux.




    Comparación rápida con Windows

    En Windows

    • hay unidades como C: o D:
    • el usuario suele estar en C:\Users\Nombre
    • parte de la configuración está repartida entre carpetas y registro

    En Linux

    • todo cuelga de /
    • el usuario suele estar en /home/usuario
    • la configuración global suele estar en /etc
    • los logs suelen estar en /var/log

    Equivalencias mentales aproximadas

    • C:\Users\Antonio → /home/antonio
    • C:\Program Files → parecido a partes de /usr o /opt
    • archivos temporales → /tmp
    • configuración del sistema → /etc

    Ojo
    No son equivalencias exactas, pero sirven para orientarse al principio.


    Diferencias entre distribuciones

    Aunque la estructura general es parecida, hay diferencias entre distribuciones.

    Ubuntu, Debian y Linux Mint

    • muy similares
    • comparten muchas rutas y herramientas
    • usan paquetes .deb y apt

    Fedora, Rocky y AlmaLinux

    • estructura también parecida
    • cambian herramientas y paquetes
    • usan dnf

    Arch Linux

    • estructura general reconocible
    • más configuración manual
    • enfoque más minimalista

    openSUSE

    • estructura general también similar
    • cambia sobre todo en herramientas de administración

    Conclusión importante
    Si aprendes bien carpetas como /home, /etc, /var, /usr y /tmp, ese conocimiento te servirá en casi cualquier distribución Linux.


    Qué carpetas debes conocer primero

    Si estás empezando, estas son las más importantes:

    • /
    • /home
    • /root
    • /etc
    • /usr
    • /var
    • /tmp
    • /dev
    • /boot
    • /media
    • /mnt

    Consejo para estudiar
    No hace falta memorizar todo el sistema de golpe.
    Lo importante es entender la función general de cada carpeta.


    Ejercicios

    1. Mostrar la carpeta actual

    pwd

    2. Entrar en la carpeta personal

    cd /home
    ls
    cd $USER
    pwd

    3. Mostrar archivos ocultos

    ls -la

    4. Explorar la configuración del sistema

    cd /etc
    ls

    5. Ver logs del sistema

    cd /var/log
    ls

    6. Consultar información del sistema

    cat /proc/cpuinfo
    cat /proc/meminfo

    7. Crear un archivo temporal

    cd /tmp
    touch practica_linux.txt
    ls -l

    8. Probar el acceso a /root

    cd /root

    Aquí el alumno verá que normalmente no tiene permisos si no es administrador.


    Errores comunes

    Confundir / con /root

    Es uno de los errores más frecuentes.

    Pensar que /usr es la carpeta del usuario

    No lo es. La carpeta del usuario normal es /home/usuario.

    Pensar que todas las carpetas son “normales”

    No. Algunas como /proc o /sys son virtuales.

    Guardar archivos importantes en /tmp

    No es buena idea.

    Creer que Ubuntu y el resto de distribuciones son totalmente diferentes

    No. Cambian cosas, pero comparten mucha base.


    Resumen

    La estructura de archivos en Linux se organiza como una jerarquía que parte de /, la raíz del sistema.
    Ubuntu sigue esta lógica igual que muchas otras distribuciones, por lo que aprender esta estructura ayuda a trabajar con soltura en casi cualquier sistema Linux.

    Las carpetas más importantes para empezar son:



    /
    ├── /home -> archivos de usuarios
    ├── /root -> carpeta del administrador
    ├── /etc -> configuración del sistema
    ├── /usr -> programas y recursos
    ├── /var -> logs y datos variables
    ├── /tmp -> archivos temporales
    ├── /boot -> arranque
    ├── /dev -> dispositivos
    ├── /proc -> información de procesos y kernel
    ├── /sys -> información del hardware
    ├── /media -> medios extraíbles
    └── /mnt -> montajes manuales

    Idea final
    Cuando entiendes la función de las carpetas, Linux deja de parecer un laberinto y empieza a parecer un sistema con sentido.

  • 1.4 – Editores de texto en Ubuntu: nano y vi

    1.4 – Editores de texto en Ubuntu: nano y vi

    Cuando trabajamos en Linux, no siempre tendremos una interfaz gráfica disponible. En muchos casos estaremos dentro de una terminal, conectados por SSH a un servidor o trabajando en una máquina sin entorno visual. En esas situaciones, saber usar un editor de texto en consola deja de ser “algo opcional” y pasa a ser una habilidad básica.

    En Ubuntu existen varios editores de texto para terminal, pero dos de los más conocidos y clásicos son:

    • nano
    • vi (o su versión mejorada, vim, en muchos sistemas)

    Aunque ambos sirven para editar archivos de texto desde la terminal, su forma de uso es muy diferente.
    Nano está pensado para ser sencillo e intuitivo.
    Vi es más potente y rápido para usuarios con experiencia, pero al principio puede parecer un pequeño artefacto caótico sacado de una nave alienígena.

    En esta guía vamos a ver qué son, para qué sirven, cómo abrir archivos, editar, guardar, salir y en qué situaciones conviene usar uno u otro.


    1. ¿Qué es un editor de texto en terminal?

    Un editor de texto en terminal es un programa que permite:

    • crear archivos de texto,
    • modificar su contenido,
    • guardar cambios,
    • editar archivos de configuración del sistema,
    • escribir scripts,
    • cambiar pequeños fragmentos de código o documentación.

    En Linux, los editores en terminal son especialmente útiles para:

    • modificar archivos de configuración en /etc,
    • editar scripts .sh,
    • crear notas rápidas,
    • trabajar en servidores remotos,
    • solucionar errores cuando no hay entorno gráfico.

    Por ejemplo, si queremos cambiar la configuración de red, revisar un archivo de Apache o editar un script de mantenimiento, es muy habitual usar un editor en consola.


    2. Editor nano

    2.1. ¿Qué es nano?

    Nano es un editor de texto en terminal sencillo, directo y fácil de aprender.
    Suele ser la mejor opción para principiantes porque muestra en pantalla los atajos principales y su funcionamiento es bastante intuitivo.

    Es muy usado para:

    • editar archivos rápidos,
    • modificar configuraciones simples,
    • crear scripts básicos,
    • trabajar en prácticas de clase sin complicarse demasiado.

    2.2. Abrir o crear un archivo con nano

    Para abrir un archivo existente o crear uno nuevo:

    nano archivo.txt

    Ejemplo:

    nano notas.txt

    Si notas.txt no existe, nano lo creará cuando lo guardemos.

    También podemos abrir archivos con ruta completa:

    nano /home/usuario/documentos/prueba.txt

    O editar archivos del sistema con permisos de administrador:

    sudo nano /etc/hosts

    2.3. Escribir y editar en nano

    Una vez dentro de nano, simplemente escribimos como si fuera un editor normal.
    No hace falta cambiar de modo ni activar nada especial.

    Podemos:

    • escribir texto directamente,
    • borrar con retroceso,
    • movernos con las flechas,
    • cortar y pegar texto con combinaciones de teclas.

    Esto lo hace muy cómodo para empezar.


    2.4. Atajos básicos de nano

    En la parte inferior de la pantalla suelen aparecer los atajos más importantes.
    El símbolo ^ significa Ctrl.

    Por ejemplo:

    • ^O significa Ctrl + O
    • ^X significa Ctrl + X

    Comandos más usados en nano

    AcciónAtajo
    Guardar archivoCtrl + O
    SalirCtrl + X
    Buscar textoCtrl + W
    Cortar líneaCtrl + K
    Pegar líneaCtrl + U
    Mostrar ayudaCtrl + G

    2.5. Guardar un archivo en nano

    Para guardar:

    Ctrl + O

    Nano pedirá confirmación del nombre del archivo.
    Pulsamos Enter para aceptar.


    2.6. Salir de nano

    Para salir:

    Ctrl + X

    Si hay cambios sin guardar, nano preguntará si queremos guardarlos.

    Opciones habituales:

    • Y → sí, guardar
    • N → no guardar

    2.7. Buscar texto en nano

    Para buscar una palabra o fragmento:

    Ctrl + W

    Escribimos el texto a buscar y pulsamos Enter.

    Esto es útil cuando editamos archivos largos de configuración.


    2.8. Ejemplo práctico con nano

    Vamos a crear un pequeño archivo de prueba:

    nano ejemplo_nano.txt

    Dentro escribimos:

    Hola, este es un archivo creado con nano.
    Estoy aprendiendo a editar desde la terminal.

    Después:

    1. Pulsamos Ctrl + O
    2. Pulsamos Enter
    3. Pulsamos Ctrl + X

    Para comprobar el contenido:

    cat ejemplo_nano.txt

    3. Editor vi

    3.1. ¿Qué es vi?

    Vi es un editor de texto clásico de Unix y Linux.
    Es muy potente, muy rápido y muy utilizado en administración de sistemas.
    El problema, para quien empieza, es que no funciona como nano ni como un editor tradicional.

    En vi existen distintos modos de trabajo. Y aquí está la trampa elegante del asunto: si no entiendes los modos, parece que el editor está roto; en realidad no está roto, solo está siendo vi.


    3.2. ¿Por qué vi puede parecer difícil?

    Porque en vi no se escribe directamente al abrir el archivo.
    Primero hay que entender que tiene varios modos.

    Los dos más importantes son:

    • modo normal: sirve para moverse, borrar, copiar, pegar, ejecutar órdenes
    • modo inserción: sirve para escribir texto

    Cuando abrimos vi, normalmente entramos en modo normal, no en modo escritura.


    3.3. Abrir o crear un archivo con vi

    vi archivo.txt

    Ejemplo:

    vi notas_vi.txt

    También podemos abrir archivos del sistema:

    sudo vi /etc/hosts

    3.4. Modos básicos de vi

    Modo normal

    Es el modo inicial.
    Aquí no escribimos texto directamente.
    Sirve para movernos por el archivo y lanzar comandos.

    Modo inserción

    Permite escribir texto.

    Para entrar en modo inserción se suele usar:

    i

    Una vez pulsamos i, ya podemos escribir.

    Para salir del modo inserción y volver al modo normal:

    Esc

    Esta tecla es importantísima. Muchísimo. Casi filosófica.


    3.5. Escribir en vi

    Pasos básicos:

    1. Abrimos el archivo: vi prueba.txt
    2. Pulsamos: i
    3. Escribimos el contenido.
    4. Pulsamos: Esc
    5. Guardamos y salimos con: :wq
    6. Pulsamos Enter

    3.6. Comandos básicos de vi

    Estos comandos se escriben en modo normal.

    AcciónComando
    Entrar en modo insercióni
    Volver a modo normalEsc
    Guardar:w
    Salir:q
    Guardar y salir:wq
    Salir sin guardar:q!
    Borrar una líneadd
    Copiar una líneayy
    Pegarp
    Buscar texto/texto

    3.7. Guardar en vi

    Para guardar el archivo:

    :w

    Y pulsamos Enter.


    3.8. Salir de vi

    Para salir si no hay cambios pendientes:

    :q

    Si queremos salir sin guardar cambios:

    :q!

    Esto es útil cuando hemos tocado algo por error y no queremos salvarlo.


    3.9. Guardar y salir en vi

    La combinación más habitual:

    :wq

    Después pulsamos Enter.


    3.10. Buscar texto en vi

    En modo normal:

    /texto

    Ejemplo:

    /ubuntu

    Esto buscará la palabra ubuntu dentro del archivo.


    3.11. Ejemplo práctico con vi

    Abrimos el archivo:

    vi ejemplo_vi.txt

    Pasos:

    1. Pulsar i
    2. Escribir:
    Este archivo ha sido creado con vi.
    Estoy aprendiendo a usar un editor modal.
    1. Pulsar Esc
    2. Escribir:
    :wq
    1. Pulsar Enter

    Para verificar:

    cat ejemplo_vi.txt

    4. Diferencias entre nano y vi

    Aunque ambos editores permiten hacer lo mismo en lo esencial, la experiencia de uso cambia bastante.

    Característicananovi
    Facilidad para principiantesMuy altaBaja al principio
    Escritura directaSíNo, hay que entrar en modo inserción
    Curva de aprendizajeSuaveMás pronunciada
    Rapidez para usuarios avanzadosCorrectaMuy alta
    Uso habitual en servidoresSíSí, muchísimo
    Ayuda visible en pantallaSíNo de forma tan directa
    Ideal para empezarSíNo especialmente
    Ideal para administración avanzadaA vecesSí

    5. ¿Cuál conviene usar?

    Usa nano si…

    • estás empezando en Linux,
    • quieres editar archivos rápidamente,
    • no quieres aprender comandos complejos todavía,
    • necesitas algo fácil para prácticas de clase.

    Usa vi si…

    • quieres aprender herramientas clásicas de administración,
    • trabajarás en muchos servidores,
    • te interesa dominar entornos Unix/Linux de forma más profesional,
    • quieres velocidad y potencia a largo plazo.

    La recomendación más sensata para empezar suele ser:

    • primero aprender nano,
    • después conocer vi al menos a nivel básico.

    Porque tarde o temprano te lo vas a encontrar. Vi aparece en servidores, distribuciones mínimas, sistemas de recuperación y contextos donde no siempre tendrás “tu editor favorito”. Es un poco como una llave inglesa vieja: no es glamurosa, pero cuando hace falta, hace falta.



    10. Tabla resumen final

    Tareananovi
    Abrir archivonano archivo.txtvi archivo.txt
    Escribir textoDirectamentePulsar i
    GuardarCtrl + O:w
    SalirCtrl + X:q
    Guardar y salirGuardar y luego salir:wq
    Salir sin guardarResponder N al salir:q!
    Buscar textoCtrl + W/texto

    11. Ejercicios propuestos

    Ejercicio 1

    Crea un archivo llamado practica_nano.txt con nano y escribe tres líneas explicando qué es Linux.

    Ejercicio 2

    Edita el archivo anterior y añade una cuarta línea.

    Ejercicio 3

    Crea un archivo llamado practica_vi.txt con vi, escribe dos líneas y guárdalo correctamente.

    Ejercicio 4

    Abre un archivo con vi, escribe algo y sal sin guardar usando :q!.

    Ejercicio 5

    Busca una palabra dentro de un archivo usando:

    • Ctrl + W en nano
    • /texto en vi

    Conclusión

    Saber usar un editor en terminal es una competencia básica en Linux.
    Aunque hoy en día existan muchos editores gráficos y herramientas modernas, en administración de sistemas, servidores y tareas técnicas sigue siendo muy habitual editar archivos desde consola.

    Nano es la puerta de entrada ideal para empezar.
    Vi es una herramienta más exigente, pero también más potente y muy importante en el mundo Linux.

    Lo recomendable es no complicarse al principio:
    aprende primero a trabajar con nano, y después familiarízate con vi aunque solo sea en sus comandos esenciales. Con eso ya tendrás una base muy útil para seguir avanzando.


  • 1.5 – Comando find en Ubuntu

    1.5 – Comando find en Ubuntu

    El comando find es una de las herramientas más potentes de Linux para buscar archivos y directorios dentro del sistema.

    A diferencia de otros comandos más simples, find no solo permite localizar elementos por su nombre, sino también filtrarlos por muchas otras características, como por ejemplo:

    • nombre
    • tipo de archivo
    • tamaño
    • fecha de modificación
    • usuario propietario
    • permisos
    • contenido combinado con otros comandos
    • y mucho más

    Es un comando muy útil tanto para tareas cotidianas como para administración de sistemas, automatización y mantenimiento.


    ¿Para qué sirve find?

    find se utiliza para recorrer directorios y buscar elementos que cumplan unas condiciones concretas.

    Algunos usos habituales son:

    • localizar un archivo cuyo nombre no recordamos bien
    • buscar todos los archivos .txt o .log
    • encontrar carpetas concretas
    • detectar archivos grandes
    • localizar archivos modificados recientemente
    • buscar archivos vacíos
    • combinar la búsqueda con acciones automáticas, como borrar o ejecutar otro comando

    Sintaxis básica

    find [ruta] [condiciones]

    Estructura

    • ruta: lugar desde el que comienza la búsqueda
    • condiciones: filtros que debe cumplir el archivo o directorio

    Ejemplo mínimo

    find /home

    Este comando recorre todo el directorio /home y muestra todo lo que encuentra: archivos, carpetas, enlaces, etc.


    Primeros ejemplos sencillos

    Buscar en el directorio actual

    find .

    El punto . significa directorio actual.

    Buscar dentro de /home

    find /home

    Buscar un archivo por nombre exacto

    find /home -name "documento.txt"

    Busca un archivo llamado exactamente documento.txt.


    Buscar por nombre

    Opción -name

    Permite buscar por nombre respetando mayúsculas y minúsculas.

    find /home -name "foto.jpg"

    Esto encontrará solo archivos o directorios con ese nombre exacto.

    Opción -iname

    Permite buscar ignorando mayúsculas y minúsculas.

    find /home -iname "foto.jpg"

    Esto encontraría:

    • foto.jpg
    • Foto.jpg
    • FOTO.JPG

    Muy útil cuando no recordamos bien cómo estaba escrito el nombre.


    Uso de comodines

    find permite usar comodines entre comillas.

    Buscar todos los archivos .txt

    find /home -name "*.txt"

    Buscar todos los archivos .log

    find /var/log -name "*.log"

    Buscar nombres que empiecen por “tema”

    find /home -name "tema*"

    Buscar nombres que terminen en “2025”

    find /home -name "*2025"

    Buscar por tipo

    Con la opción -type podemos indicar qué queremos encontrar.

    Tipos más usados

    • f → archivo normal
    • d → directorio
    • l → enlace simbólico

    Buscar solo archivos

    find /home -type f

    Buscar solo directorios

    find /home -type d

    Buscar solo enlaces simbólicos

    find /home -type l

    Buscar archivos .pdf

    find /home -type f -name "*.pdf"

    Aquí combinamos dos condiciones:

    • que sea archivo
    • que termine en .pdf

    Buscar por tamaño

    La opción -size permite buscar por tamaño.

    Unidades comunes

    • c → bytes
    • k → kilobytes
    • M → megabytes
    • G → gigabytes

    Ejemplos

    Buscar archivos de exactamente 10 MB

    find /home -type f -size 10M

    Buscar archivos mayores de 100 MB

    find /home -type f -size +100M

    Buscar archivos menores de 1 MB

    find /home -type f -size -1M

    El signo cambia mucho la película:

    • 10M → exactamente 10 MB
    • +10M → más de 10 MB
    • -10M → menos de 10 MB

    Buscar por fecha

    find también puede buscar según el momento en que un archivo fue modificado.

    Opción -mtime

    Busca por días desde la última modificación.

    Archivos modificados hace menos de 7 días

    find /home -type f -mtime -7

    Archivos modificados hace más de 30 días

    find /home -type f -mtime +30

    Archivos modificados exactamente hace 1 día

    find /home -type f -mtime 1

    Opción -mmin

    Busca por minutos desde la última modificación.

    Archivos modificados en los últimos 60 minutos

    find /home -type f -mmin -60

    Esto es muy útil para tareas recientes o diagnósticos.


    Buscar por usuario o grupo

    Buscar archivos de un usuario concreto

    find /home -user alumno1

    Buscar archivos de un grupo concreto

    find /home -group profesores

    Esto puede venir muy bien en sistemas multiusuario.


    Buscar por permisos

    La opción -perm permite localizar archivos con permisos específicos.

    Buscar archivos con permiso 644

    find /home -type f -perm 644

    Buscar directorios con permiso 755

    find /home -type d -perm 755

    Esto es útil para revisar seguridad, configuraciones o errores de permisos.


    Buscar archivos vacíos

    Archivos vacíos

    find /home -type f -empty

    Directorios vacíos

    find /home -type d -empty

    Muy útil para limpieza del sistema o revisión de estructuras.


    Limitar la profundidad de búsqueda

    A veces no queremos que find recorra infinitamente subcarpetas como si estuviera poseído por un espíritu del caos. Para eso usamos estas opciones.

    -maxdepth

    Limita cuántos niveles de profundidad puede bajar.

    find /home -maxdepth 1

    Muestra solo lo que hay en /home sin entrar en subdirectorios.

    -mindepth

    Indica desde qué nivel empezar a mostrar resultados.

    find /home -mindepth 1

    Evita mostrar el directorio inicial.

    Ejemplo combinado

    find /home -mindepth 1 -maxdepth 2 -type f

    Busca archivos desde el primer nivel hasta el segundo.


    Ejecutar acciones con los resultados

    Una de las funciones más potentes de find es usar -exec, que permite ejecutar comandos sobre cada resultado encontrado.

    Sintaxis

    find [ruta] [condición] -exec comando {} \;
    • {} representa el archivo encontrado
    • \; indica el final del comando

    Ejemplo: mostrar información detallada

    find /home -name "*.txt" -exec ls -l {} \;

    Ejemplo: borrar archivos

    find /home -type f -name "*.tmp" -exec rm {} \;

    Cuidado con esto. Aquí ya estamos jugando con fuego elegante.

    Ejemplo: cambiar permisos

    find /home/proyecto -type f -name "*.sh" -exec chmod +x {} \;

    Borrar directamente con -delete

    También se puede borrar sin usar -exec.

    find /home -type f -name "*.tmp" -delete

    Esto es muy útil, pero también peligroso si no hemos probado antes la búsqueda.

    Recomendación importante

    Primero ejecuta la búsqueda sin borrar:

    find /home -type f -name "*.tmp"

    Y cuando compruebes que el resultado es correcto, entonces usas:

    find /home -type f -name "*.tmp" -delete

    Combinar varias condiciones

    find permite combinar condiciones para hacer búsquedas mucho más precisas.

    Buscar archivos .log de más de 10 MB

    find /var/log -type f -name "*.log" -size +10M

    Buscar archivos .txt modificados en los últimos 2 días

    find /home -type f -name "*.txt" -mtime -2

    Buscar directorios vacíos

    find /home -type d -empty

    Uso de operadores lógicos

    Opción -o (OR)

    Busca una cosa o la otra.

    find /home -name "*.jpg" -o -name "*.png"

    Busca archivos .jpg o .png.

    Opción ! (NOT)

    Niega una condición.

    find /home -type f ! -name "*.txt"

    Busca archivos que no terminen en .txt.


    Ejemplos prácticos

    1. Buscar todos los archivos PDF de un usuario

    find /home/alumno -type f -name "*.pdf"

    2. Buscar carpetas llamadas backup

    find /home -type d -name "backup"

    3. Buscar archivos grandes en todo el sistema

    find / -type f -size +500M

    4. Buscar archivos modificados hoy aproximadamente

    find /home -type f -mtime -1

    5. Buscar archivos temporales y eliminarlos

    find /tmp -type f -name "*.tmp" -delete

    6. Buscar scripts de shell

    find /home -type f -name "*.sh"

    7. Buscar directorios vacíos dentro del proyecto

    find /home/proyecto -type d -empty

    Buenas prácticas al usar find

    1. Empezar por una ruta concreta

    No uses / si no hace falta. Buscar desde la raíz puede tardar bastante y además mostrar errores por falta de permisos.

    Mejor algo como:

    find /home/usuario/documentos -name "*.txt"

    2. Probar primero antes de borrar

    Antes de usar -delete o -exec rm, ejecuta la búsqueda sin borrar nada.

    3. Usar comillas en los patrones

    Correcto:

    find /home -name "*.txt"

    No recomendable:

    find /home -name *.txt

    Sin comillas, el shell puede interpretar el patrón antes que find, y ahí empiezan los disgustos.

    4. Combinar condiciones para ser más preciso

    Cuanto más concreta sea la búsqueda, menos resultados basura tendrás.


    Errores comunes

    Error 1: olvidar la ruta

    find -name "*.txt"

    Aunque puede funcionar en algunos casos desde el directorio actual, es mejor escribirlo claramente:

    find . -name "*.txt"

    Error 2: no poner comillas

    find /home -name *.txt

    Puede dar resultados inesperados.

    Error 3: usar -delete sin comprobar antes

    Esto puede eliminar archivos importantes. Linux no te va a mirar con pena. Simplemente lo hará.

    Error 4: confundir -name con contenido del archivo

    find busca por nombre, tamaño, fechas, tipo, etc., pero no busca texto dentro de archivos.
    Para buscar texto dentro de archivos se usa normalmente grep.

    Ejemplo combinado:

    find /home -type f -name "*.txt" -exec grep "error" {} \;

    Opciones principales de find

    OpciónSignificadoEjemplo
    .Directorio actualfind .
    -nameBusca por nombre exacto respetando mayúsculasfind /home -name "foto.jpg"
    -inameBusca por nombre ignorando mayúsculasfind /home -iname "foto.jpg"
    -type fSolo archivosfind /home -type f
    -type dSolo directoriosfind /home -type d
    -type lSolo enlaces simbólicosfind /home -type l
    -sizeBusca por tamañofind /home -size +100M
    -mtimeBusca por días desde modificaciónfind /home -mtime -7
    -mminBusca por minutos desde modificaciónfind /home -mmin -60
    -userBusca por usuario propietariofind /home -user alumno1
    -groupBusca por grupo propietariofind /home -group profesores
    -permBusca por permisosfind /home -perm 644
    -emptyBusca archivos o directorios vacíosfind /home -empty
    -maxdepthLimita profundidad máximafind /home -maxdepth 2
    -mindepthLimita profundidad mínimafind /home -mindepth 1
    -execEjecuta un comando sobre cada resultadofind /home -name "*.txt" -exec ls -l {} \;
    -deleteBorra directamente los resultadosfind /tmp -name "*.tmp" -delete
    -oOperador ORfind /home -name "*.jpg" -o -name "*.png"
    !Negaciónfind /home ! -name "*.txt"


    Ejercicios

    Ejercicio 1

    Busca todos los archivos .txt dentro de tu carpeta personal.

    Ejercicio 2

    Busca todos los directorios dentro de /home.

    Ejercicio 3

    Encuentra archivos mayores de 50 MB.

    Ejercicio 4

    Busca archivos modificados en los últimos 3 días.

    Ejercicio 5

    Busca archivos vacíos dentro de una carpeta de pruebas.

    Ejercicio 6

    Busca todos los archivos .log y muestra solo los que sean archivos normales.

    Ejercicio 7

    Busca archivos .tmp dentro de una carpeta temporal y elimínalos solo después de comprobar el resultado.



    Soluciones

    EjercicioComando
    1find /home/$USER -type f -name "*.txt"
    2find /home -type d
    3find /home -type f -size +50M
    4find /home -type f -mtime -3
    5find /home/$USER/pruebas -type f -empty
    6find /home -type f -name "*.log"
    7find /tmp -type f -name "*.tmp" y después find /tmp -type f -name "*.tmp" -delete
  • 1.6 – Comando grep en Ubuntu

    1.6 – Comando grep en Ubuntu

    grep sirve para filtrar texto y mostrar solo las líneas que coinciden con un patrón.

    Por ejemplo, permite:

    • buscar una palabra dentro de un archivo
    • localizar errores en logs
    • encontrar líneas que contengan una IP, usuario o ruta
    • buscar texto ignorando mayúsculas
    • contar coincidencias
    • mostrar números de línea
    • buscar en varios archivos a la vez
    • combinarse con otros comandos mediante tuberías (|)

    Sintaxis básica

    grep [opciones] "patrón" archivo

    Estructura

    • opciones: modifican el comportamiento del comando
    • patrón: texto o expresión que queremos buscar
    • archivo: fichero o ficheros donde se realizará la búsqueda

    Primer ejemplo

    Supongamos que tenemos un archivo llamado notas.txt.

    Ana
    Pedro
    Lucía
    Pedro García
    María

    Si ejecutamos:

    grep "Pedro" notas.txt

    El resultado será:

    Pedro
    Pedro García

    Porque grep muestra las líneas donde aparece la palabra Pedro.


    Búsqueda básica en archivos

    Buscar una palabra en un archivo

    grep "error" sistema.log

    Muestra todas las líneas del archivo sistema.log que contienen la palabra error.

    Buscar en varios archivos a la vez

    grep "usuario" archivo1.txt archivo2.txt archivo3.txt

    Busca la palabra usuario en varios archivos.


    Ignorar mayúsculas y minúsculas

    Opción -i

    Permite buscar sin diferenciar entre mayúsculas y minúsculas.

    grep -i "ubuntu" documento.txt

    Esto encontraría:

    • ubuntu
    • Ubuntu
    • UBUNTU

    Muy útil cuando no sabemos cómo está escrito exactamente el texto.


    Mostrar números de línea

    Opción -n

    Muestra el número de línea donde aparece la coincidencia.

    grep -n "error" sistema.log

    Ejemplo de salida:

    15:error de conexión
    28:error al iniciar servicio

    Esto facilita localizar rápidamente la línea en el archivo.


    Contar coincidencias

    Opción -c

    Cuenta cuántas líneas contienen el patrón.

    grep -c "warning" sistema.log

    Devuelve un número, por ejemplo:

    7

    Esto significa que hay 7 líneas con la palabra warning.


    Mostrar solo nombres de archivos

    Opción -l

    Muestra solo los nombres de los archivos donde aparece el patrón.

    grep -l "mysql" *.txt

    En vez de mostrar las líneas, muestra qué archivos contienen esa palabra.

    Opción -L

    Hace lo contrario: muestra los archivos donde no aparece el patrón.

    grep -L "mysql" *.txt

    Buscar palabras exactas

    Opción -w

    Busca coincidencias de palabra completa.

    grep -w "sol" texto.txt

    Esto evita que aparezcan coincidencias como:

    • solitario
    • solución

    y muestra solo la palabra sol como término independiente.


    Invertir la búsqueda

    Opción -v

    Muestra las líneas que no coinciden con el patrón.

    grep -v "admin" usuarios.txt

    Muy útil para excluir líneas.


    Buscar recursivamente en carpetas

    Opción -r

    Busca dentro de todos los archivos de un directorio y sus subdirectorios.

    grep -r "localhost" /etc

    Busca la palabra localhost en todos los archivos dentro de /etc.

    Opción -rn

    Muy usada para búsqueda recursiva con número de línea.

    grep -rn "puerto" /etc

    Mostrar coincidencias exactas dentro de una línea

    Opción -o

    Muestra solo la parte de la línea que coincide.

    grep -o "error" sistema.log

    Si una línea tiene varias veces la palabra error, puede mostrar cada coincidencia por separado.


    Expresiones regulares básicas

    grep puede trabajar con patrones más avanzados mediante expresiones regulares.

    Buscar líneas que empiecen por una palabra

    grep "^root" usuarios.txt

    El símbolo ^ indica inicio de línea.

    Buscar líneas que terminen con una palabra

    grep "bash$" usuarios.txt

    El símbolo $ indica final de línea.

    Buscar líneas que contengan números

    grep "[0-9]" datos.txt

    Esto busca cualquier línea que contenga al menos un dígito.

    Buscar vocales

    grep "[aeiou]" texto.txt

    Buscar letras mayúsculas

    grep "[A-Z]" texto.txt

    Aquí empieza la magia útil. Con moderación, porque las expresiones regulares también tienen fama de convertirse en jeroglíficos con malas pulgas.


    Uso con tuberías

    Una de las cosas más potentes de grep es usarlo junto con otros comandos.

    Buscar un proceso en ejecución

    ps aux | grep apache

    Muestra las líneas del listado de procesos donde aparece apache.

    Buscar un servicio activo

    systemctl list-units | grep ssh

    Filtrar resultados de un listado

    ls -l | grep ".txt"

    Aquí grep filtra la salida de otro comando.


    Buscar en logs

    grep se usa muchísimo para revisar logs.

    Buscar errores en un archivo de log

    grep -i "error" /var/log/syslog

    Buscar intentos fallidos

    grep -i "failed" /var/log/auth.log

    Buscar accesos SSH

    grep "sshd" /var/log/auth.log

    Esto es especialmente útil en administración y ciberseguridad.


    Usar grep con find

    Una combinación muy habitual es usar find para localizar archivos y grep para buscar texto dentro de ellos.

    Buscar la palabra “password” en archivos .conf

    find /etc -name "*.conf" -exec grep -H "password" {} \;

    Explicación

    • find localiza archivos .conf
    • grep busca la palabra password
    • -H hace que aparezca también el nombre del archivo

    Mostrar nombre del archivo junto al resultado

    Opción -H

    grep -H "localhost" /etc/hosts

    Si se buscan varios archivos, esto ayuda a saber de cuál sale cada coincidencia.


    Ocultar nombre del archivo

    Opción -h

    grep -h "usuario" archivo1.txt archivo2.txt

    Muestra solo las líneas encontradas, sin el nombre del archivo.


    Buscar coincidencias exactas con expresiones ampliadas

    Opción -E

    Activa expresiones regulares extendidas.

    grep -E "error|failed|warning" sistema.log

    Busca líneas que contengan cualquiera de esas palabras.

    Muy útil porque evita tener que hacer búsquedas separadas.


    Buscar coincidencias fijas sin interpretar regex

    Opción -F

    Busca texto literal, sin interpretar caracteres especiales como expresiones regulares.

    grep -F "a+b" formulas.txt

    Esto busca exactamente a+b.


    Resaltar coincidencias

    En muchas terminales, grep resalta las coincidencias automáticamente. También se puede forzar:

    grep --color=auto "error" sistema.log

    Esto mejora mucho la lectura.


    Ejemplos

    1. Buscar la palabra linux en un archivo

    grep "linux" apuntes.txt

    2. Buscar la palabra linux ignorando mayúsculas

    grep -i "linux" apuntes.txt

    3. Mostrar las líneas donde aparece admin con su número

    grep -n "admin" usuarios.txt

    4. Contar cuántas líneas contienen error

    grep -c "error" sistema.log

    5. Mostrar líneas que no contienen root

    grep -v "root" usuarios.txt

    6. Buscar recursivamente la palabra puerto en una carpeta

    grep -r "puerto" /etc

    7. Buscar varias palabras con una sola orden

    grep -E "error|warning|failed" sistema.log

    8. Buscar procesos relacionados con mysql

    ps aux | grep mysql

    Buenas prácticas al usar grep

    1. Usar comillas en el patrón

    Correcto:

    grep "error de red" log.txt

    Esto evita que el shell haga cosas raras con espacios o caracteres especiales.

    2. Usar -i cuando no importe cómo está escrito

    Si buscas nombres, usuarios o palabras que pueden ir en mayúsculas o minúsculas, ahorra disgustos.

    3. Usar -n para localizar mejor

    Muy recomendable cuando luego se va a editar el archivo.

    4. Probar primero búsquedas simples

    Antes de montar una expresión regular digna de un grimorio arcano, comprueba que el texto base aparece.

    5. Tener cuidado con búsquedas recursivas en rutas grandes

    Buscar en / o en directorios enormes puede tardar bastante y generar mucho ruido.


    Errores comunes

    Error 1: pensar que grep busca archivos por nombre

    No.
    grep busca texto dentro de archivos o dentro de la salida de comandos.

    Para buscar archivos por nombre se usa find.

    Error 2: olvidar las comillas

    grep error de red log.txt

    Esto no se interpreta como una sola búsqueda, sino como varios argumentos.

    Lo correcto sería:

    grep "error de red" log.txt

    Error 3: confundir coincidencia parcial con palabra exacta

    grep "sol" texto.txt

    Puede encontrar:

    • sol
    • solución
    • solitario

    Si queremos solo la palabra completa:

    grep -w "sol" texto.txt

    Error 4: usar expresiones regulares sin darse cuenta

    Caracteres como ., *, ^, $, [ ] tienen significado especial.
    Si quieres buscar texto literal con símbolos, a veces conviene usar -F.


    Opciones principales de grep

    OpciónSignificadoEjemplo
    -iIgnora mayúsculas y minúsculasgrep -i "ubuntu" archivo.txt
    -nMuestra número de líneagrep -n "error" log.txt
    -cCuenta líneas coincidentesgrep -c "warning" log.txt
    -lMuestra solo nombres de archivos con coincidenciagrep -l "mysql" *.txt
    -LMuestra archivos sin coincidenciagrep -L "mysql" *.txt
    -wBusca palabra exactagrep -w "sol" texto.txt
    -vInvierte la búsquedagrep -v "admin" usuarios.txt
    -rBusca recursivamente en carpetasgrep -r "localhost" /etc
    -rnRecursivo con número de líneagrep -rn "puerto" /etc
    -oMuestra solo la coincidenciagrep -o "error" log.txt
    -HMuestra nombre del archivogrep -H "root" archivo.txt
    -hOculta nombre del archivogrep -h "root" archivo1.txt archivo2.txt
    -EUsa expresiones regulares extendidas`grep -E «error
    -FBusca texto literalgrep -F "a+b" archivo.txt
    --color=autoResalta coincidenciasgrep --color=auto "error" log.txt

    Diferencia entre grep y find

    Esto conviene dejarlo muy claro a los alumnos, porque se confunden muchísimo al principio.

    Comando¿Qué busca?Ejemplo
    findArchivos y directorios por nombre, tipo, tamaño, fecha, etc.find /home -name "*.txt"
    grepTexto dentro de archivos o salida de comandosgrep "error" log.txt

    Ejemplo práctico

    • find responde a: “¿Dónde están los archivos .txt?”
    • grep responde a: “¿Qué archivos contienen la palabra error?”

    Uno busca cosas.
    El otro busca texto dentro de las cosas.
    Cada uno hace su hechicería.


    Ejercicios

    Ejercicio 1

    Busca la palabra linux dentro de un archivo llamado apuntes.txt.

    Ejercicio 2

    Busca la palabra ubuntu ignorando mayúsculas y minúsculas.

    Ejercicio 3

    Muestra en qué líneas aparece la palabra admin dentro de usuarios.txt.

    Ejercicio 4

    Cuenta cuántas líneas contienen la palabra error en sistema.log.

    Ejercicio 5

    Muestra todas las líneas que no contienen la palabra root.

    Ejercicio 6

    Busca recursivamente la palabra servidor dentro de la carpeta /etc.

    Ejercicio 7

    Busca cualquiera de estas palabras en sistema.log: error, warning o failed.

    Ejercicio 8

    Muestra los procesos en ejecución relacionados con ssh.


    Soluciones de los ejercicios

    Ejercicio 1

    Enunciado: Busca la palabra linux dentro de un archivo llamado apuntes.txt.

    grep "linux" apuntes.txt

    Busca las líneas del archivo apuntes.txt que contienen la palabra linux.


    Ejercicio 2

    Enunciado: Busca la palabra ubuntu ignorando mayúsculas y minúsculas.

    grep -i "ubuntu" apuntes.txt

    La opción -i permite encontrar ubuntu, Ubuntu, UBUNTU, etc.


    Ejercicio 3

    Enunciado: Muestra en qué líneas aparece la palabra admin dentro de usuarios.txt.

    grep -n "admin" usuarios.txt

    La opción -n añade el número de línea a cada coincidencia.


    Ejercicio 4

    Enunciado: Cuenta cuántas líneas contienen la palabra error en sistema.log.

    grep -c "error" sistema.log

    La opción -c cuenta el número de líneas coincidentes.


    Ejercicio 5

    Enunciado: Muestra todas las líneas que no contienen la palabra root.

    grep -v "root" usuarios.txt

    La opción -v invierte la búsqueda y muestra las líneas que no contienen ese patrón.


    Ejercicio 6

    Enunciado: Busca recursivamente la palabra servidor dentro de la carpeta /etc.

    grep -r "servidor" /etc

    La opción -r busca en todos los archivos dentro del directorio y sus subdirectorios.


    Ejercicio 7

    Enunciado: Busca cualquiera de estas palabras en sistema.log: error, warning o failed.

    grep -E "error|warning|failed" sistema.log

    La opción -E permite usar expresiones regulares extendidas y el operador | significa “o”.


    Ejercicio 8

    Enunciado: Muestra los procesos en ejecución relacionados con ssh.

    ps aux | grep ssh

    ps aux lista los procesos y grep ssh filtra los que contienen ssh.