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
| Capa | Función | Ejemplos |
|---|---|---|
| Hardware | CPU, memoria, discos, interfaces y aceleradores | x86_64, ARM64, NVMe, GPU |
| Kernel Linux | Planificación, memoria, drivers, red, sistemas de archivos y aislamiento | scheduler, VFS, netfilter, cgroups, namespaces |
| Espacio de usuario | Bibliotecas y utilidades que consumen llamadas del kernel | glibc, coreutils, util-linux, iproute2 |
| Servicios | Procesos persistentes que entregan capacidades | systemd, sshd, chronyd, NetworkManager |
| Aplicaciones | Software utilizado por personas o por otros sistemas | Nginx, 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.
| Necesidad | Criterio que pesa más |
|---|---|
| Servidor empresarial | Ciclo de soporte, certificaciones, parches y proveedor |
| Plataforma cloud | Imágenes oficiales, automatización, tamaño y arranque |
| Estación de trabajo | Hardware, escritorio, aplicaciones y experiencia de actualización |
| Laboratorio | Documentación, comunidad y facilidad para experimentar |
| Contenedores | Superficie 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./procy/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
- Instalar una distribución soportada en una máquina virtual.
- Aprender navegación, permisos, pipes, redirecciones y búsqueda.
- Administrar usuarios, paquetes, servicios, discos y red.
- Configurar SSH, firewall, SELinux y actualizaciones.
- Publicar un servicio y observarlo con logs y métricas.
- Automatizar la misma instalación con Ansible o cloud-init.
- 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.
