सवाल डरावनी टर्मिनल कमांड को कैसे अक्षम करें?


आप डरावनी टर्मिनल कमांड को कैसे अक्षम करते हैं?

मैं भौतिक सर्वर तक पहुंच के बिना रिमोट उबंटू सर्वर तक पहुंचने के लिए एसएसएच का उपयोग कर रहा था। मैंने सोचा कि मैं टाइप कर रहा था 'shutdown'उबंटू ओएस पर चल रहे नोएसक्यूएल सर्वर में, लेकिन असल में मैंने उबंटू सर्वर को बंद करने के लिए कहा। तब मुझे सर्वर व्यवस्थापक को यह बताना पड़ा कि मैंने क्या किया ताकि वह मेरे लिए भौतिक सर्वर शुरू कर सके। वह शर्मनाक था!

मैं इसे फिर से होने से कैसे रोक सकता हूं?


82
2018-06-18 14:52


मूल


आम तौर पर इसके संबंध में, लंबाई में चर्चा की गई है rm जिसकी तुलना में दुष्प्रभाव खराब है shutdown। निचली पंक्ति: यदि आप यादृच्छिक कमांड को रूट के रूप में चलते रहते हैं तो बुरी चीजों को होने से रोकने का कोई तरीका नहीं है। - Dmitry Grigoryev
जैसा कि अन्य लोगों ने अलियासिंग के बारे में उल्लेख किया है, ऐसा करने से लोग "गैर-मानक तरीके से काम करने वाले आदेश की आदत में आ सकते हैं।" तो क्या यह किसी और के लिए बुरा लगता है कि मूर्खतापूर्ण NoSQL सर्वर इस कमांड का उपयोग करता है? - bmb
मैं जिस नोएसक्यूएल सर्वर का उपयोग कर रहा था वह रेडिस है। - MelodiousFires
बस रूट खाते के तहत काम नहीं करते हैं। - alk
मुझे हिम्मत है कि आपने सबक सीखा है, इसलिए किसी भी कमांड को फिर से अक्षम करने की आवश्यकता महसूस नहीं करनी पड़ेगी। मैं आपको मूर्खतापूर्ण सबूत जीएनयू / लिनक्स भी नहीं जोड़ूंगा, आप मूर्खों से बेहतर हो जाते हैं।


जवाब:


मानक उत्तर "रूट के रूप में लॉगिन नहीं है"। रूट के रूप में चलने वाले सभी आदेश डरावने हैं। यदि यह कोई विकल्प नहीं है तो आप कुछ उपनाम आदेशों को अपने अंदर डाल सकते हैं .bashrc उन आदेशों को अक्षम करने के लिए जिन्हें आप विशेष रूप से डरावना पाते हैं। उदाहरण के लिए:

for scary in shutdown halt  reboot rm
do
    alias $scary="echo If you really want to do that, type: `which $scary`"
done

फिर, यदि आप शटडाउन टाइप करते हैं तो आपको निम्न संदेश प्राप्त होगा:

If you really want to do that, type: /sbin/shutdown

(सुनिश्चित करो तुंहारे .bashrc पहले लोड किया गया है, इससे पहले कि आप इसे आजमाएं एक उत्पादन सर्वर पर)

अपना वर्तमान छोड़ना ssh सत्र और फिर से लॉग इन, या उपयोग . ~/.bashrc लोड / रन .bashrc चाहिए। शायद दौड़ने की कोशिश करो rm यह सुनिश्चित करने के लिए कि आपके सर्वर ने स्वचालित रूप से लोड नहीं किया है, किसी भी तर्क के बिना .bashrc लॉग इन या इसी तरह पर।

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

आप लॉगआउट या बाहर निकलने जैसे कम डरावनी कमांड के साथ इसे आजमा सकते हैं।


204
2018-06-18 15:19



