mktemp
randomise le nom. C'est très important du point de vue de la sécurité.
Imaginez que vous fassiez quelque chose comme :
echo something > /tmp/temporary-file
dans votre script d'exécution racine.
Et quelqu'un (qui a lu votre script) le fait
ln -s /etc/passwd /tmp/temporary-file
avant.
Cela donne /etc/passwd
être écrasé, et potentiellement cela peut signifier différentes choses désagréables à partir du système devient cassé, et se terminant par le système devient piraté (lorsque l'entrée something
pourrait être soigneusement conçu).
Le mktemp
commande pourrait vous aider dans cette situation :
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
Maintenant ce ln /etc/passwd
l'attaque ne fonctionnera pas.
Un bref aperçu de l'histoire de mktemp :Le mktemp
La commande a été inventée par les gens d'OpenBSD et est apparue pour la première fois dans OpenBSD 2.1 en 1997. Leur objectif était d'améliorer la sécurité des scripts shell. Auparavant, la norme était d'ajouter $$
aux noms de fichiers temporaires, ce qui n'était absolument pas sûr. Désormais, tous les systèmes UNIX/Linux ont soit mktemp
ou ses alternatives, et il est devenu standard de facto. Assez drôle, le mktemp
La fonction C a été dépréciée car non sécurisée.
Vous voulez souvent un "fichier bloc-notes" (ou répertoire). De plus, vous pourriez avoir besoin de plusieurs fichiers de ce type en même temps, et vous ne voulez pas vous embêter à trouver comment les nommer afin qu'il n'y ait pas de conflit.
"mktemp" fait l'affaire :)