📝 linux_editores_sudo_ip_TAI
← Volver

📚 LINUX AVANZADO — EDITORES, SUDO, COMANDO IP Y HERRAMIENTAS

Clase magistral para el examen TAI

🎓 Cómo usar este documento: Lee la explicación de cada bloque temático y responde las preguntas antes de pasar al siguiente. Las soluciones comentadas están al final.


BLOQUE 1 — EDITOR VI / VIM

¿Qué es vi?

Vi (Visual) fue escrito por Bill Joy en 1976 partiendo de los editores ed y ex. Es el editor de texto estándar en todos los sistemas Unix/Linux. Vim (Vi IMproved) es su versión mejorada.

💡 Conocer vi es una salvaguarda de emergencia: está presente en cualquier sistema Unix/Linux aunque no haya otros editores instalados.


Los tres modos de vi

Modos de vi
├── Modo COMANDO (modo por defecto al iniciar)
│     ├── Las teclas ejecutan acciones (mover, borrar, copiar...)
│     └── Para entrar: pulsar <ESC> desde cualquier modo
├── Modo TEXTO (inserción)
│     ├── Se escribe el texto directamente
│     └── Para entrar: i, a, I, A, o, O desde modo comando
└── Modo LÍNEA DE ÓRDENES (ex)
      ├── Comandos precedidos de ":"
      └── Para entrar: pulsar ":" desde modo comando

Entrar en modo texto (inserción)

Tecla Acción
i Inserta en la posición del cursor
a Inserta después del cursor
I Inserta al principio de la línea
A Inserta al final de la línea
o Abre una línea debajo de la actual
O Abre una línea encima de la actual

⚠️ Para volver al modo comando: pulsar <ESC>


Desplazamiento del cursor (modo comando)

Tecla Acción
h / j / k / l Izquierda / Abajo / Arriba / Derecha
w Avanza una palabra
b Retrocede una palabra
Ctrl+f Avanza pantalla completa
Ctrl+b Retrocede pantalla completa
Ctrl+d Avanza media pantalla
Ctrl+u Retrocede media pantalla
1G Va al principio del fichero
G Va al final del fichero

Guardar y salir

Comando Acción
:q Sale si no hay cambios
:q! Sale sin guardar (fuerza)
:w Guarda sin salir
:wq Guarda y sale
:w fichero Guarda con nuevo nombre
:w! fichero Sobreescribe fichero existente

Borrar texto

Comando Acción
x Borra el carácter bajo el cursor
dd Borra la línea actual (va al búfer)
ndd Borra las próximas n líneas
D Borra hasta el final de la línea
dw Borra hasta el final de la palabra
d$ Borra hasta el final de la línea
d^ Borra hasta el principio de la línea
dG Borra hasta el final del fichero

Copiar, cortar y pegar

Comando Acción
yy Copia la línea actual al búfer
nyy Copia n líneas al búfer
p Pega el búfer después del cursor
P Pega el búfer antes del cursor
u Deshace la última operación
U Restaura la línea actual
. Repite la última operación

Búsqueda y reemplazo

Comando Acción
/texto Busca hacia el final del fichero
?texto Busca hacia el principio
n Repite la búsqueda (mismo sentido)
N Repite la búsqueda (sentido contrario)
:%s/patrón1/patrón2/g Reemplaza en todo el fichero
:n1,n2s/p1/p2/g Reemplaza en rango de líneas

💡 % = todo el fichero. g = todas las ocurrencias de la línea. Sin g solo reemplaza la primera.


Configuración de vi (fichero .exrc / .vimrc)

Comando set Acción
:set number Muestra números de línea
:set showmode Indica el modo actual (INSERT/REPLACE)
:set list Muestra caracteres no imprimibles
:set ignorecase Búsquedas sin distinguir mayúsculas
:set autoindent Sangrado automático en nuevas líneas
:set wrapscan Búsquedas circulares (por defecto)

💡 El fichero de configuración se llama .exrc para vi y .vimrc para vim. Se guarda en el home del usuario. Los comandos set se escriben sin los dos puntos :.


