GNU/Linux >> Belajar Linux >  >> Linux

Mengapa kita membutuhkan mktemp?

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 :)


Linux
  1. Mengapa kebutuhan saya akan kontrol membuat saya beralih ke Linux

  2. Mengapa Anda perlu menghapus ifconfig untuk ip

  3. Mengapa Pengguna Root Membutuhkan Izin Sudo?

  1. Mengapa Pc Membeku Saat Saya Menyalin File Ke Flashdisk?

  2. Mengapa stdout perlu pembilasan eksplisit saat dialihkan ke file?

  3. Mengapa kita membutuhkan file .so.1 di Linux?

  1. Mengapa dentang masih membutuhkan libgcc.a untuk mengkompilasi kode saya?

  2. Mengapa ada kebutuhan untuk memodifikasi tabel system call di Linux?

  3. Mengapa pengguna 'bin' memerlukan shell login?