यहाँ-दस्तावेज़ के लिए अस्थायी फ़ाइल नहीं बना सकता है: अनुमति अस्वीकृत


11

[नोट: यह समान Q समान बैश त्रुटि संदेश की चिंता करता है। इसे इस अन्य Q के डुप्लिकेट के रूप में चिह्नित किया गया है । लेकिन क्योंकि मुझे इस त्रुटि के लिए एक बहुत अलग स्रोत मिला, मैं नीचे अपने क्यू का जवाब दूंगा।]

यह पहले से काम कर रही स्क्रिप्ट लाइन है

while ... do ... done <<< "$foo"

एक दिन इस त्रुटि संदेश का उत्पादन शुरू किया:

यहाँ दस्तावेज़ के लिए अस्थायी फ़ाइल नहीं बना सकते हैं: अनुमति से इनकार कर दिया


मेरे मामले में यह IMA ( ima_policy=appraise_tcbकर्नेल पैरामीटर) सक्षम था , /tmpन होने के संयोजन के साथ tmpfs। लेकिन यह वास्तव में एक सामान्य मामला नहीं है :)।
पाविक

जवाबों:


10

मैंने umask 777यहां स्ट्रिंग से पहले जोड़ा था । ओम्स्क को हटाने के बाद, त्रुटि दूर हो गई। तो सबक सीखा: यहाँ एक स्ट्रिंग ( <<<) के लिए बनाई गई एक अस्थायी फ़ाइल है , और यह यहाँ एक दस्तावेज़ ( <<) से संबंधित है , और आपके पास इन काम करने के लिए एक उपयुक्त umask सेट होना चाहिए।


दिलचस्प है। +1 देखें unix.stackexchange.com/questions/166292/…
Rui F Ribeiro

यह zsh और mksh को भी प्रभावित करता है, ksh93 को और न ही tsh को। नहीं डैश, आर सी, तों, और न ही याश, लेकिन ऐसा इसलिए है क्योंकि वे अस्थायी फ़ाइलों के बजाय पाइप का उपयोग करते हैं।
स्टीफन चेज़लस

Ksh93 और tcsh के मामले में, यह काम करता है क्योंकि वे फाइल को केवल एक बार रीड + राइट मोड में खोलते हैं, डेटा लिखते हैं और फिर शुरुआत में वापस आते हैं।
स्टीफन चेज़लस

6

मेरे मामले में मैंने /tmpनिर्देशिका डिफ़ॉल्ट अनुमतियों को बदल दिया (मुझे लगता है कि मैंने गलती से 0777 में बदल दिया है)।

इसका समाधान इसे डिफ़ॉल्ट /tmpअनुमति पर वापस करना था , जो 1777 में ऑक्टल (1 = चिपचिपा सा, 7 = आर + डब्ल्यू + एक्स) है।

तो संक्षेप sudo chmod -R 1777 /tmpमें समस्या को ठीक करना चाहिए।


मैं देख सकता हूं कि वास्तव में मुद्दों का कारण कहां होगा। हाँ, चिपचिपा बिट / tmp के लिए महत्वपूर्ण है।
अण्डाकार दृश्य

2
आप शायद -Rध्वज नहीं चाहते हैं । नीचे सभी की फ़ाइलों को बदलने का कोई कारण नहीं है कि हर कोई /tmpपढ़ने-लिखने-निष्पादन योग्य हो। उन फ़ाइलों में से कुछ आपके उपयोगकर्ताओं की सुरक्षा के लिए संवेदनशील हैं।
कीथजोलले

1

इस समस्या के साथ मेरा व्यक्तिगत अनुभव umaskबाइनरी नोटेशन के साथ था , जैसे @ एलिप्टिकल-व्यू। मुझे लगता है कि लेखन:

umask 0644 

मुझे पढ़ने और मेरे द्वारा बनाई गई फ़ाइलों तक पहुंच लिखने के लिए, क्या गलत है

के बाद मैं बदल गया umaskहै

umask 0022

त्रुटि गायब हो गई।

दरअसल, बाइनरी नोटेशन को एक बाइनरी पूरक के रूप में समझा जाना चाहिए।

इसलिए, umaskनीचे दिए गए नकाब में जब कोई 0फ़ाइल स्वामी के लिए लिखता है , तो इस उपयोगकर्ता की कुल फ़ाइलों तक उसकी पहुँच होगी। मान का 2अर्थ है कि 2 बिट नकाबपोश है, इस मामले में क्या मतलब है, डिफ़ॉल्ट रूप से अन्य उपयोगकर्ताओं को उन फ़ाइलों को लिखने की अनुमति नहीं दी जाएगी जो फ़ाइल मालिक बनाता है।


1
संपादन और सुधार के लिए धन्यवाद, @Paulo Tomé। वास्तव में, यह सामान्य (और स्पष्ट) है कि ऑक्टल नोटेशन का उपयोग करें umask, ठीक तीन बिट्स पॉज़िक्स फ़ाइल अनुमतियों में शामिल हैं - स्वामी के लिए, उसके समूहों में से एक, और अन्य सभी के लिए।
हिल्टन फर्नांडिस

आपका स्वागत है। ;)
पाउलो टोमे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.