हमें शटडाउन और पुनरारंभ के लिए टर्मिनल में रूट करने की आवश्यकता क्यों है?


65

जब हम संकुल को स्थापित / हटा / अद्यतन करते हैं या कोई भी बदलाव करते हैं जिसके लिए हमें प्रशासकीय विशेषाधिकारों की आवश्यकता होती है, तो हमें उस व्यवस्थापक उपयोगकर्ता के पासवर्ड के लिए संकेत दिया जाता है जिसके पास sudoविशेषाधिकार हैं - यह GUI और टर्मिनल दोनों के माध्यम से होता है।

गुई के माध्यम से शीघ्र

हालाँकि, अगर हम टर्मिनल के माध्यम से शटडाउन और पुनः आरंभ करने का प्रयास करते हैं, तो यह शिकायत करता है कि हमें होना चाहिए root:

$ reboot
reboot: Need to be root

$ shutdown now
shutdown: Need to be root

लेकिन हमें कभी भी पासवर्ड के लिए नहीं कहा जाता है जब हम शीर्ष दाईं ओर कॉग-व्हील के माध्यम से इन क्रियाओं को करते हैं।

कॉग-व्हील मेनू

यह विसंगति क्यों है?


5
अच्छा सवाल .. आप जानते हैं कि मैं वही पूछने वाला था। मेरा परिदृश्य शॉर्ट-कट कुंजियों के साथ उबंटू को बंद करना था। i, e जब कभी भी मैं कुछ नियत कुंजी दबाता हूँ जैसे ctrl + super + s तो यह कमांड को निष्पादित करता है sudo shutdown -h nowलेकिन समस्या यह थी कि shutdownइसके लिए अनुमति के बिना यह कभी काम नहीं करता है .. क्योंकि शॉर्टकट कुंजी दबाने के बाद पासवर्ड कहाँ / कैसे दर्ज करने के लिए कहेंगे .. आशा है कि आप मेरी स्थिति को समझेंगे .. :)
सौरव कुमार

इसे भी देखें: askubuntu.com/questions/1190/…
Takkat

इन्हें भी देखें: unix.stackexchange.com/questions/18503/…
amyassin

जवाबों:


50

यदि आप मशीन को बंद करने की अनुमति देते हैं, तो कॉग-व्हील चेक पर शटडाउन। यह PolicyKit के माध्यम से किया जाता है। शटडाउन के मामले में फ़ाइल में इस बयान /usr/share/polkit-1/actions/org.freedesktop.consolekit.policyकी जाँच की जाती है:

<action id="org.freedesktop.consolekit.system.stop">
  <description>Stop the system</description>
  <message>System policy prevents stopping the system</message>
  <defaults>
    <allow_inactive>no</allow_inactive>
    <allow_active>yes</allow_active>
  </defaults>
</action>

पॉलिसीकीट एक dbus-sendकमांड चलाता है । शटडाउन के मामले में यह होगा:

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

रूट-प्रिविलेज के साथ पृष्ठभूमि में एक डेमॉन चल रहा है जो आपके लिए शटडाउन कमांड को आमंत्रित करता है।

जब आप कमांड लाइन ( shutdown, reboot, halt, ...) के माध्यम से मशीन को "पुराने तरीके" को बंद करने में सक्षम होना चाहते हैं , तो आपको उन कमांडों में suid-bit को जोड़ना होगा। लेकिन जागरूक रहें, आपके सिस्टम पर सभी, जो शेल तक पहुंच है, फिर आपकी मशीन को बंद कर सकता है।


14
एक थोड़ा सुरक्षित विकल्प sudoers पासवर्ड रहित शटडाउन आदि को आसानी से पूरा करने की अनुमति देगा: दर्ज करें sudo visudo, जोड़ें %sudo ALL = NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/halt, /sbin/reboot, सहेजें और बाहर निकलें। इस तरह, एक कमांड-लाइन रिबूट की अभी भी आवश्यकता होगी sudo reboot, लेकिन आपको अपना पासवर्ड दर्ज नहीं करना होगा।
सेबस्टियन थर्स्च्मिड्ट

27

उबंटू GNU / Linux ऑपरेशनग सिस्टम का एक वितरण है जो बदले में यूनिक्स सिस्टम परिवार से संबंधित है - कई आधुनिक ऑपरेटिंग सिस्टम के लिए एक सामान्य वास्तुकला।

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

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

उपर्युक्त पॉलिसीकीट एक मानकीकृत ढांचा प्रदान करके इस प्रक्रिया का विस्तार करता है जिसके माध्यम से लॉगिन प्रबंधक (या जो भी प्रोग्राम शटडाउन सेवा प्रदान करता है) यह जांच सकता है कि उपयोगकर्ताओं को शटडाउन का कारण क्या है, और विच के माध्यम से एक व्यवस्थापक क्रमशः उन अनुमतियों को कॉन्फ़िगर कर सकता है।

कुछ डेस्कटॉप वातावरण IPC- आधारित सेवाओं का उपयोग नहीं करते हैं, बल्कि समान या समान कार्य प्रदान करने के लिए सहायक कार्यक्रमों का एक सेट है। उन सहायक कार्यक्रमों को तंत्र के माध्यम से बुलाया जाएगा, जो सूडो, सूद या सूदो के समान एक नीतिगत तंत्र जैसे सुपरसुसर संदर्भ में बदलने की अनुमति देता है।

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


14

क्योंकि लिनक्स आमतौर पर एक सर्वर या समान के रूप में उपयोग किया जाता है, और एक लिनक्स बॉक्स में एसएसएचिंग, यहां तक ​​कि एक सामान्य उबंटू लैपटॉप, काफी सामान्य है।

बात यह है, आप नहीं चाहते कि SSH पहुंच वाले लोग इसे बंद करने में सक्षम हों, खासकर जब इसका उपयोग करने वाले उपयोगकर्ताओं में अन्य दूरस्थ रूप से लॉग इन किया जा सकता है। GUI तक पहुँच के साथ कोई - ठीक है, वह इसे अपने आप बंद कर सकता है वैसे भी भौतिक शक्ति बटन के साथ।

इसके अलावा, एक दूरस्थ रूप से लॉग इन किया गया उपयोगकर्ता इसे वापस चालू नहीं कर सकेगा।


यह उस समय नहीं हुआ जब मैंने यह प्रश्न पूछा था, लेकिन मुझे लगता है कि उबंटू में विकल्प हैं कि एक दूरस्थ सर्वर में GUI पैकेज स्थापित करें और कमांड लाइन के बजाय GUI पर दूरस्थ सर्वर का उपयोग करें। (विंडोज रिमोट डेस्कटॉप या टीमव्यूअर कैसे काम करता है) के समान। ताकि यह धारणा अवैध हो जाए कि GUI पर Ubuntu का उपयोग करने वाला कोई व्यक्ति भौतिक शक्ति बटन के साथ बंद हो सकता है।
आदित्य

@ आदित्य को उस तरीके से सर्वर सेट करने की आवश्यकता है, जिसे व्यवस्थापक को करने का निर्णय लेना चाहिए
मनीषीर्थ

हाँ। इसके लिए रूट विशेषाधिकारों की आवश्यकता होगी जो पैकेजों को स्थापित करने और आवश्यकतानुसार कॉन्फ़िगर करने में सक्षम हों। लेकिन यह परिदृश्य कल आपके उत्तर को पढ़ते हुए मेरे दिमाग में आया और मुझे लगा कि मैं इसे आपके साथ साझा करूंगा :-)
आदित्य

14

जब मैं GUI के माध्यम से रिबूट करता हूं तो मैं अपने sudoपासवर्ड के बिना कर सकता हूं ।

यदि आप केवल एक लॉग इन हैं तो ही। यदि कोई अन्य उपयोगकर्ता (कंसोल उपयोगकर्ता सहित) हैं, तो आपको रूट पासवर्ड दर्ज करना पड़ सकता है। यह ओएस एक्स और नए विंडोज संस्करणों पर समान है।

ऐसा क्यों है? आंतरिक रूप से ubuntu प्रणाली का क्या हो रहा है?

निम्नलिखित आदेश:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

डी-बस एक आईपीसी तंत्र है - एक ही मेजबान पर चलने वाली प्रक्रियाओं के बीच स्थानीय संचार के लिए एक माध्यम।

