Li que redirecionar a saída para um arquivo de nome fixo /tmp
pode ser um risco à segurança, porque se um invasor (ou descontente) perceber que um arquivo /tmp/tmpfileformyscript.tmp
é criado quando executo meu script (mesmo que ele não tenha acesso de leitura ao meu script), ele pode, por exemplo, criar um link simbólico ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
que fará com que eu destrua meu .bashrc
arquivo quando executo o script.
Então, em vez disso, posso usar algo como filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
.
No entanto, às vezes, eu gostaria de usar um arquivo tmp para armazenar em cache; nesse caso, eu gostaria de saber se "tmpfile.tmp. *" Corresponde a algo /tmp
e, nesse caso, use esse arquivo em vez de criar um novo. Infelizmente, test
o equivalente [ -f filename ]
não suporta globbing de arquivos, até onde eu sei.
Assim, minha pergunta é dupla:
- Como posso criar com segurança um arquivo temporário? É
"predictablename.$RANDOM"
uma prática aceitável ou existe uma maneira melhor (mais segura, mais fácil)? - Como posso acessar facilmente o arquivo e / ou estabelecer sua existência posteriormente, verificando
predictablename
?
$TMPDIR
e~/.cache
é exatamente o que eu precisava. Após algumas reflexões, percebi que a única razão pela qual eu queria/tmp
era particionar - para que o cache não pudesse preencher a/home
partição. Mas, para este caso de uso, isso é realmente um não problema, portanto, um subdiretório~/.cache
se ajusta perfeitamente às minhas necessidades e evita o problema de segurança.