BLOQUE 2 — EDITOR NANO

¿Qué es Nano?

Nano es un editor de texto sencillo para el terminal, instalado por defecto en Ubuntu. Es mucho más fácil de usar que vi/vim, con dos líneas de ayuda siempre visibles en la parte inferior.

nano nombre_fichero    # Abrir/crear fichero
sudo nano /etc/fstab   # Editar fichero del sistema

Atajos principales de Nano

Tecla Función
Ctrl+G o F1 Mostrar ayuda
Ctrl+X o F2 Salir (pregunta si guardar)
Ctrl+O o F3 Guardar el fichero actual
Ctrl+W o F6 Buscar cadena o expresión regular
Ctrl+\ o Alt+R Buscar y reemplazar
Ctrl+K o F9 Cortar la línea actual
Ctrl+U o F10 Pegar la línea cortada
M-6 o M-^ Copiar la línea actual
Ctrl+C o F11 Mostrar posición del cursor
Ctrl+_ o M-G Ir a línea y columna específica

💡 Convención: ^ = Ctrl, M- = Alt/Meta/Esc


Fichero de configuración de Nano

Opción .nanorc Efecto
set const Muestra nº de línea del cursor constantemente
set smooth Desplazamiento suave al mover el cursor
set mouse Habilita el ratón (click mueve cursor)
set tabsize 3 TAB avanza 3 espacios
set fill 72 Wrap de línea en columna 72

🧪 TEST — BLOQUE 1 y 2: Editores vi y Nano

1. ¿En qué modo se encuentra vi cuando se inicia por primera vez?


2. ¿Qué comando de vi guarda el fichero actual y sale del editor?


3. En vi, ¿qué hace el comando dd?


4. Para buscar la cadena "error" hacia el final del fichero en vi, ¿qué se escribe?


5. ¿Qué atajo de Nano guarda el fichero actual?


6. El fichero de configuración personal de Nano se llama:


BLOQUE 3 — SUDO, SUDOERS Y VISUDO

¿Qué es sudo?

sudo (Super User DO) permite a usuarios normales ejecutar comandos con privilegios de root (o de otro usuario), basándose en una lista de control de acceso definida en /etc/sudoers.

Componentes de sudo
├── sudo          → El comando con permisos SUID
├── visudo        → Herramienta para editar /etc/sudoers de forma segura
└── /etc/sudoers  → Fichero de permisos (quién ejecuta qué y cómo)

⚠️ En Ubuntu, el usuario root no tiene contraseña por defecto (! en /etc/shadow). El primer usuario creado puede usar sudo.


Opciones de sudo

Opción Función
sudo comando Ejecuta el comando como root
sudo -u usuario comando Ejecuta como otro usuario
sudo -l Lista los comandos permitidos para el usuario
sudo -v Extiende la validez de la sesión 5 minutos más
sudo -k Invalida el tiempo de gracia (pide contraseña de nuevo)
sudo -e fichero Edita un fichero como root (equivale a sudoedit)

💡 Por defecto, tras introducir la contraseña, durante 5 minutos puede volver a usar sudo sin reescribirla.


visudo — Editar sudoers de forma segura

visudo es la única forma recomendada de editar /etc/sudoers. Ventajas:
- Bloquea el fichero mientras se edita (evita ediciones simultáneas)
- Verifica la sintaxis al cerrar antes de guardar

Opción visudo Función
visudo Edita /etc/sudoers
visudo -c Solo comprueba la sintaxis sin editar
visudo -s Modo estricto: comprueba también el orden de las reglas

Cuando hay error de sintaxis al cerrar visudo:
- e → Editar de nuevo (posiciona en la línea del error)
- x → Salir sin guardar
- Q → Salir y guardar (con el error, ⚠️ peligroso)


Estructura de /etc/sudoers