U -DP जैसे निम्न-स्तरीय संदेश-पासिंग प्रोटोकॉल की तुलना में D-Bus "स्मार्ट" है। दूसरी ओर, यह संदेशों को असतत वस्तुओं के रूप में ले जाता है - डेटा की निरंतर धाराएँ नहीं।

डी-बस में उस डेटा का संरचित दृश्य होता है जिसे वह वहन करती है, और द्विआधारी रूप में डेटा से संबंधित है; विभिन्न चौड़ाई, तार और इतने पर की अभिन्न संख्या। क्योंकि डेटा डी-बस के लिए "कच्चे बाइट्स" नहीं है, संदेशों को मान्य किया जा सकता है।

- फ्री स्कूटी

shutdownयदि कोई लॉग इन है तो कमांड केवल यह जाँच क्यों नहीं करता है? यह एक ईमानदार सुविधा के लिए ईमानदार लगता है। मैं कल्पना कर सकता हूं कि यह कभी-कभी समय बचाएगा, लेकिन एक सुसंगत कंसोल को अक्सर पसंद किया जाता है। मैं नहीं चाहता कि इसे चलाने के बाद कमांड को कभी-कभी पासवर्ड की आवश्यकता हो, और कभी-कभी नहीं।

मेरे सर्वनाम वह / उसके हैं


वहाँ भी qdbus अनुप्रयोग के माध्यम से छोटे संस्करण है
Sergiy Kolodyazhnyy

जब एक DE (GNOME इस मामले में) से बंद / लॉगिंग बंद कर रहा हूँ, तो मुझे रूट / उपयोगकर्ता का sudoपासवर्ड न तो GDM के माध्यम से लॉग इन करने के लिए कहा गया है और न ही किसी अन्य उपयोगकर्ता के साथ tty के माध्यम से लॉग इन किया गया है।
कोस

@kos हू, यह अजीब है। वह स्क्रीनशॉट Gnome 3 का है, और मैं gui और tty पर लॉग इन हूँ
टिम

मेरा मतलब है कि मुझे एक ही संदेश मिलता है, लेकिन "पावर ऑफ" पर क्लिक करने से बस आगे बढ़ता है और सिस्टम को बंद कर देता है। मैंने फैबी को यह परीक्षण करने के लिए भी कहा और यह उसके लिए भी ऐसा ही करता है, निश्चित नहीं कि वह क्या है।
कोस

@ कोस ओह। हू हैंग हो गया।
टिम

9

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

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

कारण यह है कि शटडाउन सुपर-यूजर पासवर्ड के लिए GUI प्रॉम्प्ट प्रदान नहीं करता है, संभवतः यह है कि वहां कोई वास्तविक उपयोगिता प्राप्त न हो - यदि आप कंसोल पर हैं, जहां प्रॉम्प्ट दिखाई देगा, तो आप बस कॉग का उपयोग कर सकते हैं- इसके बजाय घर का मेनू। यदि आप शटडाउन के लिए सुपर-यूजर पासवर्ड के लिए कमांड-लाइन प्रॉम्प्ट करना चाहते हैं, तो वह पहले से ही "sudo शटडाउन" के साथ उपलब्ध है।


5

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

Ditto हाल्ट और पॉवरऑफ कमांड भी।


2
आपके उत्तर के लिए धन्यवाद, मुझे समझ में आता है कि मैं एक मशीन के उपयोगकर्ता के रूप में दर्जनों द्वारा उपयोग किए जाने वाले मशीन को रिबूट करने में सक्षम नहीं होना चाहिए, लेकिन जब मैं माउस के माध्यम से रिबूट करना चुनता हूं तो उबंटू (या बहुत सारे डेस्कटॉप डिस्ट्रोस) क्या करता है कीबोर्ड के बजाय वे priveliges के बिना अनुमति देते हैं।
अस्को

3
Systemctl, loginctl, systemd, system नीतियाँ, आदि जैसे घटक सभी वर्तमान में लॉग इन उपयोगकर्ता को डेस्कटॉप अनुभव को अधिक उपयोगकर्ता-अनुकूल बनाने के लिए स्पष्ट रूप से रूट एक्सेस की आवश्यकता के बिना कुछ मूल कार्यों तक पहुंचने की अनुमति देते हैं, लेकिन ये जरूरी नहीं कि कमांड लाइन को कॉल करें उन कार्यों को करने के लिए आदेश देता है।
जेफ सेरेनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.