mktemp(1)
Adam sayfa oldukça iyi açıklıyor:
Geleneksel olarak, birçok kabuk betiği pid ile birlikte programın adını sonek olarak alır ve bunu geçici dosya adı olarak kullanır. Bu tür adlandırma şeması tahmin edilebilir ve oluşturduğu yarış durumu bir saldırganın kazanması için kolaydır. Daha güvenli olsa da, yine de daha düşük bir yaklaşım, aynı adlandırma şemasını kullanarak geçici bir dizin oluşturmaktır. Bu, birinin geçici bir dosyanın alt üst edilmeyeceğini garanti etmesine rağmen, yine de basit bir hizmet reddi saldırısına izin verir. Bu nedenlerle mktemp'in kullanılması önerilir.
Bir senaryoda, mktemp gibi bir şey çağırıyorum
mydir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
hangi geçici bir dizin oluşturur ve gerçek dosyaları okunabilir ve yararlı bir şey güvenli bir şekilde adlandırabilir.
mktemp
standart değildir, ancak birçok platformda bulunur. "X" ler genellikle bazı rasgeleliklere dönüştürülecek ve daha fazlası muhtemelen daha rasgele olacaktır; ancak, bazı sistemler (meşgul kutusu kül, biri için) bu rasgeleliği diğerlerinden daha önemli ölçüde sınırlar
Bu arada, geçici dosyaların güvenli bir şekilde oluşturulması, kabuk komut dosyalarından daha fazlası için önemlidir. Bu yüzden python tempfile , perl File :: Temp , ruby Tempfile vb. Vardır …