/etc/sudoers
├── Alias (opcional)
│     ├── User_Alias     → Agrupa usuarios
│     ├── Host_Alias     → Agrupa equipos/redes
│     ├── Runas_Alias    → Agrupa usuarios "como quién" ejecutar
│     └── Cmnd_Alias     → Agrupa comandos
├── Reglas de acceso (obligatorio)
│     └── Sintaxis: usuario host = (comoQuien) tag: comandos
└── Defaults / Opciones (opcional)
      └── Comportamiento global o por usuario/host

Tipos de Alias en sudoers

Tipo Formato Ejemplo
User_Alias User_Alias NOMBRE = user1, user2, %grupo User_Alias ADMIN = ana, sergio
Host_Alias Host_Alias NOMBRE = ip, red/máscara, host Host_Alias LANS = 192.168.1.0/24
Runas_Alias Runas_Alias NOMBRE = user1, #UID Runas_Alias OPS = root, #1013
Cmnd_Alias Cmnd_Alias NOMBRE = /ruta/cmd1, /ruta/cmd2 Cmnd_Alias RED = /sbin/ifconfig, /sbin/iptables

⚠️ Los nombres de alias deben comenzar con letra mayúscula y pueden contener letras, números y _.
El símbolo ! niega un elemento: User_Alias TODOS = ALL, !root


Reglas de acceso — Sintaxis completa

usuario  host  =  (comoQuien)  tag:  comando1, comando2...

Ejemplos:
daniela ALL = /sbin/iptables
  → daniela puede usar iptables en cualquier host

ADMIN ALL = ALL
  → Los del alias ADMIN pueden hacer cualquier cosa

checo ALL = /usr/bin/passwd *, !/usr/bin/passwd root
  → checo puede cambiar la contraseña de cualquier usuario EXCEPTO root

sergio ALL = (ALL) ALL
  → sergio puede ejecutar cualquier comando como cualquier usuario

Tags (etiquetas de comandos)

Tag Efecto
NOPASSWD: No pide contraseña para los siguientes comandos
PASSWD: Pide contraseña (por defecto)
NOEXEC: Impide "escapar al shell" desde el comando (ej: en vi con !)
EXEC: Permite la ejecución (por defecto)
# Ejemplo NOPASSWD:
lux webserver = NOPASSWD: /bin/kill, /usr/bin/lprm

Defaults (opciones de comportamiento)

Nivel Formato
Global Defaults opcion
Por usuario Defaults:usuario opcion
Por usuario privilegiado Defaults>usuario opcion
Por host Defaults@host opcion
Ejemplos:
Defaults log_year                     → Registra el año en el log
Defaults:ana !authenticate            → Ana no necesita contraseña
Defaults logfile="/var/log/sudo.log"  → Define el fichero de log
Defaults passwd_tries = 3             → Intentos antes de error (def: 3)

🧪 TEST — BLOQUE 3: Sudo y Sudoers

7. ¿Qué hace sudo -k?


8. ¿Por qué se debe usar visudo en lugar de editar /etc/sudoers directamente?


9. En el fichero sudoers, la regla checo ALL = /usr/bin/passwd *, !/usr/bin/passwd root significa:


10. ¿Qué tipo de alias en sudoers agrupa los comandos que un usuario puede ejecutar?


11. ¿Qué opción de visudo comprueba la sintaxis de /etc/sudoers sin editarlo?


BLOQUE 4 — COMANDO IP (iproute2)

El comando ip — Sucesor de ifconfig

ip es la herramienta moderna para gestionar interfaces de red, direcciones, rutas y más en Linux. Sustituye a ifconfig, route y arp.

Formato: ip [objeto] [subcomando]

Objetos principales del comando ip

Objeto Abreviatura Función
address addr / a Gestionar direcciones IP
link l Gestionar interfaces de red
route r Gestionar tabla de enrutamiento
neighbour neigh / n Tabla ARP (vecinos)
maddress maddr Direcciones multicast

Gestión de direcciones — ip addr

Comando Función
ip addr Muestra todas las direcciones IP de todas las interfaces
ip addr show dev em1 Muestra info solo de la interfaz em1
ip addr add 192.168.1.1/24 dev em1 Añade la IP 192.168.1.1/24 a em1
ip addr del 192.168.1.1/24 dev em1 Elimina la IP 192.168.1.1/24 de em1

