लिनक्स: सुरक्षा के लिए शटडाउन निष्पादन योग्य नहीं है


9

आज मैंने गलती से उत्पादन मशीन बंद कर दी है क्योंकि मुझे लगा कि मैं अपने स्थानीय मशीन पर हूं। मुझे पता है, नौसिखिया गलती :-(

इसे फिर से न होने देने के समाधान के रूप में, मैं शटडाउन कमांड के लिए निष्पादन की अनुमति को हटाने के बारे में सोच रहा था क्योंकि मशीन हमेशा चालू होनी चाहिए।

क्या यह एक बेहतर तरकीब है? क्या आप ऐसा करके कोई अवांछित दुष्प्रभाव देख सकते हैं?

चीयर्स, डैन


1
अधिकांश sysadmins कुछ बिंदु पर ऐसा करते हैं (कौन सी खिड़की फिर से था? उफ़ ...)
बार्ट सिल्वरस्ट्रिम

3
खुशी हो कि यह केवल एक शटडाउन था। अन्य लोगों ने dd टूल (AKA: डिस्क विध्वंसक);) के साथ सबक सीखा;
pehrs

1
अधिकांश सीसडमिन कर्तव्यों और उपकरण घातक और घातक हो सकते हैं। महान शक्ति बड़ी जिम्मेदारी के साथ आती है। आप अपनी शटडाउन कमांड को 000 तक चकमा दे सकते हैं, लेकिन अगली बार जब आप rm, dd, fsck, mv या कुछ अन्य संभावित खतरनाक टूल के साथ गड़बड़ कर सकते हैं। हम में से हर कोई जल्दी या बाद में गलतियाँ करेगा। सबसे अच्छी बात यह है कि आप सबसे खराब तैयारी करें और सुनिश्चित करें कि आपके पास बैकअप आदि हैं :-)
Janne Pikkarainen

जवाबों:


21

पूरी तरह से एक और aproach कि कैसे चेतावनी दी जाए कि आप उत्पाद पर काम करते हैं टर्मिनल को चिह्नित करना है। उदाहरण के लिए user@machine:~#पाठ उत्पादन मशीनों पर लाल हो सकता है, विकास पर हरा हो सकता है, आदि यहाँ अच्छा ट्यूटोरियल है कि यह कैसे करना है: कलर बैश प्रॉम्प्ट


+1, मैं अपनी सभी मशीनों का रंग कोड करता हूं: एक रंगीन पृष्ठभूमि पर सफेद पाठ, ऑरेंज = इन्फ्रास्ट्रक्चर; नीला = उत्पादन; बैंगनी = टेस्ट / देव। सामान्य कार्य केंद्र मानक काली पृष्ठभूमि रखते हैं।
क्रिस एस

एक और कैसे-लगभग हर शेल के लिए: समझने के लिए। http://udy.net/custom.html
क्रिस एस

एक शानदार टिप के लिए +1, मैंने खुद कभी ऐसा नहीं सोचा था।
केनी रैशर्ट

7

सबसे अच्छी सलाह जो मैं आपको दे सकता हूं वह रूट के रूप में लॉगिन नहीं है जब तक कि आपको रूट एक्सेस की आवश्यकता न हो, और सुनिश्चित करें कि आपके पास प्रत्येक मशीन के लिए एक अलग रूट / sudo पासवर्ड हो।

शटडाउन को दुर्गम बनाना एक विकल्प है लेकिन यह अच्छा नहीं है। या तो उर्फ shutdownकरने के लिए shutdown -aऔर touch /etc/shutdown.allowयाchmod a-x /sbin/shutdown

इसके अलावा, यह कहाँ समाप्त होता है? क्या आप भी पड़ाव, रिबूट और इनिट को खत्म करने जा रहे हैं?


4
यह कभी समाप्त नहीं होता। हमेशा कुछ और होता है, बार-बार, अधिक से अधिक, यह बस कभी नहीं रुकता है <दीवार पर बार-बार सिर टकराता है ...>
बार्ट सिल्वरस्ट्रिम

"मार" मत भूलना। आखिरकार, "किल -9 1" एक यूनिक्स बॉक्स को बंद करने का एक बहुत प्रभावी तरीका है (या, अच्छी तरह से, वापस दिनों में)।
वेटाइन

