Crea archivos y directorios temporales seguros en GNU/Linux con mktemp, evitando conflictos y problemas de seguridad en scripts.


En la administración de sistemas GNU/Linux es habitual que scripts y aplicaciones necesiten crear ficheros o directorios temporales para almacenar datos intermedios durante su ejecución. Gestionar estos archivos manualmente puede provocar problemas de seguridad, especialmente si se crean en rutas compartidas como /tmp.

El comando mktemp permite crear archivos y directorios temporales de forma segura, generando nombres únicos y evitando colisiones con otros procesos del sistema. Por este motivo es una herramienta ampliamente utilizada en scripts de shell y automatizaciones.

¿Para qué se usa el comando mktemp?

El comando mktemp se utiliza para crear archivos o directorios temporales con nombres únicos.

Su principal objetivo es evitar problemas de seguridad o conflictos que pueden aparecer si se crean archivos temporales con nombres predecibles. Cuando mktemp genera un archivo o directorio, lo hace utilizando un nombre aleatorio basado en una plantilla.

Entre los usos más habituales se encuentran:

  • Crear archivos temporales dentro de scripts.
  • Generar directorios temporales para almacenar datos de proceso.
  • Evitar sobrescribir archivos existentes.
  • Garantizar que el nombre del archivo temporal no pueda ser adivinado fácilmente.

Normalmente estos archivos se crean en el directorio /tmp, aunque también se pueden generar en cualquier otra ruta.

Sintaxis básica

La sintaxis general del comando es la siguiente:

mktemp [OPCIONES] [PLANTILLA]

Donde:

  • OPCIONES permite modificar el comportamiento del comando.
  • PLANTILLA define el patrón del nombre del archivo o directorio que se creará.

Si no se especifica una plantilla, mktemp generará automáticamente un nombre temporal en el directorio /tmp.

Ejemplos del comando mktemp

A continuación se muestran algunos ejemplos prácticos del uso de mktemp y de sus opciones más utilizadas.

Crear un archivo temporal

El uso más simple de mktemp genera un archivo temporal con un nombre único:

mktemp

Salida de ejemplo:

/tmp/tmp.Qw3e4a9K

El archivo se crea automáticamente y el comando muestra su ruta completa.

Crear un archivo temporal con plantilla

Podemos especificar una plantilla para controlar parcialmente el nombre del archivo. La plantilla debe contener al menos tres caracteres X, que serán sustituidos por caracteres aleatorios.

mktemp archivoXXXXXX

Salida posible:

archivoA7F3k9

Crear un archivo temporal en /tmp con un prefijo personalizado

mktemp /tmp/script_t3rr0rz0n3_XXXXXX

Ejemplo de salida:

/tmp/script_t3rr0rz0n3_x8K4Qp

Esto es útil cuando varios scripts generan archivos temporales y se desea identificar fácilmente su origen.

Crear un directorio temporal

Si en lugar de un archivo necesitamos un directorio temporal, se utiliza la opción -d:

mktemp -d

Salida de ejemplo:

/tmp/tmp.bYk29sdf

Esto crea un directorio temporal seguro que puede utilizarse para almacenar archivos durante la ejecución de un script.

Crear un directorio temporal con plantilla

También es posible combinar -d con una plantilla:

mktemp -d /tmp/build_t3rr0rz0n3_XXXXXX

Salida posible:

/tmp/build_t3rr0rz0n3_Jk82Lm

Mostrar el directorio temporal utilizado

La opción --tmpdir permite indicar que el archivo debe crearse dentro del directorio temporal del sistema.

mktemp --tmpdir archivoXXXXXX

Normalmente esto equivale a crearlo en /tmp, aunque depende de la configuración del sistema.

Crear múltiples archivos temporales

Podemos usar mktemp dentro de scripts para generar varios archivos únicos:

tmpfile1=$(mktemp)
tmpfile2=$(mktemp)

echo "Primer archivo temporal: $tmpfile1"
echo "Segundo archivo temporal: $tmpfile2"

Esto garantiza que ambos archivos tengan nombres únicos.

Uso en scripts para procesamiento temporal

Un uso típico dentro de scripts sería:

tmpfile=$(mktemp)
echo "Procesando datos..." > "$tmpfile"
cat "$tmpfile"
rm "$tmpfile"

Este método evita conflictos con otros procesos y mejora la seguridad del script.

Conclusión

El comando mktemp es una herramienta fundamental cuando se trabajan scripts o aplicaciones que necesitan crear archivos o directorios temporales de forma segura. Su capacidad para generar nombres únicos evita problemas comunes relacionados con colisiones de archivos o vulnerabilidades de seguridad.

Utilizar mktemp en lugar de crear archivos temporales manualmente es una buena práctica en la administración de sistemas GNU/Linux y en el desarrollo de scripts robustos.


¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux
Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación