Objetivos de Aprendizaje
Al finalizar este módulo podrás: Navegar con comodidad por Linux, el sistema operativo que domina el mundo de los servidores y ejecutar comandos básicos de administración.
Dominar: Terminal/línea de comandos, gestión de archivos y directorios, permisos de usuarios, conexiones SSH y automatización básica.
Aplicar: Administración básica de servidores, configuración de servicios, creación de scripts y gestión de usuarios y permisos.
5.1 ¿Qué es un Sistema Operativo?
El Director de Orquesta de la Computadora
Un sistema operativo es como el director de orquesta de una computadora. Coordina todos los recursos (CPU, memoria, disco, red) y permite que los programas funcionen de manera organizada. Sin él, la computadora sería solo una caja con componentes electrónicos sin vida.
Analogía práctica:
Imagina que tu computadora es un edificio de oficinas. El sistema operativo es el administrador del edificio: asigna espacios (memoria), controla el acceso (permisos), mantiene los servicios (procesos) y se asegura de que todo funcione sin problemas.
Componentes Principales
Kernel: El núcleo del sistema, comunica directamente con el hardware.
Procesos: Programas en ejecución que el SO administra.
Memoria: Espacio de trabajo que se asigna dinámicamente.
Sistema de archivos: Organización y acceso a datos en el disco.
¿Por qué Linux Domina en Servidores?
• Estabilidad: Puede funcionar meses o años sin reiniciar
• Seguridad: Sistema de permisos robusto y menos vulnerable
• Eficiencia: Consume menos recursos que otros sistemas
• Gratuito: Sin costos de licencia para empresas
• Personalizable: Se puede modificar según necesidades específicas
5.2 La Terminal: Tu Nueva Mejor Amiga
¿Por qué Texto en vez de Clics?
La terminal puede parecer intimidante al principio, pero es 10 veces más eficiente que la interfaz gráfica para administrar servidores. Permite automatizar tareas, trabajar remotamente y ejecutar operaciones complejas con precisión.
Comandos Básicos de Navegación
# Mostrar directorio actual
pwd
# Listar archivos y carpetas
ls
ls -la # Mostrar detalles y archivos ocultos
# Cambiar de directorio
cd /home/usuario
cd .. # Subir un nivel
cd ~ # Ir al directorio home
# Mostrar contenido de un archivo
cat archivo.txt
less archivo.txt # Para archivos grandes
Gestión de Archivos y Directorios
# Crear archivos y directorios
touch archivo.txt
mkdir nueva_carpeta
mkdir -p ruta/completa/anidada
# Copiar y mover
cp archivo.txt copia.txt
mv archivo.txt nuevo_nombre.txt
mv archivo.txt /otra/carpeta/
# Eliminar (¡Cuidado!)
rm archivo.txt
rm -r carpeta/ # Eliminar carpeta y contenido
rm -rf /ruta/peligrosa/ # Fuerza eliminación
Consejo de seguridad:
Siempre usa
ls para verificar que estás en el directorio correcto antes de ejecutar comandos destructivos como
rm. Una vez eliminado, no hay papelera de reciclaje en Linux.
5.3 Permisos y Usuarios
Dueños, Grupos y Otros
Linux maneja tres niveles de permisos:
• Usuario (u): El propietario del archivo
• Grupo (g): Usuarios que pertenecen al mismo grupo
• Otros (o): Todos los demás usuarios del sistema
Leer, Escribir, Ejecutar
# Ver permisos de archivos
ls -l
# Resultado ejemplo:
-rw-r--r-- 1 usuario grupo 1024 Oct 15 10:30 archivo.txt
drwxr-xr-x 2 usuario grupo 4096 Oct 15 10:31 carpeta/
# Explicación:
# - = archivo regular, d = directorio
# rw- = usuario puede leer y escribir
# r-- = grupo solo puede leer
# r-- = otros solo pueden leer
Cambiar Permisos
# Método simbólico
chmod u+x archivo.sh # Dar permiso de ejecución al usuario
chmod go-w archivo.txt # Quitar escritura a grupo y otros
chmod a+r archivo.txt # Dar lectura a todos
# Método numérico (más rápido)
chmod 755 script.sh # rwxr-xr-x
chmod 644 documento.txt # rw-r--r--
chmod 600 archivo_privado # rw-------
Números de permisos:
4 = lectura (r), 2 = escritura (w), 1 = ejecución (x)
Se suman: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--, 0 = ---
Sudo: El Poder Temporal
sudo permite ejecutar comandos como administrador sin necesidad de cambiar de usuario. Es más seguro que usar la cuenta root directamente.
# Instalar software
sudo apt update
sudo apt install nginx
# Editar archivos de sistema
sudo nano /etc/hosts
# Cambiar a usuario root temporalmente
sudo su -
5.4 Archivos de Configuración
Todo es un Archivo en Linux
En Linux, todo es un archivo: dispositivos, procesos, configuraciones. Esta filosofía hace que el sistema sea consistente y poderoso. Los archivos de configuración suelen estar en /etc/ y controlan el comportamiento de servicios y aplicaciones.
Variables de Entorno
# Ver todas las variables
env
# Ver variable específica
echo $PATH
echo $HOME
# Definir variable temporal
export MI_VARIABLE="valor"
# Definir variable permanente (en ~/.bashrc)
echo 'export MI_VARIABLE="valor"' >> ~/.bashrc
Archivos de Configuración Importantes
~/.bashrc: Configuración personal del shell
/etc/hosts: Resolución local de nombres
/etc/passwd: Información de usuarios
/etc/crontab: Tareas programadas del sistema
.env: Variables de entorno para aplicaciones
5.5 Conectarse Remotamente
SSH: La Conexión Segura
SSH (Secure Shell) permite conectarse a servidores remotos de forma segura. Es la herramienta estándar para administrar servidores en la nube.
# Conexión básica
ssh usuario@servidor.com
ssh usuario@192.168.1.100
# Conexión con puerto específico
ssh -p 2222 usuario@servidor.com
# Copiar archivos remotamente
scp archivo.txt usuario@servidor.com:/ruta/destino/
scp -r carpeta/ usuario@servidor.com:/ruta/destino/
Llaves vs Contraseñas
Las llaves SSH son más seguras que las contraseñas porque:
• No se pueden adivinar por fuerza bruta
• No viajan por la red en texto plano
• Permiten automatización sin intervención humana
# Generar par de llaves
ssh-keygen -t rsa -b 4096 -C "tu@email.com"
# Copiar llave pública al servidor
ssh-copy-id usuario@servidor.com
# Conectar sin contraseña
ssh usuario@servidor.com
5.6 Automatización Básica
Scripts: Automatizar Tareas Repetitivas
Los scripts de shell permiten automatizar tareas repetitivas y complejas.
#!/bin/bash
# Mi primer script
echo "Iniciando backup..."
fecha=$(date +%Y%m%d)
tar -czf backup_$fecha.tar.gz /home/usuario/documentos/
echo "Backup completado: backup_$fecha.tar.gz"
Cron: El Programador de Tareas
Cron ejecuta comandos automáticamente en horarios específicos.
# Editar tareas programadas
crontab -e
# Ejemplos de programación:
# Cada día a las 2:00 AM
0 2 * * * /ruta/a/mi_script.sh
# Cada lunes a las 9:00 AM
0 9 * * 1 /ruta/a/reporte_semanal.sh
# Cada 5 minutos
*/5 * * * * /ruta/a/monitoreo.sh
Logs: Las Bitácoras del Sistema
Los logs registran todo lo que sucede en el sistema. Son esenciales para diagnóstico y auditoría.
# Ver logs del sistema
tail -f /var/log/syslog
# Logs de autenticación
tail -f /var/log/auth.log
# Logs de un servicio específico
journalctl -u nginx -f
# Buscar errores en los últimos 10 minutos
journalctl --since "10 minutes ago" -p err