शटडाउन कमांड को हटाने का सबसे अच्छा तरीका है, लेकिन रिबूट रखें


27

मेरे पास डेटा सेंटर में एक raspi टाइप डिवाइस है, और हाल ही में गलती से फैट हो गया और मेरी स्क्रीन पर गलत टर्मिनल में शटडाउन कमांड चिपक गया। क्या विकल्प रखने या shutdown -rहटाने का कोई तरीका है #poweroff #shutdown -P -H?

मैं shutdown -r कमांड रखना चाहता हूं । अगर मैं सिस्टम को फ्रीज करने का प्रबंध करता हूं, या आईपी टेबल नियमों के साथ खुद को लॉक करना चाहता हूं, तो मुझे इस पर टाइमर लगाना पसंद है। उदाहरणshutdown -r +10

जवाबों:


39

आपको सिस्टम-आधारित लिनक्स वितरण का उपयोग करना चाहिए। इस स्थिति में, आपको पॉवरऑफ़ लक्ष्य को मास्क करने में सक्षम होना चाहिए , ताकि सिस्टमड इसे निष्पादित करने से इनकार कर दे (और शक्ति)। उदाहरण के लिए:

systemctl mask poweroff.target

यह सिस्टम को शटडाउन करने के अलावा, सिस्टम को शटडाउन करना असंभव बनाता है। देखें कि कुछ नहीं होता है:

डेबियन 9 एनिमेटेड डेमो

इस स्थिति में, यह VM का वर्चुअल पावर स्विच सिस्टम को बंद करने के लिए भी काम नहीं करता है। लेकिन यह अभी भी पूरी तरह से अच्छी तरह से रिबूट करता है।

परिवर्तन को पूर्ववत करने के लिए, निश्चित रूप से, लक्ष्य को अनमास्क करें। तब आप सिस्टम को बंद कर सकते हैं।

systemctl unmask poweroff.target

2
क्या एक सिस्टम कमांड है जो सभी सेवाओं / लक्ष्यों / उपकरणों को उनके विवरण (यदि उपलब्ध हो) के साथ सूचीबद्ध करता है? मैंने हाल ही में इस पर पढ़ना शुरू किया है और संभावनाओं को तलाशना पसंद करूंगा।
hjpotter92

1
@ hjpotter92 systemctlबिना किसी तर्क के चलाएं । यह सभी सक्रिय इकाइयों, उनकी स्थिति और विवरणों को सूचीबद्ध करेगा। जोड़ें --allऔर यह उन इकाइयों को भी सूचीबद्ध करेगा जो सक्रिय नहीं हैं।
माइकल हैम्पटन

2
@ hjpotter92 पर एक नज़र डालें man systemd.special
बहुत

16

इसे प्राप्त करने के कुछ तरीके हैं। एक नियमित रूप से गैर-विशेषाधिकार प्राप्त खाते के साथ काम कर रहा होगा जिसे sudo के साथ कमांड चलाने और पासवर्ड दर्ज करने की आवश्यकता होगी। तब आप follwing को / etc / sudoers (visudo चलाकर) जोड़ सकते हैं:

## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *

इसके अलावा, sudo क्रेडेंशियल कैशिंग को अक्षम करने के लिए, निम्नलिखित को भी जोड़ें:

Defaults timestamp_timeout=0

यह क्रेडेंशियल्स कैशिंग को रोक देगा जिसे आपने पहले सूडो के साथ एक कमांड दिया था।

उदाहरण:

