J'ai lu que la redirection de la sortie vers un fichier de nom fixe dans /tmppeut être un risque pour la sécurité, car si un attaquant (ou un mécontent) remarque qu'un fichier /tmp/tmpfileformyscript.tmpest 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.tmpqui me fera détruire mon .bashrcfichier 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 /tmpet si c'est le cas, utilisez ce fichier plutôt que d'en créer un nouveau. Malheureusement testet 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?
$TMPDIRet~/.cachec'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/homepartition. Mais pour ce cas d'utilisation qui est vraiment un non-problème complet, un sous-répertoire de~/.cachecorrespond parfaitement à mes besoins et évite le problème de sécurité.