Comando Función
ip link Muestra el estado de todas las interfaces
ip link show dev em1 Muestra info solo de em1
ip -s link Muestra estadísticas de las interfaces
ip link set em1 up Activa la interfaz em1
ip link set em1 down Desactiva la interfaz em1
ip link set em1 mtu 9000 Establece MTU de 9000 en em1
ip link set em1 promisc on Activa modo promiscuo en em1

Gestión de rutas — ip route

Comando Función
ip route Lista todas las rutas del kernel
ip route add default via 192.168.1.1 dev em1 Añade ruta por defecto via gateway
ip route add 192.168.1.0/24 via 192.168.1.1 Añade ruta a red via gateway
ip route add 192.168.1.0/24 dev em1 Añade ruta a red via interfaz
ip route delete 192.168.1.0/24 via 192.168.1.1 Elimina una ruta
ip route replace 192.168.1.0/24 dev em1 Reemplaza o añade una ruta
ip route get 8.8.8.8 Muestra qué ruta se usa para llegar a una IP

Tabla ARP — ip neigh

Comando Función
ip neigh Muestra la tabla ARP (vecinos)
ip neigh show dev em1 Muestra tabla ARP de em1

Multicast — ip maddr

Comando Función
ip maddr Muestra info multicast de todos los dispositivos
ip maddr show dev em1 Muestra info multicast de em1

Tabla resumen: ip vs comandos clásicos

Comando moderno Comando clásico equivalente
ip addr ifconfig
ip link set em1 up/down ifconfig em1 up/down
ip route route -n
ip neigh arp -n

🧪 TEST — BLOQUE 4: Comando ip

12. ¿Qué comando activa la interfaz de red eth0?


13. ¿Qué comando añade la dirección IP 10.0.0.5/24 a la interfaz eth0?


14. ¿Qué objeto del comando ip gestiona la tabla ARP?


15. ¿Qué comando añade una ruta por defecto via el gateway 192.168.1.1 usando la interfaz em1?


BLOQUE 5 — HERRAMIENTAS Y COMANDOS LINUX (REFERENCIA)

Ayuda y documentación

Comando Función
man comando Manual completo del comando
whatis comando Descripción corta del comando
apropos palabra Busca comandos relacionados con una palabra
comando --help Ayuda rápida del comando

Información del sistema

Comando Función
whoami Usuario actual
who Usuarios conectados actualmente
w Usuarios conectados con más datos
last Historial de logins y reinicios
lastb Últimos intentos de login fallidos
lslogins Lista usuarios conocidos del sistema

Gestión de ficheros y directorios

Comando Función
ls -l Listado detallado
ls -a Incluye ficheros ocultos
ls -R Listado recursivo
pwd Directorio actual
mkdir -p /ruta/dir Crea directorio y todos los necesarios
find Busca ficheros en un directorio
locate Busca en base de datos de ficheros
updatedb Actualiza la base de datos de locate
stat fichero Estadísticas del sistema de ficheros
file fichero Muestra el tipo del fichero
tree Lista ficheros en formato árbol

Red y diagnóstico de red

Comando Función
ifconfig Configuración de interfaces (clásico)
ip Herramienta moderna de red (ver Bloque 4)
ping host Envía ICMP para verificar conectividad
nslookup dominio Consulta DNS
dig dominio Consulta DNS detallada
whois dominio Información WHOIS
nmap Escáner de seguridad de red
nc Netcat — conexión TCP/UDP por consola
ss Muestra estadísticas de sockets (sucesor de netstat)
netstat Estadísticas de red (clásico)
arp Muestra/modifica caché MAC/IP
tcpdump Volcado de actividad de red
bmon Monitor de ancho de banda
iftop Monitor de interfaz de red en tiempo real

Firewall

Herramienta Función
iptables Filtrado de paquetes IP y NAT
ufw Firewall simplificado para iptables (Ubuntu)
shorewall Firewall avanzado para iptables

