Я читал, что перенаправление вывода в файл с фиксированным именем в /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соответствует моим потребностям и позволяет избежать проблем с безопасностью.