J'ai lu que la redirection de la sortie vers un fichier de nom fixe dans /tmp
peut être un risque pour la sécurité, car si un attaquant (ou un mécontent) remarque qu'un fichier /tmp/tmpfileformyscript.tmp
est créé lorsque j'exécute mon script (même s'il n'a pas accès en lecture à mon script), il peut par exemple créer un lien symbolique ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
qui me fera détruire mon .bashrc
fichier lors de l'exécution de mon script.
Donc, à la place, je peux utiliser quelque chose comme filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
.
Cependant, j'aimerais parfois utiliser un fichier tmp pour la mise en cache, auquel cas je voudrais savoir si "tmpfile.tmp. *" Correspond à quoi que ce soit /tmp
et si c'est le cas, utilisez ce fichier plutôt que d'en créer un nouveau. Malheureusement test
et l'équivalent [ -f filename ]
ne prend pas en charge la globalisation des fichiers pour autant que je sache.
Ma question est donc double:
- Comment puis-je créer un fichier temporaire en toute sécurité? Est-ce
"predictablename.$RANDOM"
une pratique acceptable ou existe-t-il un meilleur moyen (plus sûr, plus facile)? - Comment puis-je accéder facilement au fichier et / ou établir son existence ultérieurement en vérifiant
predictablename
?
$TMPDIR
et~/.cache
c'est exactement ce dont j'avais besoin. Après mûre réflexion, je me suis rendu compte que la seule raison pour laquelle je le souhaitais/tmp
était le partitionnement — donc le cache ne pouvait pas remplir la/home
partition. Mais pour ce cas d'utilisation qui est vraiment un non-problème complet, un sous-répertoire de~/.cache
correspond parfaitement à mes besoins et évite le problème de sécurité.