कुछ शटडाउन नहीं है -a। इसके अलावा एक उपनाम पर निर्भर करता है जैसे कि भरोसा करने के समान है alias rm='rm -i'- किसी दिन यह तब नहीं होगा जब आपको वास्तव में इसकी आवश्यकता होगी। इसके अलावा, shutdown -aकेवल वैसे भी सीमित उपयोगिता है।
अगली सूचना तक रोक दिया गया।

3

विचार करने के लिए कुछ बिंदु:

  1. उत्पादन समय के दौरान आप एक उत्पादन प्रणाली की जड़ के रूप में क्या कर रहे थे? अपने सिस्टम को कॉन्फ़िगर करें ताकि आपको दिन के काम के लिए उन पर रूट न होना पड़े। आपको बहुत अच्छे कारण के बिना उत्पादन प्रणाली पर कभी भी जड़ नहीं डालना चाहिए।
  2. महत्वपूर्ण सबक जानें। जब आप रूट होते हैं तो आपको एंटर करने से पहले दो बार चेक करना होगा। SUDO कोई सुरक्षा नहीं है यदि आप सिर्फ सोचने के लिए अपना पासवर्ड लिखते हैं। प्रॉम्प्ट कलरिंग, जैसा कि mkudlacek द्वारा बताया गया है, यह सुनिश्चित करने में मदद करने के लिए एक बहुत ही उपयोगी उपकरण है कि आप गलत सिस्टम पर नहीं हैं।
  3. बिलिन उपकरणों के साथ गड़बड़ न करें। यह अद्यतनों को तोड़ने की संभावना है और नए किराए के पागल ड्राइव करेगा। यदि आप कुछ बदलना चाहते हैं तो अपनी स्वयं की अन्य फ़ाइल का उपयोग करें।

2
मैं जरूरी इस पोस्ट के साथ सहमत नहीं हूँ। एक sysadmin के रूप में काम करते समय यह मेरे उत्पादन मशीन एक्सेस के लिए रूट की आवश्यकता के लिए बहुत आम है। आप उपयोगकर्ताओं को बंद कर देते हैं, प्रवेश नहीं। ध्यान दें, कोई डाउन-वोट नहीं है, क्योंकि यह खदान से अलग होने पर भी एक वैध दृष्टिकोण है।
पीपी।

1
उस मामले में आपके पास मशीनों पर बहुत कठिन सेवा स्तर की आवश्यकताएं नहीं हैं। सॉफ्टवेयर इंस्टॉल, पैचिंग, एसीएल को दरकिनार करना और नेटवर्क कॉन्फिग में बदलाव केवल वही चीजें हैं जिनकी आपको आवश्यकता है। इन गतिविधियों में से कोई भी अक्सर उत्पादन में एक मशीन पर नहीं किया जाना चाहिए ... और बाकी सब कुछ एक सुपरयूज़र खाते से करना संभव होना चाहिए। यदि आप अपने उत्पादन प्रणाली पर
सुपरसर्स के

3

मुझे नहीं लगता कि अनुमति के साथ खिलवाड़ करना shutdownस्थिति को संभालने का तरीका है। मूल रूप से आपने सिर्फ एक सबक सीखा है। चिन अप।

मैंने एक ही तरह की चीजें की हैं - ssh सत्रों की लंबी श्रृंखलाएं प्राप्त करना, फिर उन मशीनों में से एक पर मार्गों के साथ खिलवाड़ करना, जिनके माध्यम से मैं खुद को काट रहा था। मैंने rsync अनुरोध को स्वीकार कर लिया है, जिससे दुनिया के दूसरी तरफ एक प्रणाली का व्यवस्थित विनाश हो रहा है। मैं rm -rf / pathएक प्रोडक्शन सर्वर पर चला हूं । (उस समय मुझे सीखने को मिला कि कैसे काम किया जाता है।)

