mktemp(1)
आदमी पेज यह काफी अच्छी तरह से बताते हैं:
परंपरागत रूप से, कई शेल स्क्रिप्ट प्रोग्राम के नाम को एक प्रत्यय के रूप में pid के साथ लेते हैं और एक अस्थायी फ़ाइल नाम के रूप में उपयोग करते हैं। इस प्रकार की नामकरण योजना पूर्वानुमेय है और यह दौड़ की स्थिति को एक हमलावर के लिए जीतना आसान है। एक सुरक्षित, हालांकि अभी भी हीन, दृष्टिकोण एक ही नामकरण योजना का उपयोग करके एक अस्थायी निर्देशिका बनाने के लिए है। हालांकि यह किसी को यह गारंटी देने की अनुमति देता है कि एक अस्थायी फ़ाइल को विकृत नहीं किया जाएगा, यह अभी भी सेवा हमले के एक सरल इनकार की अनुमति देता है। इन कारणों से यह सुझाव दिया जाता है कि इसके बजाय mktemp का उपयोग किया जाना चाहिए।
एक पटकथा में, मैं कुछ ऐसा ही मानता हूं
mydir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
जो एक अस्थायी निर्देशिका बनाता है जिसमें मैं काम कर सकता हूं, और जिसमें मैं वास्तविक फ़ाइलों को कुछ पठनीय और उपयोगी नाम दे सकता हूं।
mktemp
मानक नहीं है, लेकिन यह कई प्लेटफार्मों पर मौजूद है। आमतौर पर "X" s कुछ यादृच्छिकता में परिवर्तित हो जाएगा, और अधिक शायद अधिक यादृच्छिक होगा; हालाँकि, कुछ सिस्टम (एक के लिए व्यस्तबॉक्स ऐश) इस यादृच्छिकता को दूसरों की तुलना में काफी अधिक सीमित करते हैं
वैसे, अस्थायी फ़ाइलों का सुरक्षित निर्माण केवल शेल स्क्रिप्टिंग से अधिक के लिए महत्वपूर्ण है। यही कारण है कि अजगर में टेम्पल है , पर्ल में फ़ाइल :: अस्थायी , रूबी में टेम्पेफाइल , आदि है ...