Sistemas Operativos Linux
Linux es un sistema operativo multiusuario, multitarea y multiproceso, diseñado para aprovechar de forma eficiente los recursos de hardware disponibles. Su origen se remonta al movimiento por el software libre impulsado en los años 80 por Richard Stallman, quien lanzó el Proyecto GNU con el objetivo de desarrollar un sistema operativo completamente compatible con UNIX y distribuido bajo una licencia que garantizara la libertad de uso, modificación y redistribución del software. Para ello, en 1985 fundó la Free Software Foundation (FSF) y definió la Licencia Pública General de GNU (GPL), que continúa vigente como uno de los pilares legales del software libre.
En 1991, Linus Torvalds, estudiante de informática en la Universidad de Helsinki, desarrolló un núcleo (kernel) compatible con UNIX que podía ejecutarse en ordenadores personales con procesadores i386. Inspirado por Minix, un sistema educativo basado en UNIX, Torvalds publicó el núcleo bajo licencia GPL, permitiendo su integración con las herramientas GNU existentes. En el sentido estricto, Linux es el kernel de sistema operativo.
La primera versión pública, Linux 0.01, apareció en agosto de 1991, aunque era funcionalmente limitada. Poco después, la versión 0.02 ya incluía un entorno básico de trabajo, con el intérprete de comandos bash y el compilador GCC, sentando las bases de un sistema operativo funcional. A partir de ese momento, con la colaboración de miles de desarrolladores alrededor del mundo, Linux evolucionó rápidamente hasta alcanzar su primera versión estable (1.0) en 1993. Desde entonces, su desarrollo ha sido continuo, sostenido por una comunidad global y también por grandes empresas tecnológicas, consolidándose como uno de los sistemas operativos más utilizados en servidores, dispositivos móviles, supercomputación, entornos cloud y sistemas embebidos.
Principales Características de Linux
El éxito de Linux se basa en una combinación de filosofía de desarrollo abierta, flexibilidad técnica y un ecosistema maduro. Bajo la Licencia Pública General de GNU, cualquier usuario puede estudiar, modificar, reutilizar y redistribuir el sistema operativo sin restricciones, lo que ha fomentado una innovación constante. Sus características más destacadas son:
- Gratuito: Linux puede utilizarse sin coste de licencia, lo que lo convierte en una alternativa económica frente a sistemas operativos comerciales, especialmente en entornos empresariales y educativos.
- Código abierto (open source): El código fuente del kernel y de la mayoría de sus componentes está disponible públicamente, lo que facilita la auditoría, mejora la transparencia y permite a desarrolladores de todo el mundo colaborar en su evolución.
- Seguro: Su modelo de permisos, gestión de usuarios y aislamiento de procesos, junto con un ritmo ágil de actualizaciones y una comunidad activa, hacen de Linux un sistema altamente resistente a amenazas como malware o accesos no autorizados.
- Multitarea real: Linux permite ejecutar múltiples procesos simultáneamente con eficiencia y sin bloqueo mutuo, optimizando el uso de los recursos del sistema.
- Multiusuario: Varios usuarios pueden acceder al sistema al mismo tiempo, manteniendo entornos de trabajo aislados y seguros.
- Altamente personalizable: Desde el entorno gráfico hasta el comportamiento del núcleo, Linux permite ajustes finos para adaptarse a distintas necesidades: desde sistemas ligeros para hardware antiguo hasta distribuciones específicas para servidores o tareas científicas.
- Gestión avanzada de dispositivos: Proporciona un control exhaustivo sobre los drivers, con posibilidad de compilar o cargar módulos según el hardware instalado, lo que ofrece una alta compatibilidad y adaptabilidad.
- Independencia tecnológica: Cualquier persona o entidad puede crear su propia distribución Linux, sin depender de proveedores cerrados. Esto ha dado lugar a una gran diversidad de entornos adaptados a distintos sectores.
- Estabilidad y fiabilidad: Es uno de los sistemas más utilizados en infraestructuras críticas, gracias a su comportamiento predecible y tolerancia a fallos.
- Escalabilidad: Funciona con eficiencia tanto en sistemas embebidos de bajo consumo como en supercomputadoras de alto rendimiento, lo que lo hace apto para múltiples escenarios sin comprometer el rendimiento.
- / (raíz): Punto de partida de todo el sistema de archivos. Desde aquí se derivan todos los directorios y montajes.
- /bin: Contiene comandos esenciales del sistema accesibles a todos los usuarios, necesarios para arrancar y operar en modo monousuario.
- /sbin: Contiene utilidades administrativas reservadas al superusuario (root), utilizadas principalmente para tareas de arranque, reparación y gestión del sistema.
- /lib: Almacena librerías compartidas necesarias para ejecutar los programas en /bin y /sbin, así como módulos del kernel.
- /usr: Contiene aplicaciones de usuario y utilidades secundarias. Es uno de los directorios más extensos. Incluye /usr/bin, /usr/sbin y /usr/lib.
- /opt: Paquetes de software de aplicación.
- /dev: Incluye archivos de dispositivo que actúan como interfaces de acceso a hardware (discos, puertos, terminales, etc.). Todos los dispositivos del sistema se tratan como archivos.
- /etc: Contiene la mayoría de los archivos de configuración del sistema. Cada servicio o programa suele tener aquí su propio subdirectorio o archivo.
- /var: Almacena datos variables generados por el sistema o por aplicaciones, como logs, archivos temporales, bases de datos en uso, colas de impresión y más...
- /var/spool: Guarda archivos en espera de ser procesados (por ejemplo, colas de impresión o correo).
- /var/log: Directorio donde se almacenan los registros de actividad del sistema, como logs de autenticación, acceso o errores (auth.log, syslog, etc.).
- /proc: Sistema de archivos virtual, no almacenado físicamente en disco. Proporciona acceso a información sobre procesos activos, estado del kernel, uso de CPU, memoria, y otros parámetros del sistema.
- /home: Contiene los directorios personales de los usuarios normales, cada uno con sus archivos y configuraciones.
- /root: Directorio personal exclusivo del usuario root. No debe confundirse con /.
- /mnt: Punto de montaje temporal para sistemas de archivos manualmente conectados por el administrador, como dispositivos externos o particiones adicionales.
- /tmp: Espacio utilizado para archivos temporales, creados por el sistema o las aplicaciones durante su ejecución. Normalmente se limpia automáticamente en cada reinicio.
- Interfaz en modo texto (Shell): El Shell es el intérprete de comandos que permite interactuar con el sistema operativo mediante texto. Se utiliza tanto para la ejecución directa de comandos como para la creación de scripts automatizados. Existen distintos tipos de Shell, cada uno con características específicas:
- bash (Bourne Again Shell): Es el Shell más utilizado en la actualidad, preinstalado en la mayoría de distribuciones. Combina funcionalidades del Shell Bourne (sh) con mejoras como historial de comandos, expansión de variables, autocompletado y control de procesos.
- rbash (Restricted shell): Es una versión restringida de la shell bash que limita las acciones del usuario para mejorar la seguridad. Algunas de las restricciones mas comunes son:
- No se permite cambiar de directorio (cd).
- No se puede establecer o modificar variables como PATH, SHELL, ENV, etc...
- No se puede ejecutar comandos usando rutas absolutas (/bin/ls) o relativas (./script.sh).
- No se permite redirigir la salida (>, >>, 2>, etc...).
- No se permiten ejecutar programas fuera de los permitidos por el administrador.
- sh (Bourne Shell): Fue el Shell original de UNIX. Utiliza el prompt $ y sirve como base para muchos otros Shell. Aunque hoy se usa principalmente por compatibilidad, sigue presente en scripts del sistema.
- csh (C Shell): Usa el prompt %. Diseñado con una sintaxis similar al lenguaje C, lo que facilita su adopción por programadores. Introdujo mejoras como alias, historial y control de trabajos.
- ksh (Korn Shell): Una evolución de sh que incorpora características de csh, como edición en línea y funciones. Se usa en entornos empresariales y scripting avanzado.
- jsh (Job Shell): Variante enfocada en la gestión de procesos en segundo plano (jobs), aunque de uso poco extendido actualmente.
- Interfaz gráfica (GUI): La interfaz gráfica permite al usuario interactuar con el sistema mediante ventanas, iconos, menús y dispositivos apuntadores. Linux no tiene una GUI única: los entornos gráficos se ejecutan sobre un servidor gráfico como X11 o Wayland, y se componen de distintos entornos de escritorio.
- GNOME: Entorno moderno y minimalista, enfocado en la productividad y simplicidad. Es el escritorio por defecto en muchas distribuciones como Ubuntu.
- KDE Plasma: Ofrece un entorno visual atractivo, altamente configurable y funcional, con un enfoque en la integración y personalización.
- Xfce y LXQt: Alternativas ligeras, pensadas para equipos con pocos recursos o para quienes priorizan velocidad sobre apariencia.
- X Window System (X11): Sistema de ventanas que actúa como base para los entornos gráficos tradicionales. Aunque sigue en uso, está siendo reemplazado por Wayland, un servidor gráfico más moderno, seguro y eficiente.
- OpenLook: Interfaz gráfica antigua, hoy en desuso. Fue una de las primeras GUIs en sistemas UNIX, actualmente sin presencia significativa en distribuciones Linux modernas.
- man comando: Muestra el manual de un comando
- sudo: permite a un usuario autorizado ejecutar comandos con privilegios de administrador o de otro usuario.
- su: permite cambiar a otro usuario durante una sesión de login.
- whoami: muestra el nombre de usuario efectivo actual de la sesión en la terminal.
- id: ver tu información de usuario y grupo (UID y GID), mostrando números de identificación y nombres para el usuario actual o uno especificado
- apt-get update: Actualiza la Base de datos de los paquetes
- apt-get upgrade: Actualiza el software del equipo
- apt-get install paquete: Instala o actualiza un paquete
- apt-get remove paquete: elimina un paquete del sistema
- ln archivo1 /directorio/archivo2: Crea una copia enlazada
- mc: Explorador de archivos con un editor integrado (mcedit)
- ls: Lista los archivos de un directorio. Si no se especifica un directorio, lista el actual
- cd /directorio: Cambia al directorio especificado. Si se usa solo cd, va a la home del usuario
- cat fichero: Muestra el contenido de un fichero
- cd ..: Sube un nivel de directorios
- less: Muestra la salida de un comando de manera paginada
- cd -: Vuelve a la ubicación anterior
- more: Muestra la salida de un comando de manera paginada
- cp archivo1 archivo2: Copia archivo1 a archivo2. Si solo se indica un directorio, copia el archivo manteniendo su nombre
- echo: Agrega, muestra o modifica grupos locales
- mv archivo1 archivo2: Renombra archivo1 a archivo2
- grep ‘cadena’ archivo: Muestra las líneas de un archivo que contienen una cadena específica
- mv archivo /directorio: Mueve un archivo a un directorio
- tail archivo: Muestra las últimas líneas de un archivo (10 por defecto)
- rm archivo: Borra un archivo
- head archivo: Muestra las primeras líneas de un archivo (10 por defecto)
- kill: Elimina un proceso
- pwd: Muestra el directorio de trabajo actual
- passwd: Cambia la contraseña del usuario
- history: Muestra el historial de comandos ejecutados
- df: Muestra el espacio libre en el disco
- top: Muestra los procesos que más CPU consumen en tiempo real
- halt: Apaga el equipo
- reboot: Reinicia el equipo
- shutdown: Apaga el equipo. Puedes especificar el tiempo con -t
- ps: Muestra los procesos en ejecución
- ps –ef: Muestra todos los procesos en ejecución
- ps –ef | grep "nombre_proceso": Filtra los procesos por nombre, usando la tubería (|)
- which: Localiza la ruta completa de un comando o programa ejecutable.
- find: Busca archivos y directorios dentro del sistema de archivos según diversos criterios como nombre, tipo, tamaño, permisos y fecha de modificación.
- File: Muestra información sobre el tipo de archivo del archivo especificado.
- lsattr: Muestra atributos especiales. Los más comunes son:
- i (Inmutable): Hace que el archivo o directorio no pueda ser modificado, borrado, renombrado o enlazado, incluso por el usuario root.
- a (Append-only): Solo permite añadir datos al final del archivo, impidiendo borrar o sobrescribir el contenido existente.
- c (Comprimido): El kernel comprime automáticamente el archivo en el disco, descomprimiéndolo al leerlo.
- s (Borrado Seguro): Cuando se elimina, sus bloques se sobrescriben con ceros, garantizando que el archivo no sea recuperable.
- d (No Dump): Indica al programa dump que ignore el archivo para copias de seguridad.
- u (Undeletable): Permite recuperar el contenido de un archivo borrado.
- chattr: Modifica atributos especiales (usa + para colocar permisos y - para eliminarlos).
- Lectura (r) = 4: permite visualizar el contenido
- Escritura (w) = 2: permite modificar o eliminar
- Ejecución (x) = 1: permite ejecutar archivos o acceder a directorios
- chmod: ajusta los permisos de un archivo o directorio usando notación octal. Cada dígito en la notación octal define los permisos para el propietario, el grupo y otros. Por ejemplo, chmod 640 archivo asigna:
- 6 al propietario: Lectura (4) + Escritura (2)
- 4 al grupo: Solo lectura
- 0 a otros: Sin acceso
- chown: Cambia el propietario de un archivo o directorio. Ejemplo: chown usuario:grupo archivo
- chgrp: Modifica el grupo asociado a un archivo o directorio. Ejemplo: chgrp grupo archivo
- Sticky Bit: También llamado restricted deletion flag, tiene el valor octal 1 y en modo simbólico está representado por una t dentro de los permisos del otro. Esto se aplica solo a los directorios, y en Linux evita que los usuarios eliminen o cambien el nombre de un archivo en un directorio a menos que sean dueños de ese archivo o directorio.
- Set GID: Establecer GID, también conocido como SGID o "Set Group ID bit", tiene el valor octal 2 y en modo simbólico está representado por una s en los permisos de grupo. Esto se puede aplicar a archivos ejecutables o directorios. En los archivos ejecutables, otorgará la ejecución del archivo con privilegios del grupo. Cuando se aplica a los directorios, hará que cada archivo o directorio creado debajo herede el grupo del directorio principal.
- Set UID: SUID, también conocido como "Set User ID", tiene el valor octal 4 y está representado por una s en los permisos user en modo simbólico. Solo se aplica a los archivos y su comportamiento es similar al bit SGID, pero el proceso se ejecutará con los privilegios del usuario que posee el archivo.
- ip: Muestra o configura parámetros de red
- ifconfig: Muestra la configuración de interfaces de red
- tracepath: Muestra la ruta de red a un destino
- ping: Envía paquetes ICMP para verificar la conectividad
- ss: Muestra sockets activos
- dig: Consulta servidores DNS
- host: Muestra información sobre un dominio o dirección IP
- hostname: Muestra o configura el nombre del host del sistema
- curl: Realiza transferencias de datos desde o hacia un servidor
- mtr: Combina las funcionalidades de ping y traceroute
- whois: Muestra información WHOIS sobre dominios o IPs
- iftop: Muestra el tráfico de red en tiempo real
- tcpdump: Captura y analiza paquetes de red
- ethtool: Muestra información sobre dispositivos de red
- nmcli: Interfaz de línea de comandos para gestionar redes
- nmtui: Herramienta interactiva para gestionar redes
- nmap: Escanea redes y puertos
- bmon: Monitoriza el ancho de banda de red
- speedtest-cli: Realiza una prueba de velocidad de conexión
- nslookup: Realiza consultas DNS
- iptables: Configura reglas de filtrado de red (firewall)
- Debian: Una de las distribuciones más antiguas y respetadas. Se caracteriza por su alta estabilidad y políticas conservadoras de actualización, lo que la hace idónea para servidores y sistemas donde la fiabilidad es prioritaria. Su instalación y configuración pueden resultar menos accesibles para usuarios sin experiencia previa.
- Ubuntu: Basada en Debian, ofrece un enfoque más orientado a facilidad de uso, compatibilidad de hardware y entorno gráfico amigable. Es una de las distros más populares tanto en escritorio como en servidores. Tiene múltiples sabores oficiales (Kubuntu, Xubuntu, Ubuntu Server, etc.).
- Linux Mint: Basada en Ubuntu, con entornos gráficos tradicionales (Cinnamon, MATE, XFCE), pensada para usuarios que migran desde Windows. Es ligera, estable y con una curva de aprendizaje muy suave.
- Fedora: Distribución libre patrocinada por Red Hat, enfocada en tecnologías emergentes. Actúa como plataforma de prueba para futuras implementaciones en RHEL. Su ciclo de actualización es rápido y está dirigida a usuarios técnicos y desarrolladores.
- CentOS Stream: Sustituto del antiguo CentOS clásico. Funciona como rama previa de RHEL, permitiendo anticipar futuras versiones. Es estable y orientada a entornos de pruebas o desarrollo empresarial.
- Xubuntu / Lubuntu: Variantes de Ubuntu diseñadas para equipos con recursos limitados, con entornos de escritorio livianos como XFCE y LXQt.
- Red Hat Enterprise Linux (RHEL): Distribución comercial y de pago, orientada al entorno corporativo. Ofrece soporte oficial, mantenimiento a largo plazo y certificaciones. Muy extendida en sectores industriales, financieros y de servicios críticos.
- Mandriva (descendencia: Mageia, OpenMandriva): Originalmente una distro francesa basada en Red Hat, orientada a usuarios principiantes. Aunque Mandriva como empresa desapareció, su legado continúa en forks comunitarios como Mageia y OpenMandriva.
- Kali Linux: Basada en Debian, está especializada en ciberseguridad, auditorías de red y pruebas de penetración. Incluye una amplia colección de herramientas para análisis forense, escaneo y explotación. Es usada por profesionales de seguridad y formación técnica.

