Capas de un sistema GNU/Linux desde el hardware hasta las aplicaciones
GNU/Linux es un sistema completo: kernel, espacio de usuario, servicios, herramientas, paquetes y aplicaciones.

Actualización editorial: artículo original de 2017, reescrito y ampliado el 31 de octubre de 2026.

GNU/Linux es una familia de sistemas operativos tipo Unix construidos alrededor del kernel Linux y de herramientas de espacio de usuario procedentes de GNU y de muchos otros proyectos de software libre. En la conversación diaria solemos decir “Linux” para hablar del conjunto, aunque técnicamente Linux es el núcleo que administra CPU, memoria, dispositivos, procesos y comunicación con el hardware.

El sistema que usa una persona o un servidor incluye mucho más: bibliotecas, shell, utilidades, sistema de inicio, administrador de paquetes, entorno gráfico, servicios de red y aplicaciones. Una distribución integra esas piezas, define políticas de actualización y entrega repositorios mantenidos.

1. Las capas de un sistema GNU/Linux

CapaFunciónEjemplos
HardwareCPU, memoria, discos, interfaces y aceleradoresx86_64, ARM64, NVMe, GPU
Kernel LinuxPlanificación, memoria, drivers, red, sistemas de archivos y aislamientoscheduler, VFS, netfilter, cgroups, namespaces
Espacio de usuarioBibliotecas y utilidades que consumen llamadas del kernelglibc, coreutils, util-linux, iproute2
ServiciosProcesos persistentes que entregan capacidadessystemd, sshd, chronyd, NetworkManager
AplicacionesSoftware utilizado por personas o por otros sistemasNginx, PostgreSQL, Podman, GNOME

2. Qué hace el kernel

El kernel ejecuta en modo privilegiado y expone llamadas de sistema a los procesos. Decide qué proceso usa la CPU, asigna memoria virtual, controla dispositivos, implementa pilas de red y presenta una interfaz común para distintos sistemas de archivos. También proporciona mecanismos de seguridad como permisos, capabilities, seccomp, namespaces y cgroups.

# Identificar kernel, arquitectura y distribución
uname -a
uname -r
uname -m
cat /etc/os-release

# Ver CPU, memoria y dispositivos de bloque
lscpu
free -h
lsblk -f

Los namespaces y cgroups son bases de los contenedores: los primeros aíslan vistas de procesos, red, montajes y otros recursos; los segundos miden y limitan consumo. Un contenedor comparte el kernel del host, mientras que una máquina virtual ejecuta su propio kernel sobre hardware virtualizado.

3. Qué aporta GNU

El proyecto GNU comenzó en 1983 con el objetivo de construir un sistema tipo Unix que respetara la libertad del usuario. De él provienen herramientas fundamentales como Bash, GCC, GDB, GNU Make, coreutils y glibc. La página oficial de software GNU muestra la amplitud de ese ecosistema.

Un sistema moderno también integra componentes que no pertenecen a GNU: el servidor gráfico, systemd, OpenSSH, lenguajes, escritorios, herramientas de red y miles de paquetes independientes. Por eso “GNU/Linux” describe una colaboración de proyectos, no un único producto de un solo proveedor.

4. Distribuciones: una misma base, decisiones diferentes

Una distribución selecciona versiones, compila paquetes, mantiene repositorios, publica avisos de seguridad y define el ciclo de vida. Debian, Ubuntu, Fedora, Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, SUSE, Arch y otras comparten muchas tecnologías, pero difieren en soporte, ritmo de cambio, herramientas y políticas.

NecesidadCriterio que pesa más
Servidor empresarialCiclo de soporte, certificaciones, parches y proveedor
Plataforma cloudImágenes oficiales, automatización, tamaño y arranque
Estación de trabajoHardware, escritorio, aplicaciones y experiencia de actualización
LaboratorioDocumentación, comunidad y facilidad para experimentar
ContenedoresSuperficie mínima, compatibilidad OCI y actualización automatizada

5. El sistema de archivos

