mktemp
randomizza il nome. È molto importante dal punto di vista della sicurezza.
Immagina di fare qualcosa del tipo:
echo something > /tmp/temporary-file
nel tuo script di root.
E qualcuno (che ha letto il tuo copione) lo fa
ln -s /etc/passwd /tmp/temporary-file
prima.
Ciò risulta in /etc/passwd
essere sovrascritto, e potenzialmente può significare diverse cose spiacevoli a partire dal sistema che si rompe e che finisce con il sistema che viene violato (quando l'input something
potrebbe essere realizzato con cura).
Il mktemp
command potrebbe aiutarti in questa situazione:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
Ora questo ln /etc/passwd
l'attacco non funzionerà.
Una breve panoramica sulla storia di mktemp :Il mktemp
Il comando è stato inventato dalla gente di OpenBSD ed è apparso per la prima volta in OpenBSD 2.1 nel 1997. Il loro obiettivo era migliorare la sicurezza degli script di shell. In precedenza la norma era aggiungere $$
a nomi di file temporanei, che era assolutamente insicuro. Ora tutti i sistemi UNIX/Linux hanno mktemp
o le sue alternative, ed è diventato uno standard di fatto. Abbastanza divertente, l'mktemp
La funzione C è stata deprecata perché non sicura.
Spesso si desidera un "file scratchpad" (o directory). Inoltre, potresti aver bisogno di più di questi file contemporaneamente e non vuoi preoccuparti di capire come nominarli in modo che non ci siano conflitti.
"mktemp" è perfetto :)