mktemp
mengacak nama. Ini sangat penting dari sudut pandang keamanan.
Bayangkan saja Anda melakukan sesuatu seperti:
echo something > /tmp/temporary-file
dalam skrip root-running Anda.
Dan seseorang (yang telah membaca skrip Anda) melakukannya
ln -s /etc/passwd /tmp/temporary-file
sebelumnya.
Ini menghasilkan /etc/passwd
ditimpa, dan berpotensi dapat berarti berbagai hal tidak menyenangkan mulai dari sistem menjadi rusak, dan diakhiri dengan sistem menjadi diretas (ketika input something
bisa dibuat dengan hati-hati).
mktemp
perintah dapat membantu Anda dalam situasi ini:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
Sekarang ini ln /etc/passwd
serangan tidak akan berhasil.
Wawasan singkat tentang sejarah mktemp :mktemp
perintah ditemukan oleh orang-orang OpenBSD, dan pertama kali muncul di OpenBSD 2.1 pada tahun 1997. Tujuan mereka adalah untuk meningkatkan keamanan skrip shell. Sebelumnya normanya adalah menambahkan $$
ke nama file sementara, yang sama sekali tidak aman. Sekarang semua sistem UNIX/Linux memiliki mktemp
atau alternatifnya, dan menjadi standar de-facto. Cukup lucu, mktemp
Fungsi C tidak digunakan lagi karena tidak aman.
Anda sering menginginkan "file scratchpad" (atau direktori). Selain itu, Anda mungkin memerlukan beberapa file seperti itu pada saat yang sama, dan Anda tidak ingin repot mencari tahu cara menamainya agar tidak terjadi konflik.
"mktemp" cocok dengan tagihan :)