🐧 Guía Completa de Linux Server

Ubuntu 18.04.6 LTS - Comandos y Administración

📊 Información del Sistema

Comandos básicos de información

uname -a # Muestra información completa del sistema Linux ubuntu-server 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Ejemplo práctico

hostnamectl # Información detallada del sistema Static hostname: ubuntu-server Icon name: computer-vm Chassis: vm Machine ID: abc123def456... Boot ID: xyz789abc123... Virtualization: vmware Operating System: Ubuntu 18.04.6 LTS Kernel: Linux 4.15.0-213-generic Architecture: x86-64
Comando Descripción Ejemplo de uso
lsb_release -a Información de la distribución Ver versión de Ubuntu
uptime Tiempo de actividad del sistema Ver cuánto tiempo lleva encendido
whoami Usuario actual Verificar con qué usuario estás
date Fecha y hora actuales Ver la hora del sistema
df -h Espacio en disco (legible) Ver espacio disponible
free -h Memoria RAM disponible Verificar uso de memoria
lscpu Información del procesador Ver características del CPU

📄 Gestión de Archivos y Directorios

Crear archivos y directorios

touch archivo.txt # Crear archivo vacío mkdir directorio # Crear directorio mkdir -p ruta/completa/nueva # Crear estructura de directorios completa echo "Hola Mundo" > saludo.txt # Crear archivo con contenido

Copiar, mover y eliminar

Operaciones básicas con archivos

cp archivo.txt copia.txt # Copiar archivo cp -r directorio/ copia_directorio/ # Copiar directorio recursivamente mv archivo.txt nuevo_nombre.txt # Renombrar/mover archivo mv archivo.txt /ruta/destino/ # Mover archivo a otro directorio rm archivo.txt # Eliminar archivo rm -rf directorio/ # Eliminar directorio y contenido (¡CUIDADO!)

⚠️ Comandos Peligrosos

rm -rf elimina archivos y directorios sin confirmación. ¡Úsalo con extremo cuidado!

rm -rf / ¡NUNCA ejecutes esto! Eliminaría todo tu sistema.

Ver contenido de archivos

Comando Descripción Cuándo usarlo
cat archivo.txt Muestra todo el contenido Archivos pequeños
less archivo.txt Ver archivo página por página Archivos grandes
head -10 archivo.txt Primeras 10 líneas Ver inicio de archivo
tail -10 archivo.txt Últimas 10 líneas Ver final de archivo
tail -f archivo.log Seguir archivo en tiempo real Monitorear logs
grep "texto" archivo.txt Buscar texto en archivo Encontrar contenido específico

🔐 Sistema de Permisos

🔍 Entendiendo los permisos

Linux usa un sistema de permisos basado en: Usuario (u), Grupo (g) y Otros (o)

ls -la # Ver permisos detallados -rw-r--r-- 1 ubuntu ubuntu 1234 Sep 24 10:30 archivo.txt drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 24 10:30 directorio # Explicación: # - : archivo normal (d = directorio, l = enlace) # rw- : permisos del propietario (lectura, escritura, no ejecución) # r-- : permisos del grupo (solo lectura) # r-- : permisos de otros (solo lectura)

Cambiar permisos

Métodos para cambiar permisos

# Método simbólico chmod u+x archivo.txt # Dar ejecución al usuario chmod g+w archivo.txt # Dar escritura al grupo chmod o-r archivo.txt # Quitar lectura a otros chmod a+r archivo.txt # Dar lectura a todos # Método octal (más común) chmod 755 script.sh # rwxr-xr-x chmod 644 archivo.txt # rw-r--r-- chmod 600 privado.txt # rw------- chmod 777 publico.txt # rwxrwxrwx (no recomendado)
Valor Octal Binario Permisos Uso típico
7 111 rwx Directorios, ejecutables
6 110 rw- Archivos de datos
5 101 r-x Directorios de solo lectura
4 100 r-- Archivos de solo lectura
0 000 --- Sin permisos

Cambiar propietario

chown usuario:grupo archivo.txt # Cambiar propietario y grupo chown ubuntu archivo.txt # Solo cambiar propietario chgrp www-data archivo.txt # Solo cambiar grupo chown -R ubuntu:ubuntu directorio/ # Cambiar recursivamente todo el directorio

⚙️ Gestión de Procesos

Ver procesos activos

ps aux # Ver todos los procesos del sistema USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 225316 9088 ? Ss 09:15 0:01 /sbin/init ubuntu 1234 0.5 0.2 12345 2345 pts/0 S 10:30 0:00 bash ps -ef # Formato extendido de procesos pgrep -l apache # Buscar procesos por nombre

Monitoreo en tiempo real

Herramientas de monitoreo

