Saya telah membaca bahwa mengarahkan keluaran ke file nama tetap di /tmp
dapat menjadi risiko keamanan, karena jika penyerang (atau tidak puas) memperhatikan bahwa file /tmp/tmpfileformyscript.tmp
dibuat ketika saya menjalankan skrip saya (bahkan jika dia tidak memiliki akses baca ke saya script), misalnya dia dapat membuat symlink ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
yang akan menyebabkan saya menghancurkan .bashrc
file saya ketika saya menjalankan script saya.
Jadi sebagai gantinya saya bisa menggunakan sesuatu seperti filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
.
Namun, saya ingin menggunakan file tmp untuk caching kadang-kadang, dalam hal ini saya ingin tahu apakah "tmpfile.tmp. *" Cocok dengan apa pun di dalam /tmp
dan jika demikian, gunakan file itu daripada membuat yang baru. Sayangnya test
dan yang setara [ -f filename ]
tidak mendukung globbing file sejauh yang saya tahu.
Jadi pertanyaan saya ada dua:
- Bagaimana saya bisa dengan aman membuat tempfile? Apakah
"predictablename.$RANDOM"
praktik yang dapat diterima atau ada cara yang lebih baik (lebih aman, lebih mudah)? - Bagaimana saya dapat dengan mudah mengakses file dan / atau membangun keberadaannya nanti dengan memeriksa
predictablename
?
$TMPDIR
dan~/.cache
persis apa yang saya butuhkan. Setelah beberapa pemikiran lebih lanjut, saya menyadari bahwa satu-satunya alasan saya menginginkannya/tmp
adalah mempartisi — sehingga cache tidak dapat mengisi/home
partisi. Tetapi untuk use case ini benar-benar non-isu lengkap, jadi subdirektori~/.cache
sesuai dengan kebutuhan saya dengan sempurna dan menghindari masalah keamanan.