tmppipe=$(mktemp -u)
mkfifo -m 600 "$tmppipe"
Tidak seperti pembuatan file biasa, yang cenderung dibajak oleh file yang ada atau tautan simbolik, pembuatan pipa nama melalui mkfifo
atau fungsi yang mendasarinya membuat file baru di tempat yang ditentukan atau gagal. Sesuatu seperti : >foo
ini tidak aman karena jika penyerang dapat memprediksi output mktemp
maka penyerang dapat membuat file target untuk dirinya sendiri. Tetapi mkfifo foo
akan gagal dalam skenario seperti itu.
Jika Anda membutuhkan 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 mengatur upaya coba lagi.
Jika Anda tidak peduli dengan masalah keamanan halus di sekitar file sementara, Anda dapat mengikuti aturan sederhana: membuat direktori pribadi, dan menyimpan semuanya di sana.
tmpdir=
cleanup () {
if [ -n "$tmpdir" ] ; then rm -rf "$tmpdir"; fi
if [ -n "$1" ]; then kill -$1 $$; fi
}
tmpdir=$(mktemp -d)
trap 'cleanup' EXIT
trap 'cleanup HUP' HUP
trap 'cleanup TERM' TERM
trap 'cleanup INT' INT
mkfifo "$tmpdir/pipe"