कैसे (सुरक्षित) चाल / tmp को एक अलग मात्रा में?


17

आज /tmpकाम पर एक मशीन पर निर्देशिका भर दी। समस्या यह थी, यह रूट विभाजन पर था जो बहुत बड़ा नहीं था। इसे ठीक करने के लिए, एक सहकर्मी ने /new/tmpकहीं और एक निर्देशिका बनाई , सभी सामग्रियों को नई निर्देशिका में कॉपी किया, मूल को हटा दिया /tmpऔर एक सिमलिंक बनाया /tmp -> /new/tmp

जब उन्होंने फाइलों की नकल की (वास्तव में, यह कोई और था, मैं नहीं!) उन्होंने -aहर फाइल के मालिक का इस्तेमाल नहीं /new/tmpकिया root। इसके अलावा, उन्होंने /new/tmpनिर्देशिका की अनुमतियों को सेट नहीं किया था इसलिए यह डिफ़ॉल्ट 0755 था। इससे परेशानी का कोई अंत नहीं हुआ और यहां तक ​​कि मोड और स्वामित्व बिट्स भी मशीन को एक स्वीकार्य रूप से काम करने की स्थिति में बहाल करने में विफल रहे। मैं अंत में सब कुछ करने के लिए /tmpऔर रिबूट करने के लिए समाप्त हो गया ।

/tmpनिर्देशिका, विभिन्न सॉकेट और पाइप और whatnot निहित के बाद से लोगों के एक समूह के माध्यम से VNC Gnome चलाने के लिए, और मैं का उपयोग screenजो अपनी ही पाइप है।

क्या किसी रनिंग सिस्टम पर किसी डायरेक्टरी को अलग वॉल्यूम में ले जाने का एक सुरक्षित तरीका /tmpहै? मुझे यकीन नहीं है कि मैंने वास्तव में सब कुछ काम करने के लिए क्या किया होगा। मैं विशेष रूप से उत्सुक हूं कि पाइप और सॉकेट का क्या होता है।

जवाबों:


20

"क्लाइंट" मशीनों पर, स्थानांतरित करने का सुरक्षित तरीका /tmpरीबूट करना है। यहाँ, क्लाइंट द्वारा, मेरा मतलब कुछ भी है जो प्रोग्राम चलाता है जो /tmpविशेष रूप से एक्स सर्वर और स्क्रीन में सॉकेट डालता है ।

नए को /tmpनिश्चित रूप से सही अनुमति (1777) की आवश्यकता है, अन्यथा आप एक कार्य प्रणाली की उम्मीद नहीं कर सकते।

के लिए /tmp, आप उतना किसी भी फाइल कॉपी नहीं कर सकते। ऐसा इसलिए है क्योंकि अधिकांश समय, प्रोग्राम जो /tmpफाइलों को खोलने में सामान रखते हैं । यदि आप फ़ाइल की प्रतिलिपि बनाते हैं, तो वह सामग्री की प्रतिलिपि बनाता है, लेकिन प्रोग्राम में अभी भी पुरानी फाइलें खुली हैं। आप एक डिबगर ( ptrace) के साथ उन तक पहुंचने में सक्षम हो सकते हैं , लेकिन यह रिबूटिंग की तुलना में बहुत अधिक जटिल होगा, और कई कार्यक्रमों के साथ आप जो भी करेंगे, उन्हें वैसे भी दुर्घटनाग्रस्त कर देगा।

यदि आपका /tmpपेट भर गया है और आप एक नए लाइव पर स्विच करना चाहते हैं, तो आपको उन सभी कार्यक्रमों को फिर से शुरू करना होगा, जिनके पास फाइलें खुली हैं। चूंकि इसका मतलब है कि एक्स और स्क्रीन सत्र को फिर से शुरू करना, यह रिबूट करने से बेहतर नहीं है।

आपको नए कार्यक्रमों के लिए स्विच करने में सक्षम होना चाहिए लेकिन यूनियन माउंट का उपयोग करके मौजूदा खुली फाइलों को रखना चाहिए । (सिद्धांत ध्वनि है, लेकिन मैंने कभी कोशिश नहीं की है, इसलिए मेरे द्वारा अनपेक्षित मुद्दे हो सकते हैं।) यहां लिनक्स पर ऐसा करने का एक तरीका है।

  1. /tmpकुछ मैन्युअल रूप से चयनित बड़ी को छोड़कर सभी मौजूदा फ़ाइलों को रखें ।
  2. एक /tmp.newमोड बनाएं (मोड 1777)।
  3. /tmpएक अलग रास्ते पर बेनकाब mount --bind / /.root.only:। यह आवश्यक है क्योंकि अगला चरण छाया होगा /tmp। अलग-अलग यूनियन माउंट कार्यान्वयन हो सकते हैं जिन्हें इस चरण की आवश्यकता नहीं है।
  4. एक संघ के माउंट बनाने /.root.only/tmpऔर /tmp.new, पर रखा /tmp। इस तरह से बनाई गई नई फाइलें अंदर /tmpलिखी जाएंगी /tmp.new, लेकिन वे फाइलें /.root.only/tmpभी नीचे दिखाई दे रही हैं /tmp। एक संभावना यह है unionfs-फ्यूज : unionfs-fuse /tmp.new:/.root.only/tmp /tmp

यदि आप यूनियन माउंट रूट पर नहीं जाना चाहते हैं (जैसे कि यह आपके प्लेटफ़ॉर्म पर उपलब्ध नहीं है, या क्योंकि यह बहुत अधिक परेशानी है), तो कम से कम पुरानी निर्देशिका को हटाएं नहीं। इसे स्थानांतरित करें , ताकि चलने वाले प्रोग्राम पुरानी निर्देशिका का उपयोग करते रहेंगे और नए प्रोग्राम नए का उपयोग करेंगे। (बेशक नए कार्यक्रम सॉकेट या पाइप के माध्यम से पुराने कार्यक्रमों के साथ संवाद करने में सक्षम नहीं होंगे, /tmpजब तक कि आप सेट न करें TMPDIRया अन्यथा उन्हें बताएं कि कहां देखना है।)

mv /tmp /tmp.old && mkdir /tmp

क्या आप स्पष्ट करेंगे कि रीबूट के माध्यम से / tmp का नया स्थान कैसे बना रहे?
FoxDeploy

@ फॉक्सडायलो ने इसके लिए एक प्रविष्टि लगाई/etc/fstab
गिल्स

क्या आप संभवतः उस पर विस्तार से बता सकते हैं?
फॉक्सडिप्लॉय

@FoxDeploy मुझे यकीन नहीं है कि आप यहाँ क्या पूछ रहे हैं। यदि आप /tmpरूट फाइलसिस्टम के अलावा कहीं और होना चाहते हैं , तो इसे /etc/fstabकिसी अन्य फाइलसिस्टम की तरह सूचीबद्ध करें , जिसे आप बूट समय पर माउंट करना चाहते हैं। यदि वह नहीं है जो आप पूछ रहे हैं, तो आपको पर्याप्त संदर्भ के साथ एक नया प्रश्न पूछना चाहिए।
गाइल्स 'एसओ- बुराई को रोकना'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.