इसलिए, बहुत बड़े और उम्मीद से थोड़े समझदार, अब मेरे पास अपने आप पर सख्त नियम हैं।

  • सभी जड़ें # के साथ समाप्त होने का संकेत देती हैं, चाहे उनमें कोई अन्य जानकारी क्यों न हो।
  • किसी भी समय मैं # प्रॉम्प्ट पर हूं, मैं एंटर कुंजी दबाने से पहले सचमुच अपने हाथों पर बैठ जाता हूं।
  • अगर मुझे इस बारे में कोई संदेह है कि मैं क्या करने वाला हूं या मैं वास्तव में कहां हूं या वहां कैसे पहुंचा, तो मैं इसे रद्द कर देता हूं और इसे फिर से ज्ञात स्थिति से फिर से बनाता हूं।
  • जब मैं एक गलती करता हूं (और मैं अभी भी उन्हें बनाता हूं, हालांकि वे दोनों लगातार कम और अधिक अस्पष्ट हो रहे हैं जैसे ही समय गुजरता है), तुरंत पता लगा लें कि मैंने क्या किया है, जो मैंने प्रभावित किया है, और उनके पापों को कबूल करता हूं । फिर सब कुछ छोड़ दें और जल्दी से जल्दी और जितना हो सके दामो को पूर्ववत करें।

मेरी नौकरी की प्रकृति के लिए मुझे बहुत से विभिन्न रूट प्रॉम्प्ट पर बहुत समय बिताने की आवश्यकता है, लेकिन अतीत में अपनी त्रुटियों के लिए धन्यवाद, जब मैंने शुरू किया था, तो मैं पहले से कहीं अधिक बेहतर स्थितिजन्य जागरूकता बनाए रखता हूं।



1

निर्भर करता है, वास्तव में। आप केवल कमांड को लपेटने का प्रयास कर सकते हैं लेकिन इसका मतलब है कि यदि आप उस निष्पादन को प्रभावित करने वाले अपडेट या अपग्रेड करते हैं, तो आप इसके बारे में भूल सकते हैं और इसे अपडेट करने में कठिनाई हो सकती है। सिस्टम शटडाउन कमांड के साथ खेलना एक पीआईटीए हो सकता है, खासकर यदि आपके पास नए हायर हैं या एक प्रतिस्थापन है जो समाप्त हो जाता है यह नहीं जानते हुए कि आप सिस्टम बायनेरिज़ के साथ खेल रहे थे।

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


1

आप कम से कम सर्वर पर मशीन का नाम शामिल करने के लिए कमांड प्रॉम्प्ट सेट करने पर विचार कर सकते हैं। यह भविष्य में गलत मशीन पर चलाए जा रहे अन्य कमांड को रोकने में मदद कर सकता है। यह अधिक प्रभावी है अगर मशीन के नाम रंगीन हैं ताकि उन्हें बाहर खड़ा किया जा सके और सर्वर रोल की पहचान करने के लिए आप कोड भी रंग सकते हैं।


0

एक तरीका suसीधे उपयोग और / या लॉगिन करने का नहीं है root। खाते में सीधे प्रवेश करने के लिए बेहतर है और rootस्थानीय मशीन और ssh कुंजी के लिए अलग पासवर्ड है ।

बेशक यह लाल '' '' प्रांप्ट के लिए देखने के अतिरिक्त है।


0

हां, शटडाउन कमांड पर निष्पादित बिट को हटाना आकस्मिक शटडाउन को रोकने का सबसे सरल और सबसे सुरक्षित तरीका है, खासकर अगर आपके पास मशीन पर केडीई जैसा डेस्कटॉप वातावरण है और लॉग आउट करते समय आप आकस्मिक शटडाउन को रोकना चाहते हैं।

जैसा कि नए लोगों को भ्रमित किया जा रहा है, मुझे लगता है कि पहली बात वे ls -l /sbin/shutdownयह पता लगाने के लिए करेंगे कि यह काम क्यों नहीं करता है (विशेषकर यदि उनके पास टैब को पूरा करने वाले नाम की अच्छी आदत है)। जाहिर है, हालांकि आपको उन्हें अपने द्वारा किए गए परिवर्तनों के बारे में बताना चाहिए।

अतिरिक्त सुरक्षा के लिए आप /etc/rc.localशटडाउन कमांड से निष्पादित बिट को हटाने के लिए एक पंक्ति जोड़ सकते हैं ताकि आप रिबूट के बाद इसे रीसेट करना न भूलें।


0

आप बस / sbin / root के पथ से हटा सकते हैं। उस तरह से आपको इसे निष्पादित करने के लिए पूर्ण पथ टाइप करने की आवश्यकता है, और यह आमतौर पर दुर्घटनाओं को ठीक करता है।

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