Saya telah membaca bahwa mengarahkan keluaran ke file nama tetap di /tmpdapat menjadi risiko keamanan, karena jika penyerang (atau tidak puas) memperhatikan bahwa file /tmp/tmpfileformyscript.tmpdibuat 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.tmpyang akan menyebabkan saya menghancurkan .bashrcfile 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 /tmpdan jika demikian, gunakan file itu daripada membuat yang baru. Sayangnya testdan 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?
$TMPDIRdan~/.cachepersis apa yang saya butuhkan. Setelah beberapa pemikiran lebih lanjut, saya menyadari bahwa satu-satunya alasan saya menginginkannya/tmpadalah mempartisi — sehingga cache tidak dapat mengisi/homepartisi. Tetapi untuk use case ini benar-benar non-isu lengkap, jadi subdirektori~/.cachesesuai dengan kebutuhan saya dengan sempurna dan menghindari masalah keamanan.