सभी उपयोगकर्ताओं के लिए शटडाउन कमांड को निष्क्रिय करना, यहां तक ​​कि रूट - परिणाम?


11

मैं shutdownसभी उपयोगकर्ताओं के लिए कमांड को निष्क्रिय करना चाहूंगा , यहां तक ​​कि रूट, एक उबंटू सर्वर इंस्टॉलेशन पर।

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

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

मैंने वर्चुअलबॉक्स छवि पर एक अलग पासवर्ड सुनिश्चित करके समस्या को पहले ही थोड़ा कम कर दिया है, लेकिन जाहिर है कि अगर मैं sudoउत्पादन मशीनों में से एक पर 'विंडो' के भीतर हूं, तो मैं गलती से इसे बंद कर सकता हूं।

मेरे प्रश्न हैं:

  1. मैं शटडाउन कमांड को कैसे निष्क्रिय कर सकता हूं?
  2. यदि मैं शटडाउन कमांड को अक्षम करता हूं, तो क्या कोई परिणाम है जिससे मुझे अवगत कराया जाना चाहिए? विशेष रूप से, क्या यह एसीपीआई शटडाउन के लिए समर्थन को अक्षम कर देगा जो भौतिक मशीन पर पावर बटन दबाने के बराबर है? क्या यह अन्य सामान्य अनुप्रयोगों को प्रभावित कर सकता है?

जानकारी के लिए, मैं इस VirtualBox छवि का उपयोग शेल स्क्रिप्ट की कोशिश करने, टॉमकैट और जावा चलाने और इस तरह की चीज के लिए करता हूं।


2
मेरी राय में मानव त्रुटि को रोकने के लिए प्रणाली के ऐसे मुख्य व्यवहार को बदलना एक बुरा विचार है। यह लंबे समय तक हल होने की तुलना में अधिक मुद्दों को लाने की संभावना है। यदि आप प्रत्येक सिस्टम के लिए एक अलग उपयोगकर्ता पासवर्ड रखते हैं तो आप जोखिम को कम करते हैं (क्योंकि इसमें sudo की आवश्यकता होती है)। आपको अच्छी आदतों का विकास करना चाहिए जो एक विशेष प्रणाली परिवर्तन पर निर्भर नहीं करते हैं, बहुत अधिक गंभीर आपदाएं अक्सर आरएम / सीपी / चामॉड के साथ होती हैं जो बहुत अधिक बार उपयोग की जाती हैं, और मुझे लगता है कि आप उन्हें अक्षम नहीं करने जा रहे हैं।
जोआओ पिंटो

जबकि मैं इससे सहमत हूं, और यह निश्चित रूप से चीजों को करने का सही तरीका है, यह सिर्फ उस एक से बचने के लिए है, एक छोटी सी स्थिति एक अनौपचारिक उबंटू छवि को प्रभावित करती है जो मुझे अपने डेस्कटॉप पर है ताकि मुझे जोखिम के बिना चीजों की कोशिश करने की अनुमति मिल सके मेरे नियोक्ता के मशीनों :) b0rking की
रिच

जवाबों:


3

यदि आप आमतौर पर sudo shutdownइसके बजाय कमांड चलाते हैं sudo /sbin/shutdown, तो आप टर्मिनल के लिए एक संदेश को प्रतिध्वनित करने के लिए "शटडाउन" के लिए एक वैश्विक शेल उर्फ ​​सेटअप कर सकते हैं। वास्तविक निष्पादन योग्य अभी भी अन्य सभी उद्देश्यों के लिए रहेगा।


यह सबसे अच्छा तरीका लगता है अगर आप बस एक आदत को बाधित करने की कोशिश कर रहे हैं।
ændrük

2
लेकिन ध्यान दें कि शेल उर्फ ​​( alias shutdown=sl) सेट करने का स्पष्ट तरीका सूदो के तर्कों पर कोई प्रभाव नहीं डालेगा। Zsh में आप एलियसेस को परिभाषित कर सकते हैं जो तर्कों के खिलाफ मैच करते हैं, लेकिन मुझे लगता है कि यह मार नहीं है। आप sudoएक शेल स्क्रिप्ट को अलियास कर सकते हैं जो पहले तर्क के होने पर कुछ भी करने से इनकार करता है shutdown
पूली

2
दूसरे शब्दों में, यह वास्तव में काम नहीं करेगा।
poolie

14

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

मौली-गार्ड आपको गलती से मशीनों को बंद करने या रिबूट करने से रोकने का प्रयास करता है। यह मौजूदा आदेशों से पहले कुछ चेकों को इंजेक्ट करके ऐसा करता है: पड़ाव, रिबूट, शटडाउन और पावरऑफ।

विशिष्ट विन्यास यह है कि यह मशीन को होस्टनाम टाइप करने के लिए कहता है यह पुष्टि करने के लिए कि आप वास्तव में सही हैं।

नई स्क्रिप्ट को जोड़ना संभव है /etc/molly-guard/run.d(जैसा कि मैनपेज पर प्रलेखित है , स्क्रिप्ट फ़ाइलों को अपेक्षित नामकरण का पालन करना चाहिए run-parts

यदि आप वास्तव में अक्षम करना चाहते हैं shutdown(और यह एक ऐसा विचित्र विचार है), तो बस करें

chmod 0 /sbin/shutdown

फिर यदि आपको इसका उपयोग करने की आवश्यकता है, तो इसे 0755 पर वापस भेज दें।


एक महान विचार है लेकिन दुख की बात है कि संभव नहीं है क्योंकि मेरे पास अपने स्वयं के सॉफ़्टवेयर को स्थापित करने में सक्षम होने के लिए सिस्टम पर पर्याप्त नियंत्रण नहीं है। अफसोस की बात है कि मेरे पास उन्हें बंद करने में सक्षम होने के लिए पर्याप्त नियंत्रण है!
रिच

4
क्या आप गंभीर हैं? यह बहुत अजीब है। यदि आपके पास केवल शटडाउन चलाने के लिए सूडो एक्सेस है, तो शायद आप लोगों को एक बड़े प्रॉम्प्ट का उत्सर्जन करने के लिए या फिर हमेशा पासवर्ड की आवश्यकता के लिए सूडो बदलने के लिए राजी कर सकते हैं। अगर आपके द्वारा गलती से उन्हें बंद करने का जोखिम है, तो यह प्रशासकों के हितों में मौली-गार्ड स्थापित करने के लिए होगा।
poolie

1

शटडाउन कमांड को निष्क्रिय करने के लिए बस बाइनरी को नॉन एग्जीक्यूटेबल बनाइए। sudo chmod a-x /sbin/shutdown मुझे यह भी नहीं लगता कि यह किसी अन्य शटडाउन विधि को प्रभावित करेगा क्योंकि शटडाउन के लिए आदमी प्रविष्टि कहता है

शट डाउन सिस्टम को उचित रनवे में लाने के लिए init डेमॉन के लिए एक अनुरोध भेजता है

उदाहरण के लिए शटडाउन कमांड को अक्षम करने के बाद भी कोई अन्य कमांड / स्क्रिप्ट ऐसा कर सकता है, मैं अभी भी अपने सिस्टम को GNOME मेनू से शटडाउन का उपयोग करके बंद कर सकता हूं। इसके अलावा आप अभी भी अपने कंप्यूटर को रीबूट कमांड का उपयोग करके कमांड लाइन से रिबूट कर सकते हैं


1

shutdownआदेश में है /sbin/shutdown। आप ऐसा करके इसे अक्षम कर सकते हैं:

sudo mv /sbin/shutdown /sbin/really-do-shutdown

लेकिन : इसका मतलब है कि सिस्टम को बंद करने के सामान्य तरीकों में से लगभग कोई भी अब काम नहीं करेगा। इस उत्तर के लिए मेरी परीक्षण मशीन पर सूक्ति से बाहर आने का कारण यह है कि यह आपको लॉग आउट करे और आपको जीडीएम में वापस फेंक दे।

यदि आप अपने सिस्टम को बाद में बंद करना चाहते हैं, तो आपको करना होगा

sudo init 0

"अक्षम" शटडाउन हर एप्लिकेशन को प्रभावित करेगा जो किसी भी चीज़ के लिए कमांड का उपयोग करता है। चूंकि init 0सिस्टम को बंद करने का अनुशंसित तरीका नहीं है, ऐसे सभी प्रोग्राम जिन्हें इसके लिए सिस्टम का उपयोग बंद shutdownकरना है, जो किसी भी अधिक काम नहीं करेंगे।

  • अनुपलब्ध फ़ाइल , या फ़ाइल निष्पादन योग्य नहीं होने के कारण अनुप्रयोग अपवाद भी फेंक सकते हैं , संभवतः संभावित रूप से क्रैश होने के बावजूद उन्हें बंद करना आवश्यक नहीं है। यह एक एज-केस है जिसे आप कुछ बाइनरी, आदर्श रूप से निष्पादन योग्य फ़ाइल (शेल स्क्रिप्ट नहीं - जो काम नहीं करेगा) को उस स्थान पर ले जाकर काम कर सकते हैं। उदाहरण के लिए:

    sudo cp /bin/ps /sbin/shutdown
    

    यह आपके द्वारा मूल को सुरक्षित रूप से ले जाने के बाद है

जोआओ पिंटो की टिप्पणी में उल्लिखित कारणों के लिए , अब यह सब काफी हैक है, और मैं इसके खिलाफ सलाह देता हूं । लेकिन मैं तुम्हें ऐसा करने से नहीं रोकूंगा। :-)