[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:

ध्यान दें कि ऊपर दिए गए उदाहरण में मुझे दौड़ते समय अपना पासवर्ड दर्ज करने की आवश्यकता नहीं थी sudo shutdown -r +10, लेकिन बाकी मैं था। यदि आप कमांड से पहले sudo टाइप करने की आवश्यकता को दूर करना चाहते हैं ( sudo shutdown -r +10), अपने .bash_profile या .ashashrc में निम्न जोड़ें:

alias shutdown="sudo shutdown"

उदाहरण:

[jdoe@ops ~]$ source ~/.bash_profile
[jdoe@ops ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ shutdown -c
[sudo] password for jdoe:

ध्यान दें कि गैर-विशेषाधिकारित खाते के साथ काम करना और आवश्यकता पड़ने पर सुडो के साथ आगे बढ़ना सबसे अच्छा अभ्यास है।


1
यह बहुत अच्छा है, सिवाय इसके कि sudoडिफ़ॉल्ट कॉन्फ़िगरेशन में पहले आह्वान के बाद कुछ समय के लिए कैश क्रेडेंशियल होगा। यह तब सुविधाजनक हो सकता है जब rootउपयोगकर्ता सत्र में आवश्यक रूप से आदेशों का बार-बार निष्पादन हो । इस तरह के सत्र में, (या वास्तव में, यदि कोई rootशेल चल रहा है), तो कमांड को लेन-देन करना shutdownऔर चेक को बायपास करना पूरी तरह से संभव होगा ।
कॉस्मिक ओस्सिफ्रेज

इनपुट के लिए धन्यवाद। हालाँकि, इस मामले में, हम sudo के साथ चलने पर पासवर्ड के लिए प्रॉम्प्ट नहींshutdown -r करने के लिए कॉन्फ़िगर कर रहे हैं , इसलिए, यदि वह चलाता है तो क्रेडेंशियल्स को कैश नहीं किया जाएगा क्योंकि वे दर्ज नहीं किए जाएंगे। मेरे द्वारा दिए गए उदाहरण को देखें, आप देख सकते हैं कि मैंने इसे चलाया था और उसके बाद मुझे पासवर्ड के लिए प्रेरित किया गया था। sudo shutdown -r ...sudo shutdown -H
जॉन डोए

3
वास्तव में, यह समझा जाता है। लेकिन, उस परिदृश्य पर विचार करें जिसमें अंतिम आदेश के साथ उपसर्ग किया sudoगया था और NOPASSWDऑपरेशन नहीं था ; एक फ़ाइल को रूट के रूप में संपादित करने के लिए कॉल की तरह। इस उदाहरण में, पासवर्ड कैश्ड हो जाएगा और उसके बाद आने वाली कॉल से sudo shutdown -Hगुजरना होगा। sudoइससे बचने के लिए पासवर्ड कैशिंग अक्षम होना चाहिए।
कॉस्मिक ओस्सिफ्रेज

2
इस स्थिति में, आप पासवर्ड कैशिंग अक्षम करने के लिए सही हैं, +1। सुझाव के साथ मेरी टिप्पणी संपादित की। धन्यवाद!
जॉन डो

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

10

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

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


9

आरएचईएल आधारित वितरणों में गड़बड़ी को रोकने के लिए पहले से ही उपनामों की स्थापना की गई है rm, cpऔर mvजो रूट उपयोगकर्ता द्वारा निष्पादित किए जाने पर कुछ अधिक विनाशकारी हो सकता है।

आप अपने खुद के उदाहरण के लिए जोड़ सकते हैं:

#/root/.bashrc
alias poweroff='echo  "poweroff: Command disabled - THINK before you type.
  Use /usr/sbin/poweroff if you really want to drive to the DC to restore power."'

2
यह shutdown -rअक्षम करते समय कैसे रहता है shutdown -P -H?
MSALERS

3

गलती से आह्वान करने के लिए असंभव कुछ करने के लिए शटडाउन निष्पादन योग्य का नाम बदलें।

फिर उर्फ shutdownहोना(whatever) -r


1
क्या आप समझा सकते हैं कि निष्पादन योग्य का नाम कैसे बदला जाए? क्या यह भविष्य में पैकेज के उन्नयन को तोड़ सकता है?
AL

2
@ क्या यह भविष्य में पैकेज के उन्नयन को तोड़ सकता है? हाँ यह हो सकता है। यह पहले से स्थापित चीजों को भी तोड़ सकता है। सामान्य तौर पर, ओएस इंस्टॉलेशन के कुछ हिस्सों के साथ गड़बड़ करना एक बहुत बुरा विचार है।
एंड्रयू हेनले

1
इस बात से सहमत। यह उर्फ ​​के shutdownलिए पर्याप्त है /sbin/shutdown -r। नाम बदलना आवश्यक नहीं है; के रूप में उपनाम विस्तार एक निरपेक्ष पथ को संदर्भित करता है यह पुनरावर्ती उर्फ ​​विस्तार के अधीन नहीं है।
MSALERS

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