GNU/Linux >> Belajar Linux >  >> Linux

Shell Script mktemp, apa metode terbaik untuk membuat pipa bernama sementara?

tmppipe=$(mktemp -u)
mkfifo -m 600 "$tmppipe"

Tidak seperti pembuatan file biasa, yang cenderung dibajak oleh file yang sudah ada atau tautan simbolik, pembuatan pipa nama melalui mkfifo atau fungsi yang mendasari membuat file baru di tempat yang ditentukan atau gagal. Sesuatu seperti : >foo tidak aman karena jika penyerang dapat memprediksi output dari mktemp maka penyerang dapat membuat file target untuk dirinya sendiri. Tapi mkfifo foo akan gagal dalam skenario seperti itu.

Jika Anda memerlukan portabilitas POSIX penuh, mkfifo -m 600 /tmp/myfifo aman terhadap pembajakan tetapi rentan terhadap penolakan layanan; tanpa akses ke generator nama file acak yang kuat, Anda perlu mengelola percobaan ulang.

Jika Anda tidak peduli dengan masalah keamanan halus seputar file sementara, Anda dapat mengikuti aturan sederhana:buat direktori pribadi, dan simpan semuanya di sana.

tmpdir=
cleanup () {
  trap - EXIT
  if [ -n "$tmpdir" ] ; then rm -rf "$tmpdir"; fi
  if [ -n "$1" ]; then trap - $1; kill -$1 $$; fi
}
tmpdir=$(mktemp -d)
trap 'cleanup' EXIT
trap 'cleanup HUP' HUP
trap 'cleanup TERM' TERM
trap 'cleanup INT' INT
mkfifo "$tmpdir/pipe"

Alternatif yang lebih aman adalah menggunakan mktemp untuk membuat direktori dengan aman, lalu letakkan pipa bernama Anda di dalam direktori itu, lakukan rm -R $dir untuk menyingkirkannya pada akhirnya.


Gunakan opsi "dry-run":

mkfifo $(mktemp -ut pipe.XXX)

Linux
  1. Apa Artinya `:-` Dalam Skrip Shell?

  2. Bagaimana Membuat File Sementara Di Shell Script?

  3. Pipa Ke Banyak File Di Shell?

  1. Arti dari $? Dalam Skrip Shell?

  2. Apa VPS Terbaik:Windows atau Linux?

  3. Apa perbedaan antara menjalankan skrip Bash vs sumbernya?

  1. Deteksi Sistem Init Menggunakan Shell?

  2. Apa metode kompresi SquashFS?

  3. Apa cara terbaik untuk memeriksa apakah volume dipasang di skrip Bash?