रूट के रूप में लॉगिन मत करो: अगर आप जिस मशीन में लॉग इन हैं, उसे भ्रमित कर रहे हैं तो यह आपकी सहायता नहीं करेगा। मैं सुझाव दूंगा संकेत बदल रहा है ऐसा कुछ जो आपको एक दृश्य क्यू देगा। - isanae
"अनुभव" के लिए "डरावना" आदेशों को "सुरक्षित" व्यवहार करना मेरे अनुभव में एक बुरा विचार है। ऐसा इसलिए होता है क्योंकि लोग गैर-मानक तरीके से काम करने वाले कमांड की आदत में आते हैं जो उन्हें वेनिला सिस्टम पर होने पर कुछ बहुत ही खेदजनक चीजें कर सकते हैं। रूट के रूप में लॉग इन करते समय सरल जवाब बहुत सावधानीपूर्वक चलना है। - TimGJ
@isanae शॉर्टकट जिसे मैं उत्पादन सर्वर पर एसएसएच के साथ टर्मिनल खोलने के लिए प्रयोग करता था, टर्मिनल पृष्ठभूमि लाइट लाल कर देगा। इससे मुझे ध्यान देना पड़ा। - Peter A. Schneider
source एक उपनाम है . और सभी गोले द्वारा समर्थित नहीं है। - gronostaj
यह भी ध्यान रखें कि डेबियन और विस्तार से, उबंटू के पास डिफॉल्ट है ~/.bash_profile स्रोत .bashrc, यह मानक व्यवहार और अधिकांश प्रणालियों पर नहीं है, .bashrc ssh के माध्यम से लॉग इन करते समय पढ़ा नहीं जाता है, इसलिए इससे कोई फर्क नहीं पड़ता है। उपनाम जोड़ने के लिए यह बेहतर है ~/.profile या ~/.bash_profile बजाय। - terdon


sudo एक कारण के लिए मौजूद है - इसका इस्तेमाल करें। जब आपका आदेश (इस मामले में एक इंटरैक्टिव सीएलआई) समाप्त हो जाता है, तो आप अपने उपयोगकर्ता-स्तरीय खोल पर वापस आ जाते हैं, रूट रूट नहीं। रूट खोल में होने के बहुत कम योग्य कारण हैं। (मुझे आश्चर्य है कि यह पहले से ही एक जवाब नहीं है ...)

ऐसा कहकर, एक मपेट नहीं है जो उपयोग करता है sudo के लिये सब कुछ। समझें कि आप क्या कर रहे हैं, और समझते हैं कि यह रूट विशेषाधिकारों की आवश्यकता क्यों नहीं है।


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

My PS1

यह "तुंहारे"खाता, लेकिन यदि आप गंभीरता से सुरक्षा / sysadminning ले रहे हैं, तो आप पासवर्ड / खाते साझा नहीं करेंगे, और आप पूरी तरह से जागरूक किए बिना रूट खोल में बैठे नहीं होंगे।


जैसे-जैसे लोगों ने कहा है, और बार-बार, "एक सुरक्षित वातावरण बनाने के लिए aliasing आदेश एक बुरा विचार है"आप अपने सुरक्षित वातावरण में सहज महसूस करने जा रहे हैं, उन 'डरावनी' कमांड टाइप करें जहां आपको नहीं करना चाहिए। फिर एक दिन आप नौकरियां बदल देंगे, या एक नई मशीन में लॉगिन करेंगे, और फिर"अरेप्सी, मेरा मतलब यह नहीं था, मुझे खेद है"...


73
2018-06-19 11:40



sudo कॉफी पाने के लिए यह तुम्हारी बारी है। - ivan_pozdeev
क्या उसके साथ एक ही समस्या नहीं होगी sudo shutdown? अगर वह गलत मशीन पर इसे निष्पादित करता है, तो यह अभी भी एक आपदा होगी। - Barmar
@ बाड़ार नोएसक्यूएल सुडो कमांड को समझता है? - Taemyr
@Taemyr sudo एक शेल कमांड है, इसका डेटाबेस से कोई लेना देना नहीं है। - Barmar
@ बाड़ार: असल में मुझे लगता है कि ओपी को इसे नोएसक्यूएल सेमीडलाइन प्रोग्राम में टाइप करना था, न कि बाश में। तो वे टाइप नहीं किया होता sudo shutdown, क्योंकि मुझे लगता है sudo NoSQL कमांड नहीं है। एक रूट खोल में नहीं होने से उस समस्या को पूरी तरह से हल किया जाएगा और यह एक बहुत अच्छा विचार रहा है। तो महत्वपूर्ण आदेशों को चलाने से पहले तत्काल सावधानी से देख रहे होंगे। - Peter Cordes


पैकेज 'मौली-गार्ड' (कम से कम डेबियन व्युत्पन्न सिस्टम पर) शटडाउन, रुकने, पावरऑफ और रीबूट के आसपास एक रैपर स्थापित करेगा। यदि यह पता चलता है कि टर्मिनल एक दूरस्थ है, तो यह होस्ट के नाम के लिए संकेत देगा। यदि यह मेल नहीं खाता है, तो आदेश रद्द कर दिया गया है।


44
2018-06-18 16:18



