Я читав, що перенаправлення виводу у файл з фіксованим іменем /tmp
може бути ризиком для безпеки, тому що якщо зловмисник (або невмілий вміст) помітить, що файл /tmp/tmpfileformyscript.tmp
створюється під час запуску сценарію (навіть якщо він не має доступу до читання до мого скрипт), він, наприклад, може зробити симпосилання, ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
яке змусить мене знищити .bashrc
файл під час запуску сценарію.
Тож замість цього я можу використовувати щось подібне filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
.
Однак я хотів би іноді використовувати файл tmp для кешування, і в такому випадку я хотів би знати, чи відповідає "tmpfile.tmp. *" Чомусь, /tmp
і якщо так, використовувати цей файл, а не створювати новий. На жаль, test
і подібний [ -f filename ]
файл не підтримує глобалізацію файлів, наскільки я можу сказати.
Таким чином, моє питання двояке:
- Як я можу безпечно створити тимплейф? Чи
"predictablename.$RANDOM"
прийнятна практика чи існує кращий (більш безпечний, простіший) спосіб? - Як я можу легко отримати доступ до файлу та / або встановити його існування пізніше, перевіривши
predictablename
?
$TMPDIR
і~/.cache
саме те, що мені було потрібно. Після деякої подальшої думки я зрозумів, що єдина причина, за якою я цього хотіла, - це/tmp
розділення - тому кеш не міг заповнити/home
розділ. Але для цього випадку використання є справді повною проблемою, тому підкаталог повністю~/.cache
відповідає моїм потребам і уникає проблеми безпеки.