Sistemas Unix y Linux
Unix es una familia de sistemas operativos multiusuario y multitarea. GNU/Linux es un sistema operativo libre y de código abierto de tipo Unix: la parte GNU aporta las herramientas y el compilador, y Linux es estrictamente el kernel (núcleo). Una distribución de GNU/Linux es un sistema operativo construido sobre el núcleo Linux al que se añade un conjunto de aplicaciones, gestor de paquetes y entorno de escritorio.
El kernel y su papel
El kernel es la parte fundamental del sistema operativo: es el software que reside en memoria y actúa como interfaz entre el hardware y los procesos, indicando a la CPU qué debe hacer. Sus funciones esenciales son controlar los procesos, la memoria y la administración de los dispositivos. Como Linux es el kernel, define las capacidades centrales y el rendimiento de todos los sistemas operativos basados en él. Las características del núcleo se añaden o quitan compilando el núcleo y reiniciando el sistema.
La memoria se divide en espacio del kernel y espacio del usuario para separar los privilegios de seguridad. El espacio del usuario es donde se encuentran los archivos y programas visibles para el usuario. Un demonio (daemon) es un proceso que se ejecuta en segundo plano.
Procesos
Cada proceso tiene un PID, un UID (identificador de usuario propietario), un identificador de grupo y de sesión. El UID 0 corresponde al superusuario (root); es falso afirmar que el UID efectivo 1 sea privilegiado. El proceso init es el primer proceso del arranque (PID 1), no el arranque de un usuario.
-
fork(): crea un proceso hijo duplicando al padre. Al padre le devuelve el PID del hijo y al hijo le devuelve 0; tras la llamada padre e hijo no comparten la misma memoria (tienen copias independientes). Es falso que devuelva al hijo el PID del padre. -
clone(): crea procesos hijos especificando qué partes del contexto comparte con el hijo. -
En el núcleo,
do_fork(enfork.c) invoca acopy_process, que crea latask_structdel nuevo proceso.
El comando ps (Process Status) muestra los procesos. Opciones habituales: -e lista todos los procesos del sistema; -f genera un listado completo (información detallada); -x elimina la restricción BSD de listar solo procesos con tty (lista todos los del usuario, mismo EUID); -j muestra identificador de sesión y de grupo. ps -ef | grep httpd filtra la información del proceso httpd, y ps -ef | grep $USER muestra los procesos del usuario actual.
Sistema de ficheros y arranque
En Unix, la información de cada fichero se guarda en un inodo (inode): tipo, permisos, propietario, tamaño, marcas de tiempo y punteros a los bloques de datos. El nombre del fichero NO se almacena en el inodo (reside en el directorio). El sistema de ficheros tradicionalmente predeterminado en la mayoría de distribuciones fue ext3 (hoy ext4); FAT16 no fue creado para Linux. Directorios clave: /etc (ficheros de configuración del sistema y de las aplicaciones), /bin (ejecutables y utilidades básicas), /sbin (ejecutables de arranque y recuperación reservados al administrador). El gestor de arranque GRUB 2 reemplazó al antiguo GRUB, que pasó a denominarse GRUB Legacy.
Comandos esenciales
| Comando | Función |
|---|---|
ls / ls -l | Lista ficheros; -l da listado detallado (la primera columna son permisos; d = directorio) |
cd / pwd | Cambia de directorio / muestra el directorio de trabajo actual |
mkdir / rmdir | Crea directorio / borra directorio vacío |
rm / rm -r | Borra archivos / borra recursivamente carpetas con contenido |
cat / less | Muestra todo el fichero / lo muestra paginado e interactivo con búsquedas |
touch | Crea un archivo vacío o actualiza la fecha/hora de modificación; admite opciones para fijar una hora distinta |
cp, mv | Copiar y mover |
chown / passwd | Cambia el propietario / cambia la contraseña de un usuario |
du / df | Espacio usado por un directorio y sus subdirectorios / espacio de las particiones (total, % usado, libre). -h muestra unidades legibles |
grep | Busca patrones: -c cuenta líneas coincidentes, -v invierte (líneas que NO contienen el patrón) |
tar | Empaqueta: tar tvf f.tar lista contenido, tar -xvf f -C /ruta/ extrae en una ruta |
gunzip -l | Lista el contenido de un .gz |
mount / umount | Monta / desmonta sistemas de ficheros en puntos de montaje |
Los comandos get, put, mget, mput pertenecen a FTP.
Permisos: chmod
chmod (change mode, ligado a POSIX) cambia los permisos. Las letras son r (read, lectura, valor 4), w (write, escritura, 2) y x (ejecución, 1); un guion - indica permiso desactivado. El 7 representa el conjunto completo rwx. En notación octal, tres dígitos indican propietario, grupo y otros:
-
754 → propietario
rwx(total), grupor-x(lectura+ejecución), otrosr--(lectura). -
750 → propietario
rwx, grupor-x, otros sin permisos. -
640 → propietario
rw-, grupor--, otros ninguno. -
614 → propietario
rw-, grupo--x, otrosr--. -
461 → propietario
r--, gruporw-, otros--x.
Opciones: -f silencia los mensajes de error, -v (verbose) lista los ficheros procesados, -R aplica el cambio recursivamente.
Editor vi
vi trabaja en modos. En modo comandos: dd borra la línea del cursor, dw borra la palabra, A inserta al final de la línea. El modo Ex o de última línea permite escribir órdenes en la línea inferior: :q sale, :q! sale sin guardar. El modo edición/inserción añade texto. Invocación: vi (sin fichero), vi fich1 fich2 (varios), vi +[n] fichero (empieza en una línea).
Principales distribuciones
-
Debian: código abierto, estricta política de software libre (con repositorios
contribynon-freepara software propietario), formato de paquete.deb, base de Ubuntu y Linux Mint, sin entorno gráfico predominante. Debian 12 (Bookworm) soporta oficialmente nueve arquitecturas. Herramientas comoapt/dpkg(FileZilla NO es una de ellas). -
Ubuntu: desarrollada por Canonical y la comunidad, basada en Debian, orientada a la facilidad de uso; ejecutable en equipos y máquinas virtuales. Derivadas: Kubuntu (KDE Plasma), Trisquel (100% libre).
-
Linux Mint: basada en Ubuntu, experiencia sencilla. Entornos Cinnamon, MATE y Xfce (Cinnamon es desarrollo propio de Mint); Update Manager comprueba y ofrece actualizaciones; Driver Manager / Gestor de controladores heredado de Ubuntu; TimeShift crea instantáneas incrementales del sistema de ficheros; amplia personalización.
-
Red Hat Enterprise Linux (RHEL): distribución comercial de Red Hat, orientada a estabilidad y seguridad empresarial. CentOS es una copia binariamente compatible que elimina las marcas y logos de Red Hat, con soporte de hasta diez años y gestor yum; CentOS Stream es la plataforma upstream de desarrollo de RHEL.
-
Otras: Gentoo (paquetes Portage, compila desde el código fuente, difícil de instalar), Arch (rolling release, control total), Fedora (desarrollo), Slackware (estabilidad), Whonix (privacidad), Manjaro (basada en Arch), Solus (gestor eopkg).
Distribuciones inmutables: Vanilla OS
Una distribución inmutable tiene su sistema de ficheros mayoritariamente de solo lectura. Vanilla OS (derivada de Ubuntu) usa ABRoot, que aplica los cambios mediante transacciones atómicas entre dos particiones raíz (A y B); incorpora el gestor de paquetes tradicional Apx, ofrece de serie los formatos universales Flatpak y AppImage, y requiere un mínimo de 50 GiB de almacenamiento.
Seguridad: SELinux
SELinux (Security-Enhanced Linux) es una arquitectura de seguridad para sistemas Linux desarrollada originalmente por la NSA de Estados Unidos. Define controles de acceso obligatorios sobre aplicaciones, procesos y ficheros mediante un contexto de seguridad (identidad y permisos de cada objeto/sujeto). Sus decisiones se guardan en la caché de vector de acceso (AVC); si SELinux no puede resolver el acceso con la caché, envía la solicitud al servidor de seguridad. Cuando se deniega un permiso, aparece el mensaje avc: denied en /var/log/messages.
Otras herramientas
Rufus crea unidades USB de arranque a partir de archivos ISO (p. ej. de Ubuntu). zpaq es una utilidad de compresión incremental libre (GPLv3) para Windows, Linux y OS/X. GNU/Linux destaca por su personalización y coste (código abierto, sin licencias caras), a cambio de una curva de aprendizaje que exige conocimientos técnicos más avanzados.
Fuentes
-
Debian, «Debian bookworm Release Information» (arquitecturas soportadas): https://www.debian.org/releases/bookworm/
-
Debian, «Debian 12 bookworm released»: https://www.debian.org/News/2023/20230610
-
Vanilla OS, «Apx, an unconventional package manager» y documentación ABRoot: https://vanillaos.org/
-
Red Hat, «Security-Enhanced Linux» (RHEL) y mensajes de denegación AVC: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/security-enhanced_linux/
-
Oracle Linux, «Troubleshooting Access-Denial Messages (SELinux AVC)»: https://docs.oracle.com/en/operating-systems/oracle-linux/selinux/
-
GNU Coreutils / man-pages POSIX (chmod, touch, ls, du, df, grep, tar): https://www.gnu.org/software/coreutils/manual/
-
The Linux Kernel documentation (procesos, fork, clone): https://www.kernel.org/doc/html/latest/