अन्य (तर्कसंगत रूप से अधिक डरावनी) चीजों के बारे में क्या rm -rf /? - marcellothearcane
@marcellothearcane set -u कुछ मामलों में, जब लिखते समय उसमें मदद कर सकते हैं rm -rf /$SOME_VARIABLE_WHICH_I_THOUGHT_EXISTS_BUT_DOESNT। - Alex Hall
@marcellothearcane एक आधुनिक लिनक्स सिस्टम जैसा कुछ भी है, जिसकी जरूरत है --no-preserve-root जो आपको दुर्घटना से टाइप करने की संभावना नहीं है। - α CVn
मौली कौन है, मुझे आश्चर्य है ... शायद किसी की बिल्ली। - the0ther
@ the0ther, एक 2 साल का बच्चा, जिसने डायनासोर मशीन पर एससीआरएएम स्विच ट्रिगर किया, उसी दिन दो बार। कमरे में लोगों ने स्विच पर एक कवर रगड़ दिया। catb.org/jargon/html/M/molly-guard.html - CSM


मैंने एक जवाब स्वीकार कर लिया कि मुझे बहुत पसंद है, हालांकि, अगर कोई और पढ़ रहा है और एक सरल जवाब चाहते हैं, तो यह मेरा है।

.Bashrc फ़ाइल ढूंढें और अंतिम पंक्ति के रूप में रखें:

alias shutdown=notforuse

फिर जब आप शट डाउन टाइप करते हैं तो आपको कुछ मिलता है ~bash: notforuse is not a command

यह मूर्खतापूर्ण हो सकता है लेकिन यह आसान है और यह काम करता है। हालांकि, ऐसा करने के बेहतर तरीकों के साथ मैं उत्तर की सराहना करता हूं!


4
2018-06-18 15:29



एचएम, मैं इसके साथ ऐसा करता था rm लोगों को टोल करने के लिए - alias rm='echo "You can't use rm!" #' - MD XF
मुझे लगता है कि तीन कारणों से यह एक बुरा विचार है। सबसे पहले, यह किसी और के लिए भ्रमित है जिसकी मशीन तक रूट पहुंच है। दूसरा, यह आपको प्रशिक्षित करता है कि "शट डाउन" टाइप करना ठीक है और एंटर दबाएं, जिसका अर्थ है कि आपको अगली प्रणाली पर एक ही गलती करने की संभावना है जिसके पास आपके पास रूट पहुंच है। तीसरा, अगर कभी वैध आदेश कहा जाता है तो यह बेहद भ्रमित हो जाएगा notforuseपथ पर। - David Richerby
मैं इस पर @ डेविड रिचर्बी के साथ हूँ। अच्छा विचार नहीं। - Tico
यदि आप वास्तव में उपनाम का उपयोग करना चाहते हैं, तो आप कम से कम उन सभी को डाल सकते हैं डरावनी कमांड एक फ़ाइल में उपनाम, हम कहते हैं ~/.SaveMyReputation और अपनी आखिरी पंक्ति के रूप में जोड़ें .bashrc एक लाइन के रूप में [ -f ~/.SaveMyReputation ] && source ~/,SaveMyReputation। आप अंततः एक अतिरिक्त लाइन जोड़ना चाहते हैं echo "#Scaring command protected shell, comment the last line of .bashrc and log again to have a full working shell" उस फाइल के अंदर। कम से कम आप इस उपनाम फ़ाइल को अन्य मशीन पर ला सकते हैं (यह होना चाहिए .bash_aliases, लेकिन इसमें "पदावनत" मामला किसी अन्य नाम का उपयोग करना बेहतर है)। - Hastur
यदि आप ऐसा करने जा रहे हैं, तो नाम का उपयोग करके इसे कम भ्रमित कर दें alias shutdown=shutdown-disabled-by-an-alias। (यह केवल तीसरी और सबसे मामूली समस्या को संबोधित करता है जिसे @ डेविड रिचर्बी ने इंगित किया।) हालांकि यह अभी भी अगले व्यक्ति को देखने से देखने के लिए केवल 2 सेकंड लेगा notforuse is not a command चलाने के लिए type -a shutdown और उपनाम खोजने, फिर टाइपिंग sudo \shutdown उपनाम विस्तार अक्षम करने के लिए। (मान लीजिए कि उनके पास था sudo अलियाड sudo='sudo ' इसलिए यह अपने पहले तर्क में उपनाम फैलाता है)। - Peter Cordes


हो सकता है कि आप कुछ नए उबंटू मूर्खता के शिकार हो जाएं।

उबंटू सामान्य, क्लासिक था shutdown आदेश जो एक अनिवार्य समय तर्क लेता है।

अगर मैं टाइप करता हूं तो उबंटू 12 पर क्या होता है shutdown, एक नियमित उपयोगकर्ता के रूप में भी:

