The mktemp(1)
man page menjelaskan dengan cukup baik:
Secara tradisional, banyak skrip shell menggunakan nama program dengan pid sebagai suffix dan menggunakannya sebagai nama file sementara. Skema penamaan semacam ini dapat diprediksi dan kondisi balapan yang dibuatnya mudah bagi penyerang untuk menang. Pendekatan yang lebih aman, meskipun masih lebih rendah, adalah membuat direktori sementara menggunakan skema penamaan yang sama. Meskipun hal ini memungkinkan seseorang untuk menjamin bahwa file sementara tidak akan ditumbangkan, itu masih memungkinkan penolakan serangan layanan sederhana. Untuk alasan ini disarankan agar mktemp digunakan sebagai gantinya.
Dalam sebuah skrip, saya memanggil sesuatu seperti mktemp
mydir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
yang membuat direktori sementara saya dapat bekerja, dan di mana saya dapat dengan aman memberi nama file aktual sesuatu yang dapat dibaca dan berguna.
mktemp
bukan standar, tetapi ada pada banyak platform. "X" umumnya akan dikonversi menjadi beberapa keacakan, dan lebih banyak mungkin akan lebih acak; Namun, beberapa sistem (busybox ash, untuk satu) membatasi keacakan ini lebih signifikan daripada yang lain
Omong-omong, pembuatan file sementara yang aman penting untuk lebih dari sekadar skrip shell. Itu sebabnya python memiliki tempfile , perl memiliki File :: Temp , ruby memiliki Tempfile , dll ...