top # Monitor interactivo de procesos (presiona 'q' para salir) htop # Versión mejorada de top (si está instalado) watch -n 1 "ps aux | head -20" # Ejecutar comando cada segundo

Controlar procesos

Comando Señal Descripción
kill PID TERM (15) Terminar proceso normalmente
kill -9 PID KILL (9) Forzar terminación
kill -HUP PID HUP (1) Reiniciar/recargar configuración
killall nombre_proceso TERM Terminar todos los procesos con ese nombre
pkill -f patron TERM Terminar procesos que coincidan con patrón

⚠️ Uso responsable de kill

Siempre intenta usar kill PID (TERM) antes que kill -9 PID (KILL)

KILL no permite al proceso limpiar recursos, puede causar corrupción de datos

Procesos en segundo plano

comando & # Ejecutar en segundo plano nohup comando & # Ejecutar sin conexión a terminal jobs # Ver trabajos en segundo plano fg %1 # Traer trabajo 1 al primer plano bg %1 # Enviar trabajo 1 al segundo plano Ctrl+Z # Suspender proceso actual Ctrl+C # Interrumpir proceso actual

🌐 Configuración y Monitoreo de Red

Información de red

ip addr show # Ver interfaces de red y direcciones IP 1: lo: mtu 65536 inet 127.0.0.1/8 scope host lo 2: ens33: mtu 1500 inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33 ip route show # Ver tabla de rutas default via 192.168.1.1 dev ens33 192.168.1.0/24 dev ens33 proto kernel scope link hostname -I # IP del sistema de forma simple 192.168.1.100

Comandos de conectividad

ping google.com # Probar conectividad a internet ping -c 4 192.168.1.1 # Hacer 4 pings al router traceroute google.com # Ver ruta hacia destino curl -I http://google.com # Probar conectividad HTTP

Puertos y conexiones

Comando Descripción Ejemplo de uso
netstat -tuln Puertos en escucha Ver servicios activos
ss -tuln Versión moderna de netstat Información de sockets
lsof -i :80 Ver qué proceso usa puerto 80 Diagnosticar conflictos
nmap localhost Escanear puertos locales Auditoría de seguridad
wget archivo.zip Descargar archivos Obtener recursos web
scp archivo.txt user@servidor:/ruta/ Copiar archivos remotamente Transferir archivos seguros

🔧 Configuración de red en Ubuntu 18.04

Ubuntu 18.04 usa Netplan para configuración de red

Archivos de configuración en: /etc/netplan/

sudo netplan apply # Aplicar cambios de configuración de red sudo systemctl restart networking # Reiniciar servicio de red (método tradicional)

🔧 Gestión de Servicios (systemd)

📋 Sobre systemd

Ubuntu 18.04 usa systemd como sistema de init y gestor de servicios

Los servicios se llaman "units" y tienen extensión .service

Comandos básicos de servicios

sudo systemctl status apache2 # Ver estado de un servicio ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-09-24 10:30:45 UTC; 2h 15min ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 1234 (apache2) Tasks: 55 (limit: 4915) CGroup: /system.slice/apache2.service sudo systemctl start apache2 # Iniciar servicio sudo systemctl stop apache2 # Detener servicio sudo systemctl restart apache2 # Reiniciar servicio sudo systemctl reload apache2 # Recargar configuración sin reiniciar

Habilitación automática

Configurar inicio automático

sudo systemctl enable apache2 # Habilitar inicio automático al arranque sudo systemctl disable apache2 # Deshabilitar inicio automático sudo systemctl is-enabled apache2 # Verificar si está habilitado enabled sudo systemctl is-active apache2 # Verificar si está activo active
Comando Descripción Ejemplo
systemctl list-units --type=service Listar todos los servicios Ver estado de servicios
systemctl list-units --failed Ver servicios fallidos Diagnosticar problemas
journalctl -u apache2 Ver logs del servicio Solucionar problemas
journalctl -f Ver logs en tiempo real Monitorear sistema
systemctl daemon-reload Recargar configuración systemd Después de cambios

Servicios comunes en Ubuntu Server

# Servicios web sudo systemctl status apache2 # Servidor web Apache sudo systemctl status nginx # Servidor web Nginx # Bases de datos sudo systemctl status mysql # MySQL/MariaDB sudo systemctl status postgresql # PostgreSQL # SSH sudo systemctl status ssh # Servicio SSH # Firewall sudo systemctl status ufw # Uncomplicated Firewall

👥 Gestión de Usuarios y Grupos

Información de usuarios

id # Información del usuario actual uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),24(cdrom),27(sudo) who # Usuarios conectados ubuntu pts/0 2023-09-24 10:30 (192.168.1.50) last # Historial de conexiones ubuntu pts/0 192.168.1.50 Wed Sep 24 10:30 still logged in cat /etc/passwd | grep ubuntu # Ver información del usuario ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash

