mktemp
aleatoriza el nombre. Es muy importante desde el punto de vista de la seguridad.
Solo imagina que haces algo como:
echo something > /tmp/temporary-file
en su script de ejecución raíz.
Y alguien (que ha leído tu guión) lo hace
ln -s /etc/passwd /tmp/temporary-file
antes.
Esto da como resultado /etc/passwd
se sobrescribe, y potencialmente puede significar diferentes cosas desagradables, comenzando por que el sistema se rompa y terminando con el sistema pirateado (cuando la entrada something
podría ser cuidadosamente elaborado).
El mktemp
El comando podría ayudarte en esta situación:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
Ahora este ln /etc/passwd
el ataque no funcionará.
Una breve mirada a la historia de mktemp :El mktemp
El comando fue inventado por la gente de OpenBSD y apareció por primera vez en OpenBSD 2.1 en 1997. Su objetivo era mejorar la seguridad de los scripts de shell. Anteriormente, la norma había sido agregar $$
a nombres de archivos temporales, lo cual era absolutamente inseguro. Ahora todos los sistemas UNIX/Linux tienen mktemp
o sus alternativas, y se convirtió en estándar de facto. Bastante gracioso, el mktemp
La función C quedó obsoleta por no ser segura.
A menudo desea un "archivo de bloc de notas" (o directorio). Además, es posible que necesite varios archivos de este tipo al mismo tiempo, y no querrá molestarse en averiguar cómo nombrarlos para que no haya conflicto.
"mktemp" encaja a la perfección :)