1. Sistema Operativo de Código Abierto
Linux es un sistema operativo de código abierto. Esto significa que:
- Código Accesible: El código fuente de Linux está disponible públicamente. Cualquiera puede verlo, estudiarlo y modificarlo.
- Colaboración Comunitaria: La comunidad global contribuye al desarrollo del sistema, creando mejoras y correcciones de errores.
- Distribuciones Personalizadas: Las distribuciones permiten adaptar el sistema a necesidades específicas, desde entornos de servidor hasta sistemas embebidos.
2. Núcleo (Kernel)
El núcleo de Linux (o kernel) es el corazón del sistema operativo. Sus funciones principales incluyen:
- Gestión de Recursos: Administra el uso del procesador, la memoria y los dispositivos periféricos.
- Interfaz con el Hardware: Facilita la comunicación entre el hardware y el software mediante controladores y módulos.
- Seguridad y Estabilidad: Implementa mecanismos para proteger el sistema contra fallos y vulnerabilidades, y asegura la ejecución segura de procesos.
Componentes del Núcleo:
- Módulos: Permiten cargar funcionalidades adicionales al núcleo sin necesidad de reiniciar el sistema.
- Scheduler: Controla la asignación del tiempo de CPU a los procesos.
- Memory Management: Administra la memoria física y virtual, y maneja la memoria caché.
3. Distribuciones (Distros)
Las distribuciones de Linux son versiones del sistema operativo que incluyen el núcleo y una variedad de software. Cada distribución tiene sus características:
- Ubuntu: Famosa por su facilidad de uso y soporte extenso. Ideal para nuevos usuarios.
- Debian: Conocida por su estabilidad y extensiva base de software. Es la base de Ubuntu.
- Fedora: Destaca por su enfoque en nuevas tecnologías y herramientas.
- CentOS/RHEL: Orientada a servidores, basada en Red Hat Enterprise Linux.
- Arch Linux: Ofrece una experiencia de usuario personalizada y controlada, conocida por su filosofía “KISS” (Keep It Simple, Stupid).
Características de las Distros:
- Entorno de Escritorio: Varias distros ofrecen diferentes entornos de escritorio como GNOME, KDE Plasma, o XFCE.
- Gestión de Paquetes: Cada distribución utiliza su propio sistema de gestión de paquetes (APT, YUM, Pacman, etc.).
- Soporte y Actualizaciones: Varía entre distros, desde actualizaciones continuas en rolling releases (Arch) hasta versiones estables con soporte prolongado (Ubuntu LTS).
4. Sistema de Archivos
El sistema de archivos en Linux organiza cómo se almacenan y recuperan los datos. Incluye:
- Estructura de Directorios: La jerarquía empieza desde el directorio raíz
/
, con directorios estándar como:/bin
: Binarios esenciales del sistema./boot
: Archivos necesarios para el arranque del sistema./dev
: Archivos de dispositivo./mnt
y/media
: Puntos de montaje para sistemas de archivos adicionales./opt
: Software adicional opcional.
- Permisos y Propietarios: Cada archivo y directorio tiene permisos para el propietario, el grupo y otros usuarios.
- Sistema de Archivos Virtuales:
/proc
y/sys
proporcionan información sobre el estado del sistema y el hardware.
Sistemas de Archivos Populares:
- EXT4: El sistema de archivos más común en Linux.
- XFS: Conocido por su escalabilidad.
- BTRFS: Ofrece características avanzadas como instantáneas y reparación en línea.
5. Comandos de Línea de Comandos
Comandos Básicos
- ls: Lista los archivos y directorios en el directorio actual.
- cd: Cambia el directorio de trabajo.
- pwd: Muestra el directorio de trabajo actual.
- cp: Copia archivos o directorios.
- mv: Mueve o renombra archivos y directorios.
- rm: Elimina archivos o directorios.
- cat: Muestra el contenido de un archivo.
- echo: Muestra un mensaje o el valor de una variable en la terminal.
Comandos de Gestión de Archivos
- find: Busca archivos y directorios basados en criterios específicos.
- grep: Busca texto dentro de archivos.
- tar: Crea y extrae archivos tarball (archivos comprimidos).
- zip y unzip: Comprime y descomprime archivos en formato ZIP.
- chmod: Cambia los permisos de archivos y directorios.
- chown: Cambia la propiedad de archivos y directorios.
Comandos de Administración del Sistema
- df: Muestra el uso del espacio en disco de los sistemas de archivos montados.
- du: Muestra el uso del espacio en disco por archivos y directorios.
- top: Muestra los procesos en ejecución y el uso de recursos en tiempo real.
- htop: Similar a top, pero con una interfaz más amigable para interactuar.
- ps: Muestra información sobre los procesos en ejecución.
- kill: Termina procesos mediante su ID.
- free: Muestra la memoria disponible y utilizada en el sistema.
Comandos de Red y Seguridad
- ssh: Conecta de forma segura a otro sistema a través de la red.
- scp: Copia archivos entre sistemas de forma segura utilizando SSH.
- wget: Descarga archivos desde la web.
- curl: Realiza transferencias de datos desde o hacia un servidor, utilizando diversos protocolos.
Comandos de Información del Sistema
- uname: Muestra información sobre el sistema operativo y el kernel.
- uptime: Muestra cuánto tiempo ha estado en funcionamiento el sistema.
- dmesg: Muestra mensajes del kernel, útil para la depuración.
6. Permisos y Propietarios
El sistema de permisos en Linux controla el acceso a archivos y directorios:
- Permisos Básicos: Lectura (
r
), escritura (w
) y ejecución (x
). - Permisos para Usuarios:
- Propietario: El usuario que creó el archivo.
- Grupo: Un grupo de usuarios con permisos comunes.
- Otros: Usuarios que no son ni el propietario ni parte del grupo.
- Configuración de Permisos: Utiliza
chmod
para ajustar permisos,chown
para cambiar propietarios ychgrp
para modificar el grupo asociado.
Ejemplo de Permisos:
chmod 755 archivo.txt
: Da permisos de lectura, escritura y ejecución al propietario, y solo lectura y ejecución a otros.chown usuario:grupo archivo.txt
: Cambia el propietario y el grupo del archivo.
7. Gestión de Paquetes
La gestión de paquetes permite instalar y actualizar software:
- APT (Advanced Package Tool): Utilizado en Debian y Ubuntu.
apt-get install nombre_paquete
: Instala un paquete.apt-get update
: Actualiza la lista de paquetes.
- YUM (Yellowdog Updater, Modified): Utilizado en CentOS y Fedora.
yum install nombre_paquete
: Instala un paquete.yum update
: Actualiza todos los paquetes instalados.
- Pacman: Utilizado en Arch Linux.
pacman -S nombre_paquete
: Instala un paquete.pacman -Syu
: Actualiza todos los paquetes del sistema.
Gestión Avanzada:
- Dpkg: Herramienta de bajo nivel para manejar paquetes en Debian y Ubuntu.
- RPM: Sistema de paquetes utilizado en Red Hat y sus derivados.
8. Procesos y Servicios
Los procesos son instancias de programas en ejecución, y los servicios son procesos en segundo plano:
- Comandos de Procesos:
ps aux
: Muestra todos los procesos en ejecución.top
: Muestra una vista en tiempo real del uso del sistema.kill
ykillall
: Envía señales a procesos para terminarlos.
- Gestión de Servicios:
systemctl
(para sistemas con systemd): Controla el estado de servicios.systemctl start servicio
: Inicia un servicio.systemctl stop servicio
: Detiene un servicio.systemctl status servicio
: Muestra el estado de un servicio.
9. Usuarios y Grupos
Linux es un sistema multiusuario, lo que permite gestionar múltiples cuentas de usuario y grupos:
- Comandos de Usuario:
useradd
yusermod
: Crean y modifican cuentas de usuario.passwd
: Cambia contraseñas de usuario.who
yw
: Muestran información sobre usuarios conectados.
- Comandos de Grupo:
groupadd
ygroupdel
: Añaden y eliminan grupos.gpasswd
: Modifica grupos y sus miembros.
Gestión de Grupos y Permisos:
- Los grupos permiten asignar permisos a múltiples usuarios de manera eficiente.
10. Scripts y Automatización
La automatización en Linux se logra a través de scripts:
- Scripts de Shell: Escriben secuencias de comandos para automatizar tareas. Los scripts bash son comunes.
- Programación de Tareas:
- cron: Programa la ejecución de scripts a intervalos regulares.
crontab -e
: Edita la tabla de cron para el usuario actual.
- systemd timers: Alternativa moderna a cron para la programación de tareas.
- cron: Programa la ejecución de scripts a intervalos regulares.
11. Seguridad
La seguridad en Linux es fundamental para proteger el sistema:
- Control de Acceso: Utiliza permisos y ACL para limitar el acceso a archivos y directorios.
- Firewall:
- iptables: Configura reglas para el tráfico de red.
- firewalld: Interfaz moderna para gestionar
iptables
en sistemas consystemd
.
- SELinux y AppArmor: Proporcionan políticas de seguridad adicionales para limitar el acceso a recursos del sistema.
Seguridad Avanzada:
- Sudo: Permite a los usuarios ejecutar comandos con privilegios elevados.
- Autenticación Multifactor: Añade una capa adicional de seguridad a las cuentas de usuario.
12. Redes
Linux ofrece herramientas avanzadas para la gestión de redes:
- Configuración de Redes:
ifconfig
yip
: Configuran interfaces de red.nmcli
(NetworkManager CLI): Gestiona conexiones de red en sistemas con NetworkManager.
- Monitoreo de Redes:
ping
: Verifica la conectividad a otros sistemas.traceroute
otracepath
: Muestra la ruta que toman los paquetes para llegar a un destino.netstat
yss
: Muestran estadísticas de red y conexiones activas.