/ Tmp के लिए सही अनुमतियाँ क्या हैं? मैंने अनायास ही इसे सभी सार्वजनिक रूप से पुन: स्थापित कर दिया


78

मैंने गाली दी है sudo

मैंने वास्तव में बहुत कम समय की अस्थायी निर्देशिका बनाई है जिसे मैं कुछ उपयोगकर्ताओं के बीच कुछ घंटों के लिए साझा करना चाहता था ... और मैंने इस निर्देशिका को नाम दिया /some/path/tmp

दुर्भाग्य से मैंने sudo chown 777 -R /tmpइसके बजाय लॉन्च किया है sudo chown 777 -R tmp, इसलिए मेरी /tmpफ़ाइल अब पूरी तरह से सार्वजनिक है।

मैं सामान्य रूप से /tmpअक्सर (हर दिन, लगभग हर घंटे) व्यक्तिगत रूप से छोटी जीवन फ़ाइलों, लिपियों, बहुत सारी लिपियों के लिए उपयोग करता हूं ।

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


खबरदार कि मैं अपने शुरुआती उत्तर में कुछ महत्वपूर्ण भूल गया: X11 सॉकेट को सार्वजनिक रूप से सुलभ होना चाहिए, अन्यथा आप नए GUI एप्लिकेशन शुरू नहीं कर पाएंगे। मैंने अपना उत्तर अपडेट कर दिया है।
गाइल्स

यह था chownया chmod?
मेलेबियस

@ मेबेलियस मैं आपके प्रश्न से थोड़ा हैरान हूँ: मैंने उल्लेख नहीं किया chmod। chown (जैसे ch - own), फाइलों के स्वामित्व के बारे में है, जो उपयोगकर्ता एक फ़ाइल का मालिक है। chmod (जैसे ch - modifify) इस बारे में अधिक है कि कौन फ़ाइल के कंटेंट को निष्पादित या लिख ​​सकता है या पढ़ सकता है।
स्टीफन रोलैंड

2
@StephaneRolland हाँ, यह मुझे उलझन में है। आप chown 777आईडी 777 के साथ उपयोगकर्ता के लिए एक फ़ाइल का स्वामित्व सेट करते हैं, जिसका उपयोग कर सकते हैं। हालांकि, सभी उत्तर, जिसमें स्वीकृत है, के साथ काम करते हैं chmod। चूंकि उन सभी ने सभी उपयोगकर्ताओं (स्वामी, समूह, अन्य) के लिए समान मूल्य की अनुमति निर्धारित की है, फ़ाइल स्वामित्व के अधिकांश प्रभाव अप्रासंगिक हो जाते हैं। हालाँकि, परिणाम को ठीक करने के लिए सही कमांड sudo chown 777 -R /tmpहोना चाहिए sudo chown root -R /tmp
मेलेबियस

जवाबों:


117

के लिए सामान्य सेटिंग्स /tmp1777 हैं, जो कि lsदिखाता है drwxrwxrwt। वह है: चौड़ा खुला, सिवाय इसके कि केवल एक फ़ाइल का मालिक ही इसे हटा सकता है (यह tएक निर्देशिका के लिए इस अतिरिक्त बिट का मतलब है)।

/tmp777 मोड के साथ समस्या यह है कि कोई अन्य उपयोगकर्ता आपके द्वारा बनाई गई फ़ाइल को हटा सकता है और उनकी पसंद की सामग्री को प्रतिस्थापित कर सकता है।

यदि आपका /tmpएक tmpfs फाइल सिस्टम है, तो एक रिबूट सब कुछ बहाल कर देगा। नहीं तो दौड़ो chmod 1777 /tmp

इसके अतिरिक्त, /tmpनिजी होने के लिए बहुत सारी फ़ाइलों की आवश्यकता होती है। हालांकि, कम से कम एक निर्देशिका को गंभीर रूप से विश्व-पठनीय होने की आवश्यकता है: /tmp/.X11-unixऔर संभवतः कुछ अन्य समान निर्देशिकाएं ( /tmp/.XIM-unix, आदि)। निम्नलिखित कमांड में ज्यादातर चीजें सही होनी चाहिए:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

