2
如何从Shell脚本安全地创建和访问临时文件?
我已经读到将输出重定向到其中的一个固定名称文件/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?