Crear y gestionar usuarios

Administración de usuarios

sudo adduser nuevo_usuario # Crear nuevo usuario (interactivo) sudo useradd -m -s /bin/bash nuevo_usuario # Crear usuario con directorio home sudo passwd nuevo_usuario # Cambiar contraseña de usuario sudo deluser --remove-home usuario # Eliminar usuario y su directorio home sudo usermod -aG sudo nuevo_usuario # Agregar usuario al grupo sudo (permisos admin)

Gestión de grupos

Comando Descripción Ejemplo
groups usuario Ver grupos del usuario Verificar permisos
sudo groupadd grupo_nuevo Crear nuevo grupo Organizar usuarios
sudo groupdel grupo Eliminar grupo Limpiar sistema
sudo gpasswd -a usuario grupo Agregar usuario a grupo Dar permisos específicos
sudo gpasswd -d usuario grupo Quitar usuario de grupo Remover permisos

Cambio de usuario y sudo

su - otro_usuario # Cambiar a otro usuario sudo comando # Ejecutar comando como root sudo -i # Abrir shell interactivo como root sudo -u usuario comando # Ejecutar comando como otro usuario sudo visudo # Editar archivo sudoers (configuración sudo)

⚠️ Seguridad con sudo

Solo da permisos sudo a usuarios de confianza

Usa visudo para editar /etc/sudoers, nunca lo edites directamente

Revisa regularmente quién tiene permisos de administrador

🖥️ Administración del Sistema

Gestión de paquetes (APT)

sudo apt update # Actualizar lista de paquetes disponibles sudo apt upgrade # Actualizar paquetes instalados sudo apt install paquete # Instalar nuevo paquete sudo apt remove paquete # Desinstalar paquete sudo apt autoremove # Limpiar dependencias no usadas apt search nombre # Buscar paquetes apt show paquete # Ver información de paquete

Mantenimiento del sistema

sudo apt full-upgrade # Actualización completa del sistema sudo apt dist-upgrade # Actualizar a nueva versión de distribución sudo apt autoclean # Limpiar cache de paquetes dpkg -l | grep paquete # Ver si un paquete está instalado sudo dpkg --configure -a # Reparar paquetes rotos

Monitoreo del sistema

Comando Información Uso
df -h Espacio en disco Ver almacenamiento disponible
du -sh directorio Tamaño de directorio Encontrar qué ocupa espacio
free -h Memoria RAM Ver uso de memoria
iostat Estadísticas E/S Rendimiento de discos
vmstat 1 Estadísticas sistema Monitor general cada segundo
dmesg | tail Mensajes del kernel Diagnosticar hardware

Archivos de configuración importantes

📁 Ubicaciones clave en Ubuntu Server

# Configuración de red /etc/netplan/ # Configuración Netplan /etc/hosts # Resolución de nombres local /etc/resolv.conf # Servidores DNS # Usuarios y grupos /etc/passwd # Información de usuarios /etc/group # Información de grupos /etc/shadow # Contraseñas cifradas /etc/sudoers # Configuración sudo # Servicios y arranque /etc/systemd/system/ # Servicios personalizados /etc/init.d/ # Scripts de inicio (legacy) /etc/crontab # Tareas programadas # Logs del sistema /var/log/syslog # Log general del sistema /var/log/auth.log # Log de autenticación /var/log/kern.log # Log del kernel /var/log/apache2/ # Logs de Apache (si instalado)

Tareas programadas (Cron)

Configurar tareas automáticas

crontab -e # Editar crontab del usuario actual sudo crontab -e # Editar crontab de root crontab -l # Ver tareas programadas # Formato: minuto hora día mes día_semana comando # Ejemplos: 0 2 * * * /usr/bin/backup.sh # Diario a las 2:00 AM */15 * * * * /usr/bin/check_status.sh # Cada 15 minutos 0 0 * * 0 /usr/bin/weekly_update.sh # Domingos a medianoche

Control del sistema

⚠️ Comandos de control del sistema

Estos comandos afectan todo el sistema. Úsalos con precaución.

sudo reboot # Reiniciar el sistema sudo shutdown -h now # Apagar inmediatamente sudo shutdown -h +10 # Apagar en 10 minutos sudo shutdown -r +5 "Reinicio de mantenimiento" # Reiniciar en 5 min con mensaje sudo systemctl rescue # Modo de rescate (single user) sudo systemctl emergency # Modo de emergencia

🎯 Consejos para administración

  • Siempre haz respaldos antes de cambios importantes
  • Documenta los cambios que realizas
  • Usa screen o tmux para sesiones persistentes
  • Monitorea regularmente logs y recursos del sistema
  • Mantén el sistema actualizado con apt update && apt upgrade