Fundamentos de Linux
Origen y Características Principales
El núcleo de Linux fue creado inicialmente por Linus Torvalds durante sus estudios universitarios en Helsinki como proyecto personal. Este sistema operativo representa una evolución de Unix que mantiene la filosofía de código abierto y distribución gratuita.
Se trata de un sistema multiusuario y multitarea compatible con POSIX, diseñado para funcionar con múltiples CPUs y threads simultáneamente. Su arquitectura permite ejecutar herramientas tradicionales de Unix junto con protocolos de red modernos, soportando tanto arquitecturas de 32 como 64 bits.
Versiones Distribuidas
Las distribuciones empaquetan el núcleo con aplicaciones complementarias para facilitar su despliegue. Entre las variantes más reconocidas se encuentran Ubuntu, RedHat Enterprise, CentOS Stream, Debian, Fedora, SUSE, Arch Linux y OpenSUSE. Cada una ofrece diferentes filosofías de mantenimiento y ciclos de actualización.
Escenarios de Implementación
Desde dispositivos embebidos hasta sistemas supercomputadores, Linux domina actualmente el sector servidor. Las configuraciones típicas incluyen LAMP (Apache + MySQL sobre Linux) o alternativas modernas con Nginx para servicios web.
Configuración Inicial del Entorno
Dos opciones principales existen para trabajar con Linux:
Entornos Virtuales: Mediante software de virtualización como VirtualBox o VMware
Servidores Remotos: Conexión vía SSH usando clientes como PuTTY o terminales nativos
Para pruebas locales sin hardware adicional, los entornos virtualizados ofrecen flexibilidad inmediata.
Primeros Pasos en la Interfaz
Proceso de Autenticación
Al iniciar el sistema, diversos servicios se cargan automáticamente (denominados daemons en este contexto). Se presenta una interfaz de texto solicitando credenciales. El nombre de usuario se valida contra la base de datos local, mientras la contraseña permanece oculta durante la introducción.
Los métodos de acceso disponibles son:
- Terminal directa (en consola física o máquina virtual)
- Protocolo SSH (conexión remota cifrada)
- Interfaz gráfica completa (cuando está instalada)
La cuenta con privilegios máximos se denomina "root" y posee control total sobre todas las funciones del sistema.
Operaciones de Apagado y Reinicio
# Guardar todo en disco antes de cualquier operación crítica
sync
# Programar apagado en 15 minutos
shutdown -h +15
# Apagado inmediato
shutdown -h now
# Reinicio programado a hora específica
shutdown -r 14:30
# Reinicio forzoso actual
reboot
# Detener sistema (equivalente a shutdown -h now)
poweroff
Nota importante: Siempre sincronizar memoria al almacenamiento persistente antes de operaciones críticas.
Estructura del Sistema de Archivos
Todos los recursos se organizan bajo el directorio raíz /. Ejecutar ls / muestra esta jerarquía.
Directorios Clave
- /bin - Comandos binarios esenciales accesibles para todos los usuarios
- /boot - Archivos necesarios para arrancar el sistema (no modificar manualmente)
- /dev - Representación de dispositivos físicos y virtuales
- /etc - Configuraciones del sistema y servicios
- /home - Carpetas personales de usuarios estándar
- /lib - Bibliotecas compartidas requeridas por programas básicos
- /media - Puntos de montaje automáticos para dispositivos extraíbles
- /mnt - Montajes temporales manuales de filesystems externos
- /opt - Instalaciones de software opcional de terceros
- /proc - Información del kernel en tiempo real (filesystem virtual)
- /root - Carpeta personal del administrador root
- /sbin - Herramientas de administración reservadas para root
- /tmp - Archivos temporales eliminables libremente
- /usr - Programas y datos de usuario (similar a Program Files)
- /var - Datos variables como logs, correos y cachés
- /run - Información volátil desde el arranuqe actual
Comandos de Gestión de Directorios
Rutas Absolutas y Relativas
Una ruta absoluta comienza desde /:
/home/usuarios/documentos/proyecto
Una ruta relativa depende de la ubicación actual:
cd ../configuracion
cd ./archivos_nuevos
Insturmentos Básicos de Navegación
# Listar contenidos
ls -la # Todos los archivos incluyendo ocultos
ls -lh # Formato legible para tamaños
# Cambiar directorio
cd /ruta/completa # Navegar absolutamante
cd .. # Subir nivel
cd # Volver al home del usuario actual
# Ver ubicación actual
pwd # Mostrar ruta presente
# Crear estructura
mkdir carpeta_nueva
mkdir -p nivell/nivel2/nivel3 # Crear árbol completo
# Eliminar vacíos
rmdir carpeta_vacia
rmdir -p padre/hija # Borrar cadena si están vacías
Manipulación de Archivos y Directorios
# Copiar elementos
cp archivo.txt copia_segunda.txt
cp -r directorio_origen/ directorio_destino/
cp -i archivo.dat # Pedir confirmación antes de sobrescribir
# Mover o renombrar
mv documentacion.doc nueva_ubicacion/
mv viejo_nombre.pdf nuevo_nombre.pdf
# Eliminar permanentemente
rm documento_temporal.txt
rm -r directorio_completo/ # Borra recursivamente
rm -f archivo_obsoleto # Suprime advertencias
# Enlaces
ln original link_duro # Referencia directa al mismo i-nodo
ln -s objetivo vinculo_simbolico # Acceso tipo atajo simbólico
Asistente integrado: Presionar Tab para autocompletar nombres largos. Consultar man comando para documentación detallada.
Administración de Permisos
Interpretación de Atributos
Usar ll o ls -l revela información de propiedad y derechos:
drwxr-xr-x 2 usuario grupo 4096 ene 15 10:30 directorio/
-rw-r--r-- 1 admin staff 1024 feb 3 09:15 archivo.txt
lrwxrwxrwx 1 root root 12 mar 10 14:00 shortcut -> target
El primer carácter indica tipo:
d= directorio-= archivo regularl= enlace simbólicob= dispositivo bloqueablec= dispositivo característico
Los siguientes 9 caracteres representan permisos en grupos de tres (propietario/grupo/otros):
rwx rwx rwx
└─┘ └─┘ └─┘
│ │ └── otros
│ └────── grupo propietario
└────────── propietario
Donde:
r(4) = lecturaw(2) = escriturax(1) = ejecución-= sin permiso
Modificación de Propiedades
Cambiar grupo propietario:
chgrp developers proyecto_code
chgrp -R equipo webapp/ # Aplicar recursivo
Modificar dueño:
chown newuser archivo.log
chown usuario:grupo carpeta/
chown -R admin:servidor config/
Ajustar permisos numéricamente:
chmod 755 script.sh # rwxr-xr-x
chmod 644 public_html/index.html # rw-r--r--
chmod u+x ejecutable.bin # Solo añadir x al dueño
chmod go-w documento_privado.txt # Quitar w a grupo y otros
Valores decimales posibles: 0(denegado), 4(lectura), 2(escribir), 1(ejecutar), sumando combinaciones (7=rwx=total).
Visualización de Contenido de Archivos
cat ruta/archivo.txt # Mostrar completo
tac inversion_archivo.log # De última línea a primera
nl con_numeros.conf # Incluir números de línea
head -n 25 inicio_config.yml # Primeras 25 líneas
tail -n 20 registros_actuales.log # Últimas 20 líneas
more paginacion_lenta.txt # Desplazamiento básico
less navegacion_avanzada.md # Scroll bidireccional
grep buscar_patron *.* # Buscar patrón específico
En modo interactivo (more, less):
- Espacio = siguiente página
- Enter = siguiente línea
- q = salir
- /texto = buscar hacia adelante
- ?texto = buscar hacia atrás
- n/N = siguiente/previa coincidencia
Editor de Texto Vim
Vim es esencial para edición avanzada en terminal. Opera en tres modos distintos:
Modo Comando (estado inicial):
- Teclas interpretadas como acciones
i→ entrar modo inserción:→ accedir modo línea inferiorx→ borrar bajo cursorEsc→ regresar aquí siempre
Modo Inserción:
- Carácter normales escriben texto
- Flechas moven cursor
- Backspace/Delete eliminan contenido
- Enter rompe línea
- ESC finaliza este modo
Modo Línea Inferior (después de :):
:w # Guardar cambios
:q # Salir sin guardar
:wq # Guardar y cerrar
:q! # Forzar salida descartando
:set number # Activar numeración
:set paste # Modo pegado literal
Archivos de configuración permanentes van en ~/.vimrc para personalización constante.
Control de Usuarios y Grupos
Añadir Nuevos Usuarios
useradd -m -s /bin/bash nuevo_empleado
useradd -d /datos/juan -G administradores,developers juan
echo 'contraseña' | passwd --stdin test_user # Método no interactivo
passwd crear_pass # Asignar contraseña interactiva
Opciones relevantes:
-mcrea home automaticamente-sdefine shell por defecto-despecifica ruta personalizada-Gasigna grupos secundarios-cañade comentario descriptivo
Modificar Existente
usermod -s /bin/zsh antiguo_usuario
usermod -aG nuevos_grupos usuario_objetivo
usermod -d /casa_modificada -m migrado_home
El parámetro -aG agrega sin remover grupos previos.
Eliminar Cuentas
userdel usuario_inactivo
userdel -r eliminar_todos_archivos # También borra home y mail spool
Gestión de Grupos
groupadd desarrolladores
groupadd -g 2000 proyecto_especial
groupmod -n otro_nombre viejo_grupo
groupdel grupo_eliminar
newgrp grupo_secundario # Cambiar grupo activo temporalmente
groups # Mostrar pertenencias actuales
Archivos del Sistema
Contenido clave de /etc/passwd por línea:
nombre:x:UID:GID:comentarios:/home/shell
Archivo protegido /etc/shadow almacena contraseñas cifradas:
login:$6$salt$hash:lastmin:maxdays:warning:inactive:expire:reserved
Archivo /etc/group estructura grupos:
grupo_name:x:GID:user1,user2,user3
Monitoreo de Discos y Almacenamiento
Espacio Usado
df -h # Formatos humanos (K/M/G)
df -i # Inodes disponibles
du -sh directorio/* # Total por subcarpeta
du -ah | sort -rh | head -20 # Archivos más grandes primero
Montar Dispositivos Externos
mkdir -p /mnt/external_drive
mount /dev/sdb1 /mnt/external_drive
mount -t ntfs -o ro /dev/sdc1 /data/readonly
# Permanece tras reinicio agregando a fstab:
/dev/sdb1 /mnt/persistente ext4 defaults 0 2
umount /mnt/external_drive
umount /dev/sdb1
Comandos útiles adicionales:
fdisk -l- listar particionesblkid- identificar UUIDsmkfs.ext4 /dev/sdxX- formatear sistema
Supervisión de Procesos
ps aux # Todos procesos activos
ps -ef | grep sshd # Filtrar por nombre
top # Monitor dinámico en tiempo real
htop # Alternativa mejorada si disponible
pgrep -l apache # Buscar PID por nombre
pstree -p # Árbol jerárquico completo
Controlar ejecución:
kill PID # Terminación normal
kill -9 PID # Fuerza obligatoria
killall proceso # Por nombre completo
jobs # Trabajos en background
fg %1 # Traer foreground trabajo 1
bg # Continuar último background
Prioridad: nice -n 10 programa ajusta prioridad negativa (más alto = menos CPU).
Configuración de Firewall
Firewalld gestiona puertos y conexiones entrantes:
systemctl status firewalld # Ver estado actual
systemctl start|stop|restart firewalld
firewall-cmd --state # Correr o detenido?
firewall-cmd --list-all # Reglas completas
# Abrir servicio
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-source=192.168.1.0/24
# Bloquear acceso
firewall-cmd --permanent --remove-port=22/tcp
firewall-cmd --permanent --remove-service=ssh
# Aplicar cambios
firewall-cmd --reload
# Zona específica
firewall-cmd --zone=public --add-port=3306/tcp --permanent
Reglas persistentes requieren --permanent seguido de reload para persistir después de reinicios.
Métodos de Instalación de Software
Paquetes RPM
rpm -qa | grep paquete # Listar instalado
rpm -ivh nuevo_paquete.rpm # Instalar con verbiage
rpm -e --nodeps nombre # Forzar desinstalación
rpm -Uvh actualizar.rpm # Actualizar existente
Tarballs Comprimidos
tar -xzf software.tar.gz -C /opt
cd /opt/software
./configure --prefix=/usr/local
make
sudo make install
# Versión portable simple
tar -xzf tomcat.zip
cd apache-tomcat*/bin
chmod +x *.sh
./startup.sh
Gestor YUM/DNF
yum search palabra_clave
yum list installed
yum install docker-ce
yum remove aplicativo_antiguo
yum update paquetes_seleccionados
# Repositorios personalizados
yum-config-manager --add-repo https://ejemplo.com/repo
Actualización rápida del cache: yum makecache fast
Estas técnicas cubren la gestión básica necesaria para operar sistemas Linux productivos en entornos de producción.