$ shutdown
shutdown: time expected
Try `shutdown --help' for more information.

फिर

$ shutdown +100
shutdown: need to be root.

अब, उबंटू 16.10 है। मैं जड़ नहीं हूँ:

$ date ; /sbin/shutdown
Fri Jun 23 16:00:16 PDT 2017
Shutdown scheduled for Fri 2017-06-23 16:01:16 PDT, use 'shutdown -c' to   cancel.

बिना किसी तर्क के, यह 60 सेकेंड के बाद शटडाउन शेड्यूल करता है, और यहां तक ​​कि यदि आप रूट नहीं हैं- केवल व्यवस्थापक विशेषाधिकारों के साथ एक खाता है।

दोष कैनोलिक।


2
2018-06-23 22:54



/sbin/shutdown  द्वारा प्रदान किया जाता है systemd-sysv पैकेज डिफ़ॉल्ट रूप से, तो यह उबंटू मूर्खता नहीं है, यह है systemd मूर्खता, और यह उबंटू से नहीं आता है, लेकिन कम से कम डेबियन से, जो बदले में, पूरी तरह से लगता है systemd रेड हैट से आंदोलन। दोष देते समय, सही इकाई को दोष दें - न केवल आप जिसे नापसंद करते हैं। - Ruslan
@ रूस्लान कोई भी जो इस बकवास को अपने डिस्ट्रो में पैकेज करता है वह मूर्खता के दोष से बच निकलता है। - Kaz


के लिये shutdown (reboot, halt और संबंधित): मेरे पास एक प्रतिलिपि है जो मुझसे पूछती है कि क्या मुझे सच में यकीन है (और यह वैसे भी कुछ भी नहीं करता है)। मैं इस तरह की स्क्रिप्ट को स्टोर करता हूं /usr/local/sbin। डेबियन पर यह प्राथमिकता अन्य है /sbin (यह पथ की पहली निर्देशिका है)।

सिस्टम स्क्रिप्ट पूर्ण पथ का उपयोग करते हैं, ऐसे में किराये का मुझे स्थानीय मशीन के बजाय रिमोट सर्वर को रोकने के लिए रोकें (से एक बुरा व्यवहार बहुत बढ़िया डब्लूएम), लेकिन अन्य अप्रत्यक्ष प्रभाव नहीं है, और वास्तव में जब भी जरूरत पड़ती है तब भी मैं उन्हें / sbin / shutdown के रूप में उपयोग कर सकता हूं।


1
2018-06-19 15:39



ऐसे हैक्स केवल तभी काम करते हैं जब आप उन सभी कंप्यूटरों पर लागू होते हैं जिन्हें आपने कभी लॉग इन किया है ... जो अक्सर काफी अव्यवहारिक होता है, और जब तक कि यह बहुत देर हो चुकी न हो तब तक आपको पता नहीं चलेगा: टाइप करके shutdown एक महत्वपूर्ण प्रणाली पर जो करता है नहीं अपना हैक लो - jpaugh
@jpaugh: हाँ, यह एक हैक है, और मैं इसे केवल अपने निजी सर्वर के लिए उपयोग करता हूं, जहां मैं अक्सर लॉग इन करता हूं, और टर्मिनल बहुत अधिक समय तक खुला रहता है। [नोट: मैं अपनी व्यक्तिगत मशीनों के लिए अलग-अलग रंग संकेतों का भी उपयोग करता हूं: रिमोट-रूट, रिमोट-उपयोगकर्ता, स्थानीय-रूट, स्थानीय-उपयोगकर्ता]। असली सर्वर और रिमोट मशीन के लिए, मैं रूट से बचता हूं और जितना संभव हो उतना रूट जड़ जाता हूं, और निश्चित रूप से, उनसे बाहर निकलने के बिना भूल जाते हैं। बस मैं अपने रिमोट्स को "क्लाउड" के रूप में उपयोग कर रहा हूं (क्लाउड प्रचार से पहले, पुराने तरीके से संभाला गया)। - Giacomo Catenazzi


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

कहने के लिए वाक्यविन्यास भी है 'यह आदेश नहीं चला सकता'। इसे चारों ओर काम किया जा सकता है, इसलिए इसे वास्तविक सुरक्षा उपाय के रूप में उपयोग नहीं किया जाना चाहिए, लेकिन यह आपके द्वारा वर्णित परिदृश्य के लिए काम करेगा।

मैन सूडर्स के पास यह सब कुछ सेट करने के बारे में कुछ अच्छे उदाहरण हैं।

बेशक इसे सूडो का उपयोग करने की आवश्यकता है, लेकिन इसे बिना कहने के जाना चाहिए।


1
2018-06-23 16:08