Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux
VERSION 1.7 JULIO DE 2021
JOSE MANUEL AYALA WILSON
Jose Manuel Ayala Wilson
INTRODUCCION
Jose Manuel Ayala Wilson
INTERACCIONES EN EL SISTEMA
• El sistema operativo interactúa directamente con el
hardware (memoria, tarjeta gráfica, comunicaciones,
entrada/salida)
• Cada fabricante de hardware provee una pieza de
software denominada driver que es utilizada por el
sistema operativo para intercambiar información y dar
órdenes a un hardware específico
• Las aplicaciones interactúan con el sistema operativo
cuando necesitan cualquier recurso físico solicitándolo
mediante lo que se conoce como llamadas al sistema
• Los usuarios interactúan con las aplicaciones cuando
necesitan resolver tareas comunes que se automatizan
gracias a la informática (enviar correos, escribir y editar
documentos, jugar, publicar en redes sociales, etc.)
Jose Manuel Ayala Wilson
MODOS DE EJECUCION
• Modo usuario: el sistema da acceso a un conjunto
limitado de recursos y operaciones que pueden
realizarse sobre el hardware del ordenador. En este
modo se ejecutan las aplicaciones de los usuarios
• Modo supervisor (modo kernel): el sistema da acceso
prácticamente a todos los recursos y operaciones que
pueden realizarse sobre el hardware del ordenador. En
este modo se ejecutan las aplicaciones de
administración y los componentes internos del sistema
operativo que controlan la memoria, la entrada/salida
(E/S), el almacenamiento en disco, etc.
Jose Manuel Ayala Wilson
INTERRUPCION
• Es una señal que envía un dispositivo de E/S a la
CPU para indicar que la operación de la que se
estaba ocupando, ya ha terminado.
• El mecanismo de tratamiento de las
interrupciones permite al sistema operativo
utilizar la CPU en servicio de una aplicación,
mientras otra permanece a la espera de que
concluya una operación en un dispositivo de E/S.
• El hardware se encarga de avisar al SO cuando el
dispositivo de E/S ha terminado y el SO puede
intervenir entonces, si es conveniente, para
hacer que el programa que estaba esperando por
el dispositivo, se continúe ejecutando.
Jose Manuel Ayala Wilson
EXCEPCION
• Es una situación de error detectada por la CPU mientras
ejecutaba una instrucción, que requiere tratamiento por
parte del SO.
• El mecanismo de tratamiento de las excepciones es
esencial para impedir, junto a los modos de ejecución
de la CPU y los mecanismos de protección de la
memoria, que las aplicaciones realicen operaciones que
no les están permitidas.
• Como en el caso de las interrupciones, el hardware se
limita a dejar el control al SO, y este es el que trata la
situación como convenga.
• Es bastante frecuente que el tratamiento de una
excepción no retorne al programa que se estaba
ejecutando cuando se produjo la excepción, sino que el
SO aborte la ejecución de ese programa.
Jose Manuel Ayala Wilson
KERNEL
• En informática, un núcleo o kernel es un software que
constituye una parte fundamental del sistema
operativo, y se define como la parte que se ejecuta en
modo privilegiado (conocido también como modo
núcleo o modo kernel).
• Es el principal responsable de facilitar a los distintos
programas acceso seguro al hardware o en forma
básica, es el encargado de gestionar recursos, a través
de servicios de llamada al sistema.
• Como hay muchos programas y el acceso al hardware
es limitado, también se encarga de decidir qué
programa podrá usar un dispositivo de hardware y
durante cuánto tiempo, lo que se conoce como
multiprogramación.
Jose Manuel Ayala Wilson
DRIVERS
• Un controlador de dispositivo o manejador de
dispositivo (en inglés: device driver, o simplemente
driver) es un programa informático que permite al
sistema operativo interactuar con un periférico,
haciendo una abstracción del hardware y
proporcionando una interfaz (posiblemente
estandarizada) para utilizar el dispositivo.
• Es una pieza esencial del software, y en particular, del
núcleo de un sistema operativo, sin la cual el hardware
sería inutilizable.
• Cada fabricante de hardware suele producir sus propios
drivers y proporcionarlos a los fabricantes de sistemas
operativos para que los incluyan en sus distribuciones
Jose Manuel Ayala Wilson
GESTION DE PROCESOS
• Un proceso es simplemente, un programa en ejecución
que necesita recursos para realizar su tarea: tiempo de
CPU, memoria, archivos y dispositivos de E/S.
• El SO es el responsable de lo siguiente:
• Crear y destruir procesos.
• Parar y reanudar procesos.
• Ofrecer mecanismos para que los procesos puedan
comunicarse y se sincronicen.
• La gestión de procesos podría ser similar al trabajo de
oficina: se puede tener una lista de tareas a realizar y a
estas fijarles prioridades: alta, media, baja, por ejemplo.
• Debemos comenzar haciendo las tareas de prioridad
alta primero y cuando se terminen seguir con las de
prioridad media y después las de baja. Una vez
realizada la tarea se tacha.
Jose Manuel Ayala Wilson
GESTION DE MEMORIA
• La gestión de memoria se refiere a los distintos
métodos y operaciones que se encargan de obtener la
máxima utilidad de la memoria, organizando los
procesos y programas que se ejecutan de manera tal
que se aproveche de la mejor manera posible el
espacio disponible.
• Entre las principales operaciones que desarrolla la
administración de memoria se encuentran la
reubicación, que consiste en trasladar procesos activos
dentro y fuera de la memoria principal para maximizar
la utilización del procesador; la protección, mecanismos
que protegen los procesos que se ejecutan de
interferencias de otros procesos; uso compartido de
códigos y datos, con lo que el mecanismo de protección
permite que ciertos procesos de un mismo programa
que comparten una tarea tengan memoria en común.
Jose Manuel Ayala Wilson
GESTION DE ALMACENAMIENTO
• Un sistema de almacenamiento secundario es
necesario, ya que la memoria principal
(almacenamiento primario) es volátil (los datos se
pierden al desconectar el ordenador) y además muy
pequeña para almacenar todos los programas y datos.
• También es necesario mantener los datos que no
convenga mantener en la memoria principal.
• El SO se encarga de:
• Planificar los discos.
• Gestionar el espacio libre.
• Asignar el almacenamiento.
• Verificar que los datos se guarden en orden.
Jose Manuel Ayala Wilson
SISTEMA DE ARCHIVOS
• El sistema de archivos o sistema de ficheros es el
componente del sistema operativo encargado de
administrar y facilitar el uso del almacenamiento
secundario (discos)
• Sus principales funciones son la asignación de
espacio a los archivos, la administración del
espacio libre y del acceso a los datos guardados.
• La mayoría de los sistemas operativos manejan su
propio sistema de archivos.
• Los sistemas de archivos proveen métodos para
crear, mover, renombrar y eliminar tanto archivos
como directorios (archivos que almacenan otros
archivos)
Jose Manuel Ayala Wilson
SISTEMA DE PROTECCION
• Mecanismo que controla el acceso de
los programas o los usuarios a los
recursos del sistema.
• El SO se encarga de:
• Distinguir entre uso autorizado y
no autorizado.
• Especificar los controles de
seguridad a realizar.
• Forzar el uso de estos
mecanismos de protección.
Jose Manuel Ayala Wilson
SISTEMA DE COMUNICACION
• Para mantener las comunicaciones con
otros sistemas es necesario poder
controlar el envío y recepción de
información a través de las interfaces
de red u otros estándares de
intercambio de información como
BlueTooth, infrarrojos, etc.
• También hay que crear y mantener
puntos de comunicación que sirvan a
las aplicaciones para enviar y recibir
información, y crear y mantener
conexiones virtuales entre aplicaciones
que están ejecutándose localmente y
otras que lo hacen remotamente.
Jose Manuel Ayala Wilson
PROGRAMAS DE SISTEMA
• Son aplicaciones de utilidad que se suministran
con el SO pero no forman parte de él.
• Ofrecen un entorno útil para el desarrollo y
ejecución de programas, siendo algunas de las
tareas que realizan:
• Manipulación y modificación de archivos.
• Información del estado del sistema.
• Soporte a lenguajes de programación.
• Comunicaciones.
Jose Manuel Ayala Wilson
UNIX
Jose Manuel Ayala Wilson
QUE ES UNIX
• Unix (registrado oficialmente como UNIX®) es
un sistema operativo portable, multitarea y
multiusuario; desarrollado en 1969 por un grupo
de empleados de los laboratorios Bell de AT&T.
• El proyecto fue bautizado UNICS, como acrónimo
Uniplexed Information and Computing System, y
luego se cambió el nombre a UNIX, dando origen
al legado que llega hasta nuestros días.
• Muchos de los aspectos que caracterizan a Unix
fueron en su momento completas innovaciones
que no solo tendrían un gran impacto en el
desarrollo de sistemas y distribuciones similares
a Unix, sino que fueron incluso adoptados por
sus competidores Apple y Microsoft en sus
respectivos sistemas operativos.
Jose Manuel Ayala Wilson
UNIX - MULTITAREA
• En el éxito de Unix también tuvo un impacto
decisivo la posibilidad de ejecutar varios
procesos o programas al mismo tiempo sin
cortarse el paso mutuamente.
• Con este fin, el sistema operativo se apoya
desde sus inicios en el método de la multitarea
apropiativa (preemptive multitasking), según el
cual un componente denominado planificador
(scheduler), ubicado en el núcleo del sistema
operativo, se encarga de administrar los
procesos en base a un sistema de prioridades.
• Fue mucho más tarde, a lo largo de 1990,
cuando Apple y Microsoft se decidieron a realizar
soluciones de gestión de procesos de este tipo.
Jose Manuel Ayala Wilson
UNIX - MULTIUSUARIO
• Uno de los objetivos de crear UNIX fue que
permitiera trabajar a varios usuarios al mismo
tiempo.
• Este es el motivo de asignar a cada programa y
a cada proceso un propietario.
• La ventaja de un sistema multiusuario de este
tipo no solamente residía en la posibilidad de
acceder a un mismo procesador en el mismo
momento, sino también en la gestión de
permisos ligado a ello, porque ahora los
administradores podían definir qué permisos de
acceso tenía cada usuario y a qué recursos
podía acceder.
Jose Manuel Ayala Wilson
UNIX - NETWORKING
• Con 4.2BSD, el sistema Unix de la Berkeley se
convierte en 1983 en el primer sistema
operativo que integra la pila de protocolos de
Internet, la cual sienta las bases de Internet y de
una configuración sencilla de la red y ofrece la
posibilidad de participar como cliente o servidor.
• A finales de la década de los 80, con la
mencionada cuarta versión de System V,
aterriza en el mercado una variante del sistema
de AT&T comercial en el que se añade al kernel
la legendaria familia de protocolos.
• En cambio, no sería hasta 1993 (versión 3.11 y
su correspondiente extensión) cuando Windows
soportaría TCP/IP.
Jose Manuel Ayala Wilson
UNIX - MULTIPLATAFORMA
• Mientras que en la época del nacimiento de Unix
se diseñaba a los sistemas operativos y a sus
aplicaciones en función de un tipo exacto de
procesador, el equipo de los Laboratorios Bell
persiguió desde el principio la visión de un
sistema portable.
• Aunque se utilizaba un lenguaje ensamblador,
tan pronto como se estableció la estructura
fundamental del software de sistema, el
proyecto inició un lenguaje de programación
propio del cual nacería el histórico lenguaje C,
ampliamente utilizado hoy para escribir sistemas
operativos y todo tipo de software.
• Con la posterior y muy modificada versión V7 de
Unix de 1979 el sistema operativo se mereció
con razón su reputación como sistema portable.
Jose Manuel Ayala Wilson
UNIX - HERRAMIENTAS
• Los sistemas Unix reúnen un gran número de
instrumentos y comandos, cada uno de los cuales está
concebido generalmente para unas pocas tareas
especiales.
• Para la solución general de problemas se aplica el
principio de buscar respuestas en la combinación de
herramientas estándar en lugar de desarrollar
herramientas nuevas y específicas.
• La herramienta más importante en este sentido ha
sido siempre el shell (sh), un intérprete de comandos
orientado a texto que ofrece numerosas opciones de
programación.
Jose Manuel Ayala Wilson
LA FAMILIA DE UNIX
• UNIX dió origen a toda una familia de
sistemas operativos que usaron sus
revolucionarios conceptos.
• Entre ellos:
• Free BSD
• Net BSD
• SunOS
• macOS
• Solaris
• HP-UX
• IBM AIX
• SGI IRIX
Jose Manuel Ayala Wilson
LINUX
Jose Manuel Ayala Wilson
Linus Torvalds
Jose Manuel Ayala Wilson
KALI LINUX
• Kali Linux es una distribución basada en Debian
GNU/Linux diseñada principalmente para la
auditoría y seguridad informática en general.
• Fue fundada y es mantenida por Offensive
Security Ltd.
• Mati Aharoni y Devon Kearns, ambos
pertenecientes al equipo de Offensive Security,
desarrollaron la distribución a partir de la
reescritura de BackTrack, que se podría
denominar como la antecesora de Kali Linux.
https://www.offensive-security.com/
Jose Manuel Ayala Wilson
EL TERMINAL DE KALI
Jose Manuel Ayala Wilson
EL USUARIO
Jose Manuel Ayala Wilson
COMANDOS DE USUARIO
COMANDO DESCRIPCION
whoami Muestra el usuario actual
id Muestra el usuario actual y sus grupos
w Información sobre el usuario logado
passwd Cambia la contraseña del usuario actual
groups Muestra los grupos a los que pertenece el usuario
logout Desconectarse como usuario (requiere volver a hacer login). Funciona
en sistemas donde la interfaz es el terminal como Ubuntu Server
pkill -u $USER Termina la sesión de usuario en Kali Linux
Jose Manuel Ayala Wilson
FECHA Y HORA
Jose Manuel Ayala Wilson
LA FECHA Y LA HORA
• En seguridad es muy importante que el sistema
tenga la fecha y la hora correctas para poder
identificar e incluso justificar legalmente tanto la
detección de incidentes como las franjas horarias en
que ocurren
• Al cambiar a la zona horaria correcta deberíamos
tener la fecha y la hora correctamente sincronizadas
• Debemos asegurarnos de que Kali tiene la fecha, la
hora y la zona horaria correspondiente a España
(Europe/Madrid) antes de trabajar profesionalmente
con él
• El servicio ntp que está por defecto activado
en Kali se encarga de sincronizar la fecha y la
hora automáticamente según la zona horaria
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Jose Manuel Ayala Wilson
FECHA Y HORA
COMANDO DESCRIPCION
date Muestra la fecha y hora actuales
date +%Y%m%d-%H%M%S Muestra la fecha y la hora como 20210217-043024
sudo date +%Y%m%d -s “20210101” Pone la fecha 01/01/2021 (modo root)
sudo date -s “19 FEB 2021 14:25” Pone la fecha y hora 19/02/2021 14:25 (modo root)
sudo date +%T -s “15:30:00” Pone la hora 15:30:00 (modo root)
cal Muestra el calendario del mes actual
cal <mes> <año> Muestra el calendario del mes y año indicados
cal <año> Muestra el calendario completo del año indicado
timedatectl Ver la hora actual y la zona horaria
timedatectl list-timezones Listar todas las zonas horarias (q para salir)
sudo timedatectl set-timezone <zona> Establecer tu zona horaria segun el listado anterior
Las cadenas de formato son: %Y - año, %m - mes, %d - dia, %H - hora, %M - minutos, %S -
segundos, %T - la hora en formato “hora:minutos:segundos”.
Jose Manuel Ayala Wilson
INFORMACION
DEL
SISTEMA
Jose Manuel Ayala Wilson
SOBRE EL SISTEMA
• A menudo es importante conocer información sobre el
sistema operativo instalado (versión de kernel, nombre
del sistema, arquitectura, etc.)
• Aquí se incluye el uso de la memoria, el espacio libre en
disco y el tiempo que el sistema lleva encendido de
forma continua (uptime)
• El uptime es importante porque revela si alguien o algo
(un malware) ha reiniciado el ordenador provocando una
pérdida de servicio (caso típico en los servidores) y que
podría ser síntoma de un ciberataque
Jose Manuel Ayala Wilson
FICHEROS
Jose Manuel Ayala Wilson
QUE ES UN FICHERO
• Fichero: cualquier información dentro del sistema
operativo a la que se pueda acceder persistida en algún
soporte e identificada por un nombre simbólico
• Normalmente los ficheros en Linux representan la
información grabada en el sistema de ficheros o sistema
de archivos
• Un fichero es un objeto o entidad que tiene un conjunto
de propiedades o metadatos además de su nombre:
tamaño, permisos, usuario que lo creó, grupo al que
pertenece el usuario que lo creó, fecha y hora en que
fué creado o actualizado, etc.
• Los directorios son ficheros capaces de contener otros
ficheros (suelen llamarse directorios en el entorno de
terminal o carpetas en el entorno gráfico por el icono
que los representa)
Jose Manuel Ayala Wilson
NOMBRES DE FICHEROS
• Los ficheros en Linux a diferencia de Windows no tienen
extensiones
• Las extensiones son unos caracteres o abreviaturas que
se añaden al final del nombre de un fichero para poderlo
categorizar a simple vista.
• Así estamos acostumbrados en Windows a que txt son
ficheros texto, docx son documentos de Word, exe son
programas ejecutables, etc.
• En Linux se pueden llamar de cualquier manera, si bien se
recomienda nombres en minúsculas y evitar los espacios
en blanco o sustituirlos por guiones: en lugar de escribir
alumnos de bootcamp mejor escribir alumnos-de-
bootcamp o alumnosdebootcamp sin espacios
• Si un nombre de fichero empieza por un punto
como .clave-oculta, su nombre quedará oculto al listar el
directorio
Jose Manuel Ayala Wilson
openssl rand -out test.txt -base64 100000 Generando un fichero test.txt en formato
base64 con contenido aleatorio de 100,000
bytes (en texto ocupa algo más)
fallocate -l 10M test.dat Generando un fichero test.dat en formato
binario relleno de ceros de 10 MB
Estos comandos nos ayudan a generar ficheros de prueba que luego podemos utilizar con
otros comandos de Linux
Jose Manuel Ayala Wilson
WILDCARDS
Jose Manuel Ayala Wilson
WILDCARDS (COMODINES)
• Los wildcards o comodines son caracteres especiales
que pueden ser utilizados para formar patrones a la
hora de realizar las búsquedas o mostrar el
contenido de los directorios
• Estos caracteres no pueden formar parte del nombre
de ningún fichero en Linux
Jose Manuel Ayala Wilson
COMODINES (WILDCARDS)
WILDCARD DESCRIPCION EJEMPLOS
samba_* Encontrado
samba_??? Encontrado
EDICION
DE
FICHEROS TEXTO
Jose Manuel Ayala Wilson
EDITOR NANO
COMANDO DESCRIPCION
F1 Ayuda del editor
F2 (CTRL-X) Salir del editor
F3 (CTRL-S) Guardar los cambios
F6 Buscar una cadena de caracteres
CTRL-K Cortar un texto seleccionado con las teclas del cursor
CTRL-U Pegar el texto cortado previamente
CTRL-C Donde está el cursor dentro del fichero editado
CTRL-J Justificar el texto del fichero
Para ejecutar nano que muestre los números de línea ejecutar como: nano -l <fichero>
Jose Manuel Ayala Wilson
DIRECTORIOS
Jose Manuel Ayala Wilson
QUE ES UN DIRECTORIO
• Directorio: es un fichero capaz de contener
otros ficheros (en entorno gráfico se le
suele llamar carpeta)
• Los directorios tienen una estructura
jerárquica o en arbol siendo el directorio
principal el directorio raíz simbolizado por /
• A partir de este directorio una ruta dentro
del sistema de ficheros puede incluir varios
directorios separados por slash o barra
inclinada a la derecha (nota que el primer
slash es el directorio raíz y los siguientes
son separadores entre nombres de
directorios o entre nombres de directorios y
nombres de ficheros)
Jose Manuel Ayala Wilson
LISTADO DE DIRECTORIO: ls -l
permisos
Fecha y hora
Tamaño en bytes
propietario
ENLACES (LINKS)
Jose Manuel Ayala Wilson
TIPOS DE ENLACE
• Enlaces duros o físicos (hard links). Es como
un nombre adicional para un archivo existente.
Los enlaces físicos asocian dos o más
nombres de archivo con el mismo inode. Se
pueden crear uno o más enlaces físicos para
un solo archivo. No se pueden crear enlaces
físicos para directorios y archivos en un
sistema de archivos o partición diferente.
• Enlaces blandos (soft links). Es como un atajo
en Windows. Es un puntero indirecto a un
archivo o directorio. A diferencia de un
enlaces duros, un enlace simbólico puede
inode: estructura de datos dentro del apuntar a un archivo o directorio en un
sistema de archivos que guarda atributos sistema de archivos o partición diferente.
del archivo así como los bloques físicos
que ocupa en el disco
Jose Manuel Ayala Wilson
COMANDO LN
COMANDO DESCRIPCION
ln sevilla.txt sevillanos.txt Crea un enlace físico (hard link) llamado sevillanos.txt
para el fichero texto sevilla.txt
ln -s sevilla.txt sev.txt Crea un enlace simbólico llamado sev.txt para el fichero
texto sevilla.txt
cat sev.txt Si mostramos el contenido de sev.txt es el mismo que
sevilla.txt
rm sev.txt Borra el enlace simbólico al fichero sevilla.txt
unlink sev.txt Borra el enlace simbólico al fichero sevilla.txt
ln -s Documents/ MisDocumentos Crea un enlace simbólico llamado MisDocumentos para
el directorio Documents
tree MisDocumentos Muestra el arbol de directorios de MisDocumentos que es
el mismo que el de Documents
unlink MisDocumentos Borra el enlace simbólico al directorio Documents
Jose Manuel Ayala Wilson
LOS PERMISOS
DE
LINUX
Jose Manuel Ayala Wilson
propietario
grupo
Jose Manuel Ayala Wilson
escritura (w) Permite modificar el contenido Permite crear, modificar, borrar, mover y
renombrar ficheros y directorios en ese
directorio
ejecución (x) Permite ejecutar el archivo Permite situarse sobre el directorio para
poder examinar su contenido, copiar
archivos de o hacia él. Si no tienes
permiso de ejecución no podrás copiar o
mover ficheros si este directorio es origen,
destino o forma parte de la ruta
Jose Manuel Ayala Wilson
USUARIOS Y GRUPOS
Jose Manuel Ayala Wilson
BUSQUEDA
DE
FICHEROS
Jose Manuel Ayala Wilson
BUSQUEDAS DE FICHEROS/DIRECTORIOS
• Linux tiene varios comandos para encontrar
ficheros y directorios que cumplan con
determinados criterios
• Estos criterios pueden incluir:
• nombre
• tamaño
• fecha y hora de creación
• permisos
• La búsqueda principal se hace por el nombre y
puede incluir comodines o wildcards
• Entre los comandos de búsqueda de Linux
tenemos:
• find
• locate
• whereis
Jose Manuel Ayala Wilson
OTRAS BUSQUEDAS
COMANDO DESCRIPCION
sudo updatedb Actualiza la base de datos de ficheros desde donde
realiza las búsquedas locate (suele actualizarse de
forma automática también)
locate aircrack-ng Busca esta palabra en todo el sistema de ficheros
locate ls Busca todos los ficheros que contengan “ls” dentro
de su nombre en el sistema de ficheros
locate -c ls Solo muestra el número de ocurrencias encontradas
locate -i ls Ignora en las búsquedas las mayúsculas y
minúsculas
whereis python Busca binarios, ficheros fuente o entradas de
manual para el fichero especificado
which python Muestra la ruta donde se ubica el comando de shell
especificado
Jose Manuel Ayala Wilson
BUSQUEDA
DE
CONTENIDO
Jose Manuel Ayala Wilson
EL COMANDO GREP(1)
COMANDO DESCRIPCION
grep “kali” /etc/passwd Busca la cadena kali en un fichero específico
grep -r “kali” /etc Busca recursivamente -r los ficheros del arbol
completo de directorios de /etc
grep -inor “kali” /etc Busca recursivamente los ficheros del arbol
completo de directorios -r de /etc ignorando
mayúsculas y minúsculas -i, mostrando los números
de línea -n y mostrando solo la cadena encontrada -
o
grep -inor -B 1 -A 1 “kali” /etc Busca recursivamente los ficheros del arbol
completo de directorios -r de /etc ignorando
mayúsculas y minúsculas -i, mostrando los números
de línea -n, mostrando solo la cadena encontrada -o
y dejando una línea por delante -B 1 y una por
detrás -A 1 para separar los ficheros encontrados
Jose Manuel Ayala Wilson
EL COMANDO GREP(2)
COMANDO DESCRIPCION
grep -rl “kali” /etc Muestra solo los nombres de los ficheros -l donde se
encontró kali
sudo grep -c "kali" /etc/passwd Cuenta las ocurrencias de kali -c en el fichero
passwd
sudo grep -vc "kali" /etc/passwd Cuenta las no ocurrencias de kali -vc en el fichero
passwd
sudo grep -rc "kali" /etc Cuenta las ocurrencias de kali en -c cada uno de los
ficheros encontrados
Jose Manuel Ayala Wilson
STREAMS
Jose Manuel Ayala Wilson
REDIRECCIONANDO SALIDAS
COMANDO DESCRIPCION
echo “Hola” > hola.txt Escribe un fichero con la salida del comando echo
cat f1.txt f2.txt > f12.txt Concatena los ficheros f1.txt y f2.txt en f12.txt
cat /etc/passwd > ./usuarios-linux El contenido de /etc/passwd lo copia en el directorio
actual en el fichero usuarios-linux
history > comandos-terminal Guarda los comandos tecleados en el terminal
find / -name "*.txt" 1>ficheros-texto Guarda los nombres de todos los ficheros txt
find ~ -type d > directorios-kali.txt Guarda todos los directorios del usuario kali
find / -type d >> directorios-kali.txt Añade al contenido del fichero directorios-kali.txt los
nuevos directorios encontrados
find / -name "*.txt" 2>/dev/null Elimina la salida de errores
find / -name "*.txt" 2>errores-find.txt Guarda los errores en un fichero
find . 1>/dev/null 2>&1 Envia la salida de errores a donde hayamos enviado la
salida estándar
Jose Manuel Ayala Wilson
REDIRECCIONANDO ENTRADAS
COMANDO DESCRIPCION
wc -l < ficheros-texto Redirecciona el contenido de un fichero al comando
wc y cuenta cuantas líneas tiene
grep < ficheros-texto “password” Encuentra que ficheros llevan la palabra password
grep -n < usuarios-linux “nologin” Encuentra los usuarios que no tienen login permitido
grep -nv < usuarios-linux "nologin" Encuentra los usuarios que podrían hacer login
grep -n < comandos-terminal “find” Encuentra las búsquedas del usuario con find
grep -n < comandos-terminal “rm” Encuentra en comandos-terminal los ficheros o
directorios borrados por el usuario
Jose Manuel Ayala Wilson
PIPES
(TUBERIAS)
Jose Manuel Ayala Wilson
EJEMPLOS DE PIPES(1)
COMANDO DESCRIPCION
ls /bin | more Muestra la lista de ficheros de /bin y la pausa
en terminal
ls /bin | less Muestra la lista de ficheros de /bin y permite
revisarla en terminal con las teclas del cursor
cat ficheros-txt | wc -l Cuenta cuantas líneas hay en ficheros-txt
history | sort Muestra los comandos tecleados en el terminal
ordenados alfabéticamente
history | sort | less Permite revisar los comandos tecleados en el
terminal después de ordenarlos
find / -name "*.txt" -printf "%f\n" 2>/dev/null Muestra los ficheros txt del sistema eliminando
| uniq duplicados
find / -name "*.txt" -printf "%f\n" 2>/dev/null Muestra los ficheros txt del sistema eliminando
| uniq | sort duplicados y ordenandolos
Jose Manuel Ayala Wilson
EJEMPLOS DE PIPES(2)
COMANDO DESCRIPCION
find / -name “*.txt” 2>/dev/null | wc -l Cuenta los ficheros txt que tiene Kali
Linux
find / -name “*.txt” 2>/dev/null | grep “password” Encuentra que ficheros txt tienen la
palabra password en su nombre
cat /etc/passwd | grep “nologin” Encuentra que usuarios no pueden hacer
login
cat /etc/passwd | grep -v “nologin” Encuentra que usuarios podrían hacer
login
history | grep “find” Encuentra las búsquedas con find de un
usuario
history | grep “rm” Encuentra los borrados de un usuario
Jose Manuel Ayala Wilson
TRATAMIENTO
DE
TEXTO
Jose Manuel Ayala Wilson
CREAR CONTENIDO
Vamos a preparar el fichero que usaremos en los
comandos de tratamiento de textos:
find / -name "*.txt" ! -name "[0-9]*.txt" -printf "%f\n"
2>/dev/null > ficheros-texto
Jose Manuel Ayala Wilson
EL COMANDO SORT
COMANDO DESCRIPCION
sort ficheros-texto Ordena el fichero en orden ascendente (a-z)
sort -r ficheros-texto Ordena el fichero en orden descendente (z-a)
sort -R ficheros-texto Ordena el fichero en orden aleatorio
sort -u ficheros-texto Ordena el fichero en orden ascendente eliminando
duplicados
sort -u ficheros-texto -o unicos Escribe la salida sin duplicados en el fichero unico
sort -u ficheros-texto > unicos Escribe la salida sin duplicados en el fichero unico
Jose Manuel Ayala Wilson
EL COMANDO UNIQ
COMANDO DESCRIPCION
uniq -d ficheros-texto Muestra las líneas que tienen duplicados
uniq ficheros-texto Muestra las líneas únicas eliminando duplicados
uniq -u ficheros-texto
uniq -c ficheros-texto Muestra las ocurrencias de cada línea en el fichero
Jose Manuel Ayala Wilson
EL COMANDO COMM
COMANDO DESCRIPCION
comm unicos ficheros-texto Muestra las lineas unicas del primer fichero, las
unicas del segundo fichero y las comunes a
ambos ficheros
comm -1 unicos ficheros-texto Suprime las líneas unicas del primer fichero
comm -2 unicos ficheros-texto Suprime las líneas unicas del segundo fichero
comm -3 unicos ficheros-texto Suprime las líneas comunes entre los dos
ficheros
sort ficheros-texto > f1 && sort unicos > f2 Muestra las líneas comunes entre ficheros-texto
&& comm -12 f1 f2 y unicos (que deberían ser las mismas que
unicos)
Este comando trabaja mejor si los dos ficheros están ordenados de la misma manera
Jose Manuel Ayala Wilson
EL COMANDO DIFF
COMANDO DESCRIPCION
diff -q f1 f2 Reporta si los ficheros son iguales o diferentes
diff -iy f1 f2 Muestra las diferencias a dos columnas e ignora
mayúsculas y minúsculas
diff -iy ficheros-texto unicos Muestra las diferencias a dos columnas e ignora
mayúsculas y minúsculas
diff -r d1 d2 Reporta las diferencias entre dos directorios d1 y d2
Este comando trabaja mejor si los dos ficheros están ordenados de la misma manera
Jose Manuel Ayala Wilson
EL COMANDO TR
COMANDO DESCRIPCION
tr a-z A-Z < unicos Convierte a mayúsculas todo el fichero
tr A-Z a-z < unicos Convierte a minúsculas todo el fichero
tr -d [0-9] < unicos Borra todos los digitos del fichero
tr -d - < unicos Borra el guión del fichero
tr -d _- < unicos Borra el guión bajo y el guión del fichero
tr a-z n-za-m < unicos > encriptados Encripta los nombres de los ficheros
tr a-z n-za-m < encriptados Desencripta los nombres de los ficheros
Jose Manuel Ayala Wilson
EL COMANDO AWK
COMANDO DESCRIPCION
awk '/yahoo/' unicos Muestra todas las líneas que contienen la cadena yahoo
awk '!/yahoo/' unicos Muestra todas las líneas que no contienen la cadena
yahoo
ls -l | awk '{print $1,$9}' Muestra los permisos y el nombre de los ficheros en un
listado de directorio
ps aux | awk '{print $1,$2,$11}' Listado de procesos filtrando el usuario, el PID y el
nombre del proceso
ps aux | awk '{print $1,$NF}' Listado de procesos filtrando la primera y la última
columna
EL COMANDO CUT
COMANDO DESCRIPCION
ls -l | cut -d' ' -f1,3,4 Muestra las columnas 1,3 y 4 de un listado de directorios.
El separador con -d es el espacio en blanco
cut -d':' -f1 /etc/passwd Muestra la columna 1 del fichero de usuarios
cut -d':' -f1,7 /etc/passwd Muestra las columnas 1 y 7 separadas por dos puntos
cut -d':' -f1-7 /etc/passwd Muestra las columnas de la 1 a la 7 separadas por dos
puntos
cut -d':' -f1-7 --output-delimiter=’ ’ Muestra las columnas de la 1 a la 7 separadas por
/etc/passwd espacio en blanco en vez de por dos puntos
Jose Manuel Ayala Wilson
PROCESOS Y
SERVICIOS
(DEMONIOS)
Jose Manuel Ayala Wilson
HILOS DE PROCESO
• Los hilos son similares a los procesos ya que ambos
representan una secuencia simple de instrucciones
• ejecutada en paralelo con otras secuencias.
• Los hilos son una forma de dividir un programa en
dos o más tareas que corren simultáneamente,
compitiendo, en algunos casos, por la CPU.
• La diferencia más significativa entre los procesos y
los hilos, es que los primeros son típicamente
independientes, llevan bastante información de
estados, e interactúan sólo a través de mecanismos
de comunicación dados por el sistema.
• Por otra parte, los hilos generalmente comparten la
memoria, es decir, acceden a las mismas variables
• globales o dinámicas, por lo que no necesitan
costosos mecanismos de comunicación para
sincronizarse.
Jose Manuel Ayala Wilson
COMANDOS DE PROCESOS
COMANDO DESCRIPCION
top Muestra los procesos en ejecución (salir con q)
ps aux Muestra los procesos con información detallada
ps axjf Muestra los procesos y sus dependencias en árbol
pstree -AGu Muestra los procesos y sus usuarios en forma de árbol
ps -eo user,pid,tty Muestra las información seleccionada sobre procesos
ps -eF Muestra información detallada sobre los procesos
kill -9 <pid> Mata un proceso por su PID
killall -KILL <nombre> Mata un proceso por su nombre
nice -n <prioridad> <comando> Ejecuta un comando con prioridad entre -20 (más alta) y 19
(más baja). Por defecto la prioridad es 0 y solo root pueda
dar prioridades negativas que son más altas
renice <prioridad> <pid> Permite cambiar la prioridad de un proceso en ejecución
ps -el Permite ver prioridades de los procesos (columna NI)
Jose Manuel Ayala Wilson
SERVICIOS
• Un servicio es un programa que se ejecuta en
segundo plano, fuera del control interactivo de los
usuarios del sistema, ya que carecen de una interfaz.
• Esto con el fin de proporcionar aún más seguridad,
pues algunos de estos servicios son cruciales para el
funcionamiento del sistema operativo.
• Por otro lado, en sistemas como Unix o Linux, los
servicios también se conocen como daemons o
demonios.
• A veces el nombre de estos servicios, o daemons,
terminan con la letra d. Por ejemplo, sshd es el
nombre del servicio que maneja SSH.
• Podemos ver los ficheros de control de los servicios
del sistema en el directorio /etc/init.d
Jose Manuel Ayala Wilson
COMANDOS DE SERVICIOS
COMANDO DESCRIPCION
sudo service --status-all Lista los servicios del sistema (+ activos y - inactivos)
sudo service <serv> start Arranca un servicio
sudo service <serv> stop Detiene un servicio
sudo service <serv> status Muestra el estado de un servicio (arrancado o parado)
sudo systemctl list-unit-files -- Estado de los servicios del sistema
type service --all
sudo systemctl start <serv> Arranca un servicio
sudo systemctl stop <serv> Detiene un servicio
sudo systemctl status <serv> Muestra el estado de un servicio (arrancado o parado)
sudo systemctl enable <serv> Al arrancar el sistema arranca el servicio automáticamente
sudo systemctl disable <serv> Al arrancar el sistema no arranca el servicio
Jose Manuel Ayala Wilson
ACTUALIZAR
EL
SISTEMA
Jose Manuel Ayala Wilson
ACTUALIZAR EL SISTEMA
• Actualizar el sistema se refiere a instalar nuevos
paquetes, borrar paquetes existentes o actualizar la
versión de los paquetes instalados o del propio
kernel del sistema operativo
• Las actualizaciones pueden ser críticas desde el
punto de vista de la estabilidad y seguridad del
sistema operativo además de añadir nuevas
funcionalidades o eliminar las que no usamos
• En este módulo vamos a estudiar la actualización
de sistemas tipo Debian (Debian, Ubuntu, Kali)
• Otras distros como Fedora tienen otros comandos
de actualización
Jose Manuel Ayala Wilson
EL COMANDO APT
COMANDO DESCRIPCION
sudo apt update Actualiza la lista de paquetes
sudo apt --fix-missing update Actualiza la lista verificando que no existan nuevas
versiones
sudo apt upgrade Actualiza de forma segura el sistema
sudo apt autoremove Borra los paquetes que no se usan
sudo apt autoclean Borra todos los paquetes antiguos descargados
sudo apt install -f Actualiza los paquetes rotos durante una actualización
sudo apt install <paquete> Instala un paquete
sudo apt remove <paquete> Desinstala un paquete
sudo apt purge <paquete> Desinstala un paquete y su configuración
sudo apt-cache search <paquete> Busca un paquete en los repositorios
sudo apt version <paquete> Muestra la versión de un paquete instalado
Jose Manuel Ayala Wilson
EL COMANDO DPKG
COMANDO DESCRIPCION
sudo dpkg -i <paquete> Instala el paquete normalmente desde un fichero .deb
descargado en nuestro ordenador
sudo dpkg -r <paquete> Desinstala un paquete del sistema
sudo dpkg -P <paquete> Desinstala un paquete y elimina su configuración
dpkg -l Lista los paquetes instalados en el sistema
dpkg -s <paquete> Verifica si un paquete está instalado o no
sudo dpkg --configure -a Actualiza paquetes rotos
Jose Manuel Ayala Wilson
COMPRESION
DE
FICHEROS
Jose Manuel Ayala Wilson
COMPRESION DE FICHEROS
• La compresión de ficheros es un mecanismo muy
utilizado en los sistemas operativos para ahorrar
espacio en disco y en general en cualquier
transmisión de datos
• Consiste en unos algoritmos matemáticos que
permiten compactar la información redundante en
un fichero o grupo de ficheros haciéndolos más
pequeños (pueden comprimirse directorios)
• La operación inversa a comprimir un fichero sería
descomprimirlo, para lo cuál vamos a necesitar el
correspondiente espacio en el disco.
• Los datos solo pueden usarse descomprimidos!!!
• Existen muchos métodos de compresión en Linux,
entre ellos: tar.gz, zip, rar, lzma, 7zip, xz, gzip, bzip,
etc.
Jose Manuel Ayala Wilson
TIPOS DE COMPRESION
Compresión en volumen único: todos los ficheros o directorios a
comprimir se meten dentro de un único fichero que ocupará el
tamaño que necesite. Puede ser enorme y difícil de enviar por correo,
de copiar en un disco externo o pendrive e incluso de descargar
desde un almacenamiento en la nube.
Los ficheros tar que estén comprimidos con gz o bz2 no se pueden actualizar (añadir nuevos
ficheros)
Jose Manuel Ayala Wilson
EL COMANDO GZIP
COMANDO DESCRIPCION
gzip <fichero-a-comprimir> Crea el fichero con extensión .gz y borra el fichero
original
gzip -k <fichero-a-comprimir> Crea el fichero con extensión .gz y manteniendo el
fichero original
gzip fich1 fich2 fich3 Comprime múltiples ficheros creando fich1.gz, fich2.gz
y fich3.gz
gzip -r <directorio> Comprime todos los ficheros de un directorio
incluyendo los contenidos en subdirectorios
gzip -d <fichero-a-descomprimir> Descomprime un fichero y borra el .gz
gzip -dk <fichero-a-descomprimir> Descomprime un fichero y mantiene el .gz
gzip -dr <directorio> Descomprime todos los ficheros del directorio
gzip -d fich1.gz fich2.gz Descomprime múltiples ficheros
gzip -l fich1.gz Lista el contenido del fichero .gz
Jose Manuel Ayala Wilson
EL COMANDO 7ZIP
COMANDO DESCRIPCION
7z a fich.7z fich1 fich2 fich3 Añade los ficheros fich1, fich2 y fich3 a fich.7z
7z a dir.7z mydir/ Comprime en dir.7z el arbol de directorios mydir
7z e fich.7z Extrae los ficheros de fich.7z sin directorios
7z x fich.7z Extrae los ficheros de fich.7z con sus directorios
7z t fich.7z Comprueba la integridad de fich.7z
7z l fich.7z Muestra la lista de ficheros de fich.7z
7z a -p fich.7z fich1 Comprime fich1 en fich con una contraseña
7z a -v10m fich.7z fich1 Comprime fich1 en fich.7z generando volúmenes de 10
MB. Pueden crearse con -v<tamaño><unidad> donde
estas pueden ser b para bytes, k para kilobytes, m
para megabytes o g para gigabytes
Jose Manuel Ayala Wilson
EL COMANDO RAR
COMANDO DESCRIPCION
rar a fich.rar fich1 fich2 fich3 Añade los ficheros fich1, fich2 y fich3 a fich.rar
rar a dir.rar mydir/ Comprime en dir.rar el arbol de directorios mydir
rar e fich.rar Extrae los ficheros de fich.rar sin directorios
rar x fich.rar Extrae los ficheros de fich.rar con sus directorios
rar t fich.rar Comprueba la integridad de fich.rar
rar l fich.rar Muestra la lista de ficheros de fich.rar
rar a -p fich.rar fich1 Comprime fich1 en fich con una contraseña
rar a -v10m fich.rar fich1 Comprime fich1 en fich.rar generando volúmenes de
10 MB. Pueden crearse con -v<tamaño><unidad>
donde estas pueden ser b para bytes, k para kilobytes,
m para megabytes o g para gigabytes
Jose Manuel Ayala Wilson
COMANDOS
DE
RED
Jose Manuel Ayala Wilson
COMANDOS DE RED
• Los comandos de red nos permiten:
• Verificar las comunicaciones a través de la red
de nuestra máquina Linux
• Conocer las interfaces de red del sistema
• Ver estadísticas de la transmisión de datos
• Cambiar configuraciones de la red
• Ver las conexiones de red de los procesos
Jose Manuel Ayala Wilson
EL COMANDO IFCONFIG
COMANDO DESCRIPCION
ifconfig Muestra la configuración de todas las interfaces de red
ifconfig -s Muestra la configuración en forma de tabla
ifconfig eth0 Muestra la configuración de la interfaz eth0
sudo ifconfig eth0 down Desactiva la interfaz eth0
sudo ifconfig eth0 up Activa la interfaz eth0
sudo ifconfig eth0 hw ether <mac> Cambiamos la dirección MAC con la interfaz
desactivada (en la máquina virtual lo hacemos en la
configuración de red)
Jose Manuel Ayala Wilson
EL COMANDO IP
COMANDO DESCRIPCION
ip addr show Muestra la configuración de todas las interfaces de red
(también se puede ejecutar como ip a)
ip route Verificar la puerta de enlace predeterminada
ip addr show eth0 Muestra la configuración de la interfaz eth0
sudo ip link set eth0 down Desactiva la interfaz eth0
sudo ip link set eth0 up Activa la interfaz eth0
ip -s link Ver las estadísticas de uso de las interfaces de red
Jose Manuel Ayala Wilson
EL COMANDO NETSTAT
COMANDO DESCRIPCION
netstat -a Lista todas las conexiones
netstat -at Lista todas las conexiones TCP
netstat -au Lista todas las conexiones UDP
netstat -lnt Lista conexiones en escucha (puertos abiertos)
sudo netstat -lnpt Lista las conexiones en escucha (puertos
abiertos) y los procesos que las tienen
sudo netstat -ltpe Lista las conexiones en escucha (puertos
abiertos) y los procesos y usuarios que las
tienen
netstat -s Muestra estadísticas por protocolo
sudo netstat -atnp | grep ESTA Muestra las conexiones activas
sudo watch -d -n0 "netstat -atnp | grep ESTA" Vigila las conexiones activas
Jose Manuel Ayala Wilson
EL COMANDO SS
COMANDO DESCRIPCION
ss Listar todas las conexiones
ss -a Listar las conexiones de todos los puertos
ss -l Listar las conexiones que escuchan
ss -lt Listas todas las conexiones tcp que escuchan
ss -lu Listar todas las conexiones udp que escuchan
sudo ss -ltp Listar todas las conexiones tcp que escuchan con sus
procesos
sudo ss -lup Listar todas las conexiones udp que escuchan con sus
procesos
ss -at '( dport = :22 or sport = :22 )' Filtrando conexiones por el número de puerto
ss -at '( dport = :ssh or sport = :ssh)' Filtrando conexiones por el protocolo equivalente
Jose Manuel Ayala Wilson
EL PLANIFICADOR
DE
TAREAS
Jose Manuel Ayala Wilson
QUE ES CRON
• El nombre cron viene del griego chronos que
significa “tiempo”.
• En el sistema operativo Unix/Linux, cron es un
planificador de tareas o administrador de procesos
en segundo plano que ejecuta tareas o scripts a
intervalos regulares (por ejemplo, cada minuto, día,
semana o mes).
• Los procesos que deben ejecutarse y la hora en la
que deben hacerlo se especifican en el fichero
crontab.
• El demonio cron inicia de /etc/rc.d/ o /etc/init.d
dependiendo de la distribucion.
• Cron se ejecuta en el background, revisa cada
minuto la tabla de tareas crontab /etc/crontab o en
/var/spool/cron en búsqueda de tareas que se
deban cumplir.
Jose Manuel Ayala Wilson
CRONTAB
• Crontab es un simple archivo de texto que guarda
una lista de comandos a ejecutar en un tiempo
especificado por el usuario.
• Crontab verificará la fecha y hora en que se debe
ejecutar el script o el comando, los permisos de
ejecución y lo realizará en background.
• Cada usuario puede tener su propio archivo crontab,
de hecho el /etc/crontab se asume que es el archivo
crontab del usuario root, cuando los usuarios
normales (e incluso root) desean generar su propio
archivo de crontab, entonces utilizaremos el
comando crontab.
• Crontab es la manera mas sencilla de administrar
tareas de cron en sistemas multiusuario, ya sea
como simple usuario de sistema o usuario root.
Jose Manuel Ayala Wilson
• Una entrada del archivo crontab para ejecutar por tiempo un proceso tiene el
siguiente formato:
• m corresponde al minuto (0..59)
• h la hora exacta (0..23)
• dom hace referencia al día del mes, por ejemplo se puede especificar 15 si se
quiere ejecutar cada dia 15
• dow significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son
domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat,
sun.
• command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo:
/home/usuario/scripts/actualizar.sh
• Las líneas que empiezan con # son comentarios y no son tenidas en cuenta
Jose Manuel Ayala Wilson
EJEMPLOS DE CRONTAB
ENTRADA DE CRONTAB DESCRIPCION
* * * * * /home/kali/porminuto.sh Ejecuta un script cada minuto
30 10 * * * /home/kali/donikto.sh Ejecuta un script todos los días a las 10:30
00 10 * * 0 /root/dominical.sh Ejecuta el script los domingos a las 10:00
30 7 20 11 * /home/kali/doskipfish.sh Ejecuta el script el 20 de noviembre a las 07:30
@reboot /home/kali/upkali.sh Ejecuta el scrip después de un reboot
@yearly /home/kali/anual.sh Ejecuta el script una vez al año 0 0 1 1 *
@annually /home/kali/anual.sh Ejecuta el script una vez al año 0 0 1 1 *
@monthly /home/kali/mensual.sh Ejecuta el script una vez al mes 0 0 1 * *
@weekly /home/kali/semanal.sh Ejecuta el script una vez a la semana 0 0 * * 0
@daily /home/kali/diario.sh Ejecuta el script una vez al dia 0 0 * * *
@hourly /home/kali/cadahora.sh Ejecuta el script cada hora 0 * * * *
Jose Manuel Ayala Wilson
COMANDOS DE CRON
COMANDO DESCRIPCION
crontab -e Abre el fichero de crontab del usuario actual
sudo crontab -e Abre el fichero de crontab del usuario root
crontab -l Lista todas las tareas del crontab del usuario
crontab -r Borra el contenido del crontab del usuario
crontab -i Pregunta antes de borrar el contenido del crontab del usuario
crontab -u <usuario> Referencia el crontab de un usuario específico