Permisos — Referencia rápida

Formato: drwxr-xr-x
         │└──┴──┴──
         │  │  │  └─ Otros
         │  │  └──── Grupo
         │  └─────── Propietario
         └────────── Tipo: d=dir, -=fichero, l=enlace, p=pipe, s=socket, c=char, b=bloque

r = lectura (4)
w = escritura (2)
x = ejecución/acceso a directorio (1)
- = sin permiso (0)

Editores disponibles en Linux

Editor Características
vi Clásico UNIX, presente en todo sistema, difícil de aprender
vim Vi Improved, más potente y configurable
nano Sencillo, ayuda visible, ideal para principiantes
pico Similar a nano (el original del que deriva nano)
emacs GNU Emacs, muy potente y extensible
jed Editor para programadores
micro Editor moderno para terminal
mcedit Editor integrado en Midnight Commander

🧪 TEST — BLOQUE 5: Herramientas Linux

16. ¿Qué comando muestra una descripción corta de un comando Linux?


17. ¿Qué herramienta es el sucesor moderno de netstat para mostrar estadísticas de sockets?


18. ¿Qué hace updatedb?


19. En la notación de permisos Linux, ¿qué significa el carácter l al inicio de lrwxrwxrwx?



✅ SOLUCIONES COMENTADAS


1 → c) Vi se inicia siempre en modo comando. Desde este modo se introducen comandos de movimiento, borrado, copia, etc. Para empezar a escribir texto hay que entrar en modo texto con i, a, o, etc.

2 → c) :wq guarda (write) el fichero y sale (quit) de vi. :w solo guarda sin salir. :q! sale sin guardar (forzado). :x también guarda y sale, pero solo escribe si hubo cambios.

3 → c) dd borra la línea completa actual y la almacena en el búfer (operación de cortar). Con ndd se borran n líneas. El contenido del búfer puede pegarse después con p o P.

4 → c) /error busca la cadena "error" hacia el final del fichero en vi. ?error buscaría hacia el principio. Después de la búsqueda, n repite en el mismo sentido y N cambia el sentido.

5 → c) Ctrl+O (o F3) guarda el fichero actual en Nano. Ctrl+X sale (pregunta si guardar si hay cambios). Ctrl+W busca texto. No confundir con Ctrl+S que no funciona en Nano por defecto.

6 → b) El fichero de configuración personal de Nano es ~/.nanorc en el directorio home del usuario. El fichero global es /etc/nanorc pero no se debe editar directamente (se crea el personal en el home).

7 → b) sudo -k (kill) invalida el tiempo de gracia de sudo, haciendo que la próxima vez que se use sudo se pida la contraseña aunque no hayan pasado los 5 minutos. sudo -v (validate) extiende el tiempo 5 minutos más.

8 → b) visudo es la herramienta recomendada porque bloquea el fichero /etc/sudoers mientras se edita (evitando ediciones simultáneas) y verifica la sintaxis al cerrar antes de guardar los cambios, evitando ficheros corruptos.

9 → c) La regla checo ALL = /usr/bin/passwd *, !/usr/bin/passwd root permite cambiar la contraseña de cualquier usuario (* = cualquier argumento) excepto root (! = negación de /usr/bin/passwd root).

10 → d) Cmnd_Alias agrupa comandos bajo un nombre de alias. User_Alias agrupa usuarios, Host_Alias agrupa equipos y Runas_Alias agrupa los usuarios "como quienes" se ejecutarán los comandos.

11 → c) visudo -c (check) comprueba la sintaxis del fichero /etc/sudoers sin abrirlo para editar. Si está correcto muestra "sudoers file parsed OK". La opción -s activa el modo estricto adicional al editar.

12 → b) ip link set eth0 up activa la interfaz eth0. El objeto link gestiona el estado de las interfaces. ip addr gestiona direcciones IP, ip route gestiona rutas e ip neigh gestiona la tabla ARP.