यानी सभी फ़ाइलों और निर्देशिकाओं को निजी बनाएं (समूह और अन्य के लिए सभी अनुमतियां हटाएं), लेकिन सभी के लिए एक्स 11 सॉकेट्स सुलभ बनाएं। इन सॉकेट्स पर एक्सेस कंट्रोल सर्वर द्वारा लागू किया जाता है, न कि फाइल परमिशन द्वारा। अन्य सॉकेट हो सकते हैं जिन्हें सार्वजनिक रूप से उपलब्ध होने की आवश्यकता है। भागो find /tmp -type s -user 0जड़ के स्वामित्व वाली सॉकेट जो आप दुनिया भर में सुलभ बनाने के लिए आवश्यकता हो सकती है की खोज के लिए। अन्य सिस्टम उपयोगकर्ताओं के स्वामित्व वाले सॉकेट भी हो सकते हैं (जैसे कि सिस्टम बस से संवाद करने के लिए); find /tmp -type s ! -user $UID(जहां $UIDआपका उपयोगकर्ता आईडी है) के साथ अन्वेषण करें।


1
क्या आप दूसरे चामड़ को और अधिक समझा सकते हैं?
बार्ट्लोमिएज लेवांडोव्स्की

@BartlomiejLewandowski go-rwx: समूह और अन्य के लिए कोई अनुमति नहीं। यह अनुमतियों को सेट करता है rwx------(सिवाय इसके कि फाइलें बनाई गई थीं जो chmodकम अनुमतियों के साथ समाप्त हो सकती हैं, उदाहरण के लिए rw-------)। दूसरे शब्दों में, फाइलें केवल उनके मालिक द्वारा ही सुलभ होंगी। /tmp/.[!.]*डॉट फ़ाइलों को शामिल करना है, जो आमतौर पर मौजूद हैं /tmp
गाइल्स

@BartlomiejLewandowski: chmod -go-rwx: स्वामी और समूह को "rwx" अधिकार सेट करें। r = रीड, w = लिखना, x = निष्पादित (फ़ाइल के लिए) या दर्ज करें / ट्रैवर्स (निर्देशिका के लिए)। 777 = rwxrwxrwx (दाहिने भाग को देखा जा सकता है: "सेट 'आर' सेट 'डब्ल्यू' सेट 'एक्स', सेट 'आर' सेट 'डब्ल्यू' सेट 'एक्स', सेट 'आर' सेट 'डब्ल्यू' सेट" एक्स) '', जिसे बाइनरी में "111111111" (1 से सेट, 0 से शुरू होने के लिए) के रूप में दर्शाया गया है। और बाइनरी में "111111111" को "777" (3 बिट्स के ऑक्टल = समूह) के रूप में ऑक्टल में दर्शाया गया है, प्रत्येक समूह का मान 0 से है। 7)। यदि "rwxr-xr--" यह "111101100" होगा जो अष्टक में "754" है
ओलिवियर

2
+ टी को स्टिकी बिट के रूप में जाना जाता है। यह वही है जो मालिक के अलावा किसी को भी फ़ाइलों को हटाने में सक्षम होने के बावजूद रखता है, भले ही अनुमति 777 अन्यथा हो। चिपचिपा बिट मूल रूप से कर्नेल को स्मृति में आम तौर पर प्रोग्राम छोड़ने के लिए मिलता था जब वे बाहर निकलते थे ताकि उन्हें अगले रन के दौरान डिस्क से नहीं लाना पड़े। हम बात कर रहे हैं पीडीपी 11 दिनों की ....
कुर्टम

1
@GabrielFair मैंने वाइल्डकार्ड्स का उपयोग करके कमांड को बदल दिया, जो कि उस समस्या में नहीं चलेगा।
गाइल्स

10

/tmpऔर /var/tmpसभी के लिए अधिकारों को पढ़ना, लिखना और निष्पादित करना चाहिए; लेकिन आप आमतौर पर o+tउपयोगकर्ताओं को अन्य उपयोगकर्ताओं से संबंधित फ़ाइलों / निर्देशिकाओं को हटाने से रोकने के लिए स्टिकी-बिट ( ) जोड़ेंगे । इसलिए chmod a=rwx,o+t /tmpकाम करना चाहिए।

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

यह करने का एक अच्छा तरीका है। जड़ के रूप में, करें:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

एक विशिष्ट डेस्कटॉप सिस्टम पर, आप बेहतर /tmp/.X11-unix/*रूप से विश्व-पठनीय बना सकते हैं, या आप X एप्लिकेशन को किसी भी अधिक प्रारंभ नहीं कर पाएंगे।
गिल्स

chmod a=rwX,o+t /tmp -Rfindजादू करना चाहिए ।
ढिल

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