该
mktemp(1)手册页解释了它相当好:
传统上,许多shell脚本使用pid作为后缀来命名程序名称,并将其用作临时文件名。这种命名方案是可预测的,并且它创造的竞赛条件很容易使攻击者获胜。一种更安全(尽管仍然较差)的方法是使用相同的命名方案创建一个临时目录。虽然这样做确实可以保证不会破坏临时文件,但它仍然允许进行简单的拒绝服务攻击。由于这些原因,建议使用mktemp代替。
在脚本中,我调用mktemp之类的东西
mydir=$(mktemp -d "${TMPDIR:-/tmp/}$(basenamemktemp).XXXXXXXXXXXX")
它会创建一个我可以使用的临时目录,并可以在其中安全地命名实际文件,使之可读易懂。
X”通常会转换为某种随机性,更多的可能更随机;但是,某些系统(如busybox灰)对这种随机性的限制比其他系统更大虽然不是标准的,但是它确实存在于许多平台上。“
Temp
顺便说一句,临时文件的安全创建不仅对shell脚本而言重要。这就是python具有tempfile,perl具有File
::,ruby具有Tempfile等的原因。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)