Introducción Esencial a Linux y Gestión del Sistema

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 regular
  • l = enlace simbólico
  • b = dispositivo bloqueable
  • c = 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) = lectura
  • w (2) = escritura
  • x (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 inferior
  • x → borrar bajo cursor
  • Esc → 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:

  • -m crea home automaticamente
  • -s define shell por defecto
  • -d especifica ruta personalizada
  • -G asigna grupos secundarios
  • -c añ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 particiones
  • blkid - identificar UUIDs
  • mkfs.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.

Etiquetas: linux unix SistemaOperativo centos Ubuntu

Publicado el 9-16 16:14