GNU/Linux presenta archivos, directorios, dispositivos y muchos datos del kernel dentro de un árbol que comienza en /. La organización exacta varía, pero estos caminos son frecuentes:

  • /etc: configuración del sistema.
  • /var: datos variables como logs, colas y cachés.
  • /home: directorios de usuarios.
  • /usr: programas, bibliotecas y datos compartidos.
  • /run: estado temporal desde el arranque.
  • /proc y /sys: vistas del kernel y los dispositivos.
# Espacio, montajes e inodos
df -hT
df -ih
findmnt

# Encontrar qué directorios consumen más espacio
du -xhd1 /var | sort -h

6. Usuarios, grupos y permisos

Cada proceso se ejecuta con una identidad. Los permisos tradicionales separan propietario, grupo y otros; las ACL permiten reglas adicionales. Ejecutar todo como root elimina una frontera esencial. En servidores se recomienda usar cuentas personales, elevar privilegios con sudo y asignar servicios a identidades dedicadas.

id
ls -l /etc/ssh/sshd_config
getfacl /srv/datos
sudo -l

# Cambiar propietario y permisos de forma explícita
sudo chown -R app:app /srv/app
sudo chmod 0750 /srv/app

SELinux añade control de acceso obligatorio mediante etiquetas y políticas. Desactivarlo para “resolver” un problema cambia el modelo de seguridad completo. Es preferible revisar contexto, registros y política con herramientas como ls -Z, ausearch y semanage.

7. Procesos y systemd

Un proceso es una instancia de un programa. systemd administra unidades de servicio, dependencias, sockets, temporizadores y el arranque en muchas distribuciones actuales.

# Investigar carga y procesos
uptime
ps aux --sort=-%cpu | head
top

# Operar un servicio y leer sus eventos
systemctl status sshd
systemctl list-units --failed
journalctl -u sshd --since today
journalctl -p warning..alert -b

8. Red: observar antes de cambiar

ip -brief address
ip route
ss -lntup
resolvectl status
ping -c 3 1.1.1.1
getent hosts perzam.com.co
curl -I https://perzam.com.co/

Una secuencia útil de diagnóstico es validar enlace, dirección, ruta, DNS, puerto y protocolo de aplicación, en ese orden. Cambiar firewall, DNS y rutas al mismo tiempo dificulta identificar la causa.

9. Paquetes y actualizaciones

Los administradores de paquetes resuelven dependencias, verifican firmas y registran qué archivos pertenecen a cada paquete. Debian y Ubuntu usan APT/dpkg; Fedora y la familia RHEL usan DNF/RPM; SUSE usa Zypper/RPM; Arch usa Pacman.

# Familia Debian/Ubuntu
sudo apt update
apt list --upgradable
sudo apt upgrade

# Familia Fedora/RHEL
sudo dnf check-update
sudo dnf upgrade
rpm -q --changelog openssl | head

En producción, actualizar implica repositorios controlados, ventana, respaldo, validación y plan de reversión. Posponer indefinidamente también es una decisión de riesgo.

10. Seguridad operacional mínima

  • Instalar solamente paquetes necesarios y mantenerlos soportados.
  • Usar llaves SSH, MFA donde aplique y acceso administrativo auditado.
  • Restringir servicios escuchando y reglas de firewall.
  • Mantener SELinux o el mecanismo MAC de la distribución en modo de aplicación.
  • Centralizar logs y sincronizar el tiempo.
  • Respaldar datos y configuración; probar la restauración.
  • Automatizar configuración para reducir diferencias entre servidores.

11. Una ruta para aprender

  1. Instalar una distribución soportada en una máquina virtual.
  2. Aprender navegación, permisos, pipes, redirecciones y búsqueda.
  3. Administrar usuarios, paquetes, servicios, discos y red.
  4. Configurar SSH, firewall, SELinux y actualizaciones.
  5. Publicar un servicio y observarlo con logs y métricas.
  6. Automatizar la misma instalación con Ansible o cloud-init.
  7. Romper el laboratorio, diagnosticarlo y restaurarlo desde respaldo.

Conclusión

GNU/Linux combina un kernel potente, herramientas abiertas y un modelo de distribución que puede adaptarse desde dispositivos pequeños hasta nubes y supercomputadores. Aprender comandos es útil; comprender procesos, identidad, almacenamiento, red y ciclo de vida es lo que permite operarlo con seguridad.

Fuentes para ampliar