13 → c) ip addr add 10.0.0.5/24 dev eth0 añade la dirección IP 10.0.0.5 con máscara /24 a la interfaz eth0. El objeto addr gestiona las direcciones. No confundir con ip route add (añade rutas) ni ip link (gestiona estado).

14 → c) ip neigh gestiona la tabla de vecinos, también conocida como tabla ARP para IPv4. Muestra las asociaciones IP → MAC de los equipos de la red local. Es el equivalente moderno del comando clásico arp.

15 → a) ip route add default via 192.168.1.1 dev em1 añade la ruta por defecto (para todo el tráfico sin otra ruta más específica) indicando el gateway 192.168.1.1 accesible por la interfaz em1.

16 → c) whatis comando muestra una descripción corta (una línea) del comando consultando las páginas del manual. man muestra el manual completo. apropos busca comandos relacionados con una palabra clave.

17 → c) ss (socket statistics) es el sucesor moderno de netstat para mostrar estadísticas de sockets, conexiones activas, puertos en escucha, etc. Es más rápido que netstat porque usa las APIs del kernel directamente.

18 → b) updatedb actualiza la base de datos de ficheros que usa el comando locate para buscar. Sin actualizar esta base de datos, locate solo encontrará ficheros indexados en la última actualización.

19 → b) El carácter l al inicio de los permisos indica un enlace simbólico (symbolic link). Los tipos de fichero en Linux son: - (fichero regular), d (directorio), l (enlace simbólico), c (dispositivo de carácter), b (dispositivo de bloque), p (pipe/FIFO), s (socket).


📊 TABLA FLASH FINAL — Datos clave Editores, Sudo y Comando ip

Concepto Valor / Respuesta clave
vi: creado por Bill Joy, 1976
vi: versión mejorada Vim (Vi IMproved)
vi: modo al iniciar Modo comando
vi: entrar en modo texto i, a, I, A, o, O
vi: volver a modo comando <ESC>
vi: guardar y salir :wq
vi: salir sin guardar :q!
vi: borrar línea dd
vi: copiar línea yy
vi: pegar p (después) / P (antes)
vi: deshacer u
vi: buscar hacia adelante /texto
vi: buscar hacia atrás ?texto
vi: reemplazar en todo el fichero :%s/p1/p2/g
vi: fichero de configuración .exrc (vi) / .vimrc (vim)
Nano: guardar Ctrl+O
Nano: salir Ctrl+X
Nano: buscar Ctrl+W
Nano: cortar línea Ctrl+K
Nano: pegar Ctrl+U
Nano: configuración personal ~/.nanorc
sudo significa Super User DO
sudo: fichero de permisos /etc/sudoers
sudo: editar sudoers de forma segura visudo
sudo: listar comandos permitidos sudo -l
sudo: extender tiempo de gracia sudo -v
sudo: invalidar tiempo de gracia sudo -k
sudo: tiempo de gracia por defecto 5 minutos
visudo: verificar sintaxis visudo -c
sudoers: alias de usuarios User_Alias
sudoers: alias de comandos Cmnd_Alias
sudoers: alias de equipos Host_Alias
sudoers: alias "como quién" Runas_Alias
sudoers: sin contraseña NOPASSWD: tag
sudoers: impedir escape a shell NOEXEC: tag
ip addr Muestra/gestiona direcciones IP
ip link Muestra/gestiona interfaces
ip route Muestra/gestiona rutas
ip neigh Tabla ARP (vecinos)
ip link set eth0 up/down Activar/desactivar interfaz
ip addr add x.x.x.x/n dev eth0 Añadir IP a interfaz
ip route add default via x.x.x.x Añadir ruta por defecto
ip vs ifconfig ip es el sucesor moderno de ifconfig
ip vs route ip route sustituye al comando route
ip vs arp ip neigh sustituye al comando arp
ss Sucesor moderno de netstat
whatis Descripción corta de un comando
apropos Busca comandos relacionados con una palabra
updatedb Actualiza base de datos de locate
Tipo fichero l Enlace simbólico
Tipo fichero d Directorio
Tipo fichero - Fichero regular