Módulo 1 — Operación de Sistemas Operativos GNU/Linux
Al finalizar esta clase vas a poder:
PID 1.sudo, y distinguir su de sudo.
Por qué vemos este tema: en la clase 3 estudiamos la secuencia de arranque e instalamos Debian. En esta clase vamos a revisar el sistema ya instalado, completar su configuración inicial y acceder a él de forma remota.
En la clase 3 vimos cómo se inicia Linux, desde el firmware hasta el login:
Firmware (BIOS/UEFI) → Bootloader (GRUB) → Kernel + initramfs → init-systemd (PID 1) → Login
GRUB e initramfs ya se explicaron en esa clase. En esta retomamos la secuencia desde systemd, el primer proceso del espacio de usuario.
Se denomina sistema init al software que el kernel inicia como primer proceso del espacio de usuario. SysVinit y systemd son dos implementaciones diferentes de esa función. En Debian actual, el sistema init predeterminado es systemd.
| SysVinit (clásico) | systemd (actual) | |
|---|---|---|
| Cómo arranca | Scripts ejecutados según el orden definido para cada runlevel | Unidades que pueden iniciarse en paralelo según sus dependencias |
| Qué levanta | Lo que diga el runlevel | Unidades con dependencias declaradas |
| Servicios | Los gestiona mediante scripts de inicio y detención | Puede supervisarlos y reiniciarlos según su configuración |
| Logs | Archivos administrados por syslog y los propios servicios | Journal centralizado, además de otros mecanismos de registro |
| Configuración | /etc/init.d/ + enlaces en
/etc/rc?.d/
|
Archivos .service declarativos |
SysVinit utiliza runlevels para representar distintos modos de funcionamiento. systemd utiliza targets con un propósito equivalente y conserva alias de compatibilidad para los runlevels tradicionales:
| Runlevel | Target de systemd | Qué es |
|---|---|---|
| 0 | poweroff.target |
Apagado |
| 1 | rescue.target |
Monousuario, mantenimiento |
| 3 | multi-user.target |
Multiusuario sin entorno gráfico |
| 5 | graphical.target |
Multiusuario con entorno gráfico |
| 6 | reboot.target |
Reinicio |
systemctl get-default # target predeterminado del sistema
systemctl status # estado general del sistema
systemctl status ssh # estado del servicio SSH
systemctl list-units --type=service # lista servicios activos
systemctl is-enabled ssh # habilitado en el arranque?
Alcance: en esta clase alcanza con identificar a systemd comoPID 1y utilizarsystemctlpara realizar consultas básicas. La administración de servicios y procesos se desarrollará más adelante.
(Arranque → sistema init → PID 1 → systemd → targets → systemctl)
sudotty1
a tty6.La consola local o la consola remota de gestión permite intervenir cuando SSH no está disponible, por ejemplo, ante un problema de red, falta de espacio en disco o una configuración incorrecta del firewall.
cristian@lab2-vm:~$
│ │ │└─ tipo de usuario ($user | #root)
│ │ └── directorio actual (~ para home)
│ └───── nombre del host
└────────────── usuario conectado
| Símbolo | Significado |
|---|---|
$ |
Usuario normal |
# |
root — usuario con privilegios administrativos |
El último carácter del prompt ayuda a reconocer si la sesión pertenece a un usuario normal o a root.
El ejemplo anterior muestra el formato habitual del prompt de Bash en Debian. No es un
formato fijo: puede incluir colores, información adicional o una distribución diferente
según la distribución y el shell utilizado. En Bash se configura mediante la variable
PS1, normalmente desde ~/.bashrc.
echo "$PS1" # Ver la configuración actual del prompt
Los símbolos $ y # son una convención frecuente para distinguir un
usuario normal de root, pero también forman parte de la configuración y pueden modificarse.
sudo: sigue siendo un usuario
normal, pero está autorizado para ejecutar determinados comandos con privilegios de
root. En la configuración predeterminada de Debian, esta autorización se asigna mediante
el grupo sudo.No existe un tipo de cuenta llamado “usuario sudo”: sudo es el comando que
permite elevar privilegios de forma controlada. Para el trabajo cotidiano se utiliza la
cuenta personal y se recurre a sudo solo cuando la tarea requiere permisos
administrativos.
id # UID, GID y grupos del usuario actual
groups # grupos a los que pertenece el usuario
Fuentes: Debian Reference — The root account, Guía de instalación de Debian 13 — Configuración de usuarios
su vs sudosu |
sudo |
|
|---|---|---|
| Qué contraseña pide | La de root | La del usuario que ejecuta el comando |
| Alcance | Abre una sesión completa como root | Ejecuta un comando y vuelve |
| Trazabilidad | La sesión se ejecuta con la identidad de root | Registra qué usuario solicitó la elevación |
| Si hay varios admins | Todos comparten la misma clave | Cada uno con su cuenta |
su - # sesión completa como root (clave de root)
sudo apt update # un solo comando elevado (pide tu clave)
sudo -i # sesión interactiva como root vía sudo
sudo se encuentra en
/etc/sudoers. Debe modificarse con visudo, que valida la
sintaxis antes de guardar. Un error en este archivo puede impedir la elevación de
privilegios.
sudo pueden utilizar este comando.
(TTY → prompt → root → su vs sudo)
La post-instalación reúne las tareas necesarias para dejar el sistema identificado, actualizado y listo para administrarlo. Incluye la configuración regional, la hora, el nombre del equipo, los repositorios y el acceso remoto.
Antes de modificar el sistema, conviene identificar la máquina y revisar su estado general.
cat /etc/os-release # distribución y versión
uname -a # kernel y arquitectura
hostnamectl # nombre, SO, kernel, tipo de máquina
lsblk # discos y particiones
ip a # interfaces de red
df -h # espacio en disco
Estas consultas reducen el riesgo de aplicar cambios en el equipo equivocado, especialmente cuando se administran varios servidores mediante SSH.
Un locale define idioma, codificación de caracteres, formato de fecha, separador decimal y orden alfabético.
locale # ver la configuración actual
sudo dpkg-reconfigure locales # generar y elegir locales
/etc/locale.gen → qué locales se generan./etc/default/locale → cuál usa el sistema por defecto.LANG (el general) y las LC_* (para ajustes
puntuales).En un entorno productivo suele utilizarse un locale en inglés, como en_US.UTF-8
o C.UTF-8:
En el curso vamos a utilizar el sistema en español es_AR.UTF-8. Es una
decisión para el laboratorio; en otros entornos debe definirse un criterio común y
mantenerlo de forma consistente.
La distribución del teclado es independiente del locale. Determina qué carácter corresponde a cada tecla en la consola local.
sudo dpkg-reconfigure keyboard-configuration
sudo setupcon # aplicar sin reiniciar
/etc/default/keyboard → XKBLAYOUT="latam"
para teclados latinoamericanos.localectl status.Una distribución incorrecta dificulta el uso de símbolos frecuentes como|,/,@y~. También puede provocar errores al ingresar contraseñas, ya que la pantalla no muestra los caracteres escritos.
timedatectl # estado actual
sudo timedatectl set-timezone America/Argentina/Buenos_Aires
sudo timedatectl set-ntp true # sincronización automática
/etc/localtime →
/usr/share/zoneinfo/...
systemd-timesyncd en una
instalación estándar de Debian.cron y los timers de systemd dependen
del reloj.
sudo apt update # actualizar la lista de paquetes disponibles
sudo apt upgrade # instalar las actualizaciones
apt update solo descarga la información más reciente de los repositorios;
no instala actualizaciones.aptse usa para distribuciones derivadas de Debian, como Ubuntu, Mint y Devuan. Para otras distribuciones, se utilizan gestores de paquetes diferentes:dnfen Fedora y RHEL, yapken Alpine Linux,pacmanen Arch Linux.
(Identificar → localizar → actualizar)
SSH (Secure Shell) es un protocolo de red que permite administrar sistemas de forma remota mediante una conexión cifrada. Reemplaza a protocolos antiguos como Telnet y rlogin, que transmitían las credenciales en texto plano.
Hasta ahora utilizamos la consola de VirtualBox. A partir de esta clase vamos a administrar la VM mediante SSH desde la máquina anfitriona. Esto permite trabajar con la terminal habitual del equipo, copiar y pegar texto y mantener varias sesiones abiertas.
Durante la instalación de la clase 3 seleccionamos SSH server en
tasksel. Podemos comprobar su estado con los siguientes comandos:
systemctl status ssh # ¿está corriendo?
systemctl is-enabled ssh # ¿arranca solo?
ss -tlnp | grep :22 # ¿escucha en el puerto 22?
La VM tendrá un solo adaptador de red configurado en modo NAT. Este modo permite que nuestro servidor Linux acceda a Internet y, mediante una regla de reenvío de puertos, que la máquina anfitriona (nuestra laptop) se conecte al servicio SSH de la VM.
En Avanzadas → Reenvío de puertos, agregar la siguiente regla:
| Nombre | Protocolo | IP Anfitrión | Puerto anfitrión | IP invitado | Puerto invitado |
|---|---|---|---|---|---|
| SSH | TCP | 2222 | 22 |
Con esta regla, VirtualBox recibe las conexiones al puerto2222de la máquina anfitriona y las reenvía al puerto22de la VM.
ssh -p 2222 usuario@localhost
ssh directo en la terminal.~/.ssh/known_hosts para detectar cambios en conexiones posteriores.
(SSH server → NAT → reenvío de puertos → conexión desde el anfitrión)
PID 1, inicia las unidades del
sistema y organiza los modos de funcionamiento mediante targets.sudo puede elevar sus privilegios cuando una tarea lo
requiere.2222 a 22 en VirtualBox.
Post-instalación y primer acceso remoto
Enlace al laboratorio: Laboratorio 3 — Post-instalación y primer acceso por SSH
Documentación oficial de Debian
Manuales y proyectos upstream