न केवल / sbin / शटडाउन का बैक अप लें, बल्कि, किसी भी तरह की परेशानी होने पर रिकवरी प्लान करें । उदाहरण के लिए, एक सर्वर पर ऐसा न करें जिसे आप प्राप्त नहीं कर सकते। और पहले से ही अपने रिकवरी प्लान का परीक्षण करें, यह मानते हुए कि सिस्टम बिल्कुल बूट नहीं करेगा (यह निश्चित रूप से बूट होगा - मैंने इसे परीक्षण किया है - लेकिन कृपया सुरक्षित पक्ष पर रहें)।


0

मुझे लगता है कि यह एक अन्य समाधान होना चाहिए, सर्वर को शटडाउन को निष्क्रिय करने के लिए एक ssh पॉलिसी होनी चाहिए और 0 से ssh पर init होना चाहिए, या "क्यों" और विशेष "शटडाउन पासवर्ड" दर्ज करने के लिए विंडोज पर कंसोल पर एक विशेष संवाद प्रदर्शित होना चाहिए। । इसके लिए पॉवरबटन को सर्वर के उपयोग पर संरक्षित किया जाना चाहिए।

फिलहाल हम पुश बटन के बजाय "भौतिक कुंजी स्विच = 4 ईयरोस" का उपयोग करते हैं।


0

मैं आपको shutdownकमांड को निष्क्रिय करना चाहता हूं ।

cp / sbin / shutdown / sbin / शटडाउन-बैकअप

आरएम / एसबीएन / शटडाउन

ऐसा इसलिए है क्योंकि अगर कोई जबरदस्ती इस आदेश का उपयोग करना चाहता है, तो वह भी नहीं कर सकता

अब कोई भी शटडाउन कमांड का उपयोग नहीं कर सकेगा।

यह स्थापित नहीं पाया गया एक संदेश आदेश प्रदर्शित करेगा।

vim /etc/bash.bashrc

Bash.bashrc के अंतिम भाग में एक पंक्ति जोड़ें

उपनाम बंद करना = "गूंज 'आपको इस आदेश का उपयोग करने की अनुमति नहीं है" "

यदि आप इसे वापस चाहते हैं (सक्षम)। बस इसे वापस कॉपी करें

cp / sbin / shutdown-backup / sbin / shutdown

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