लिनक्स बंद करने की अनुमति


8

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

हालाँकि, एक ही डेस्कटॉप वातावरण में, यदि मैं एक सामान्य उपयोगकर्ता के रूप में टर्मिनल (gnome-टर्मिनल कहना) और टाइप करता हूं

shutdown -h now

मुझे इसके द्वारा प्रेरित किया जाएगा

shutdown: need to be root

बंद करने का एकमात्र तरीका एक sudo के साथ कमांड को पूर्वनिर्मित करना है।

क्या कोई समझा सकता है कि ऐसा क्यों है?

धन्यवाद के.सी.


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

जवाबों:


8

K.Chen द्वारा पूछा गया प्रश्न है: मुझे CLO से करते समय sudo विशेषाधिकारों की आवश्यकता क्यों होती है, आहिल मुझे GUI से ऐसा करने पर ऐसे विशेषाधिकारों की आवश्यकता नहीं है।

उत्तर का पहला हिस्सा यह है कि जो लोग Gnome, KDE, Xfce, Mate, Cinnamon, ... जैसे डेस्कटॉप वातावरण डिज़ाइन करते हैं, वे अपने उपयोगकर्ताओं के काम को आसान बनाने की कोशिश करते हैं, और वे sudo क्रेडेंशियल का सामना किए बिना शट डाउन करना और रीबूट करना कॉन्फ़िगर करते हैं। यह, संयोग से, तात्पर्य है कि एक शटडाउन अनुक्रम होना चाहिए जिसमें प्रोग्राम शटडाउन शामिल नहीं है, जिसमें sudo विशेषाधिकारों (उस के आसपास कोई रास्ता नहीं) की आवश्यकता होती है।

मुझे नहीं पता है कि प्रत्येक डीई कैसे करता है, लेकिन मुझे पता है कि आपके सिस्टम को नीचे लाने, या फिर से शुरू / बंद / बंद करने का एक कोमल तरीका है, जिसे रूट विशेषाधिकारों की आवश्यकता नहीं है। आप मूल पोस्ट को आर्क लिनक्स फोरम पोस्ट में पा सकते हैं । संक्षेप में, यह हेज़ कमांड जारी करने की मात्रा है:

पड़ाव

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

रिबूट

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"  /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

dbus-निलंबित

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

हाइबरनेट

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate 

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


1
अगर कोई मशीन में रिमोट लॉगिन करता है जिसमें डेस्कटॉप वातावरण भी चल रहा है, तो क्या वह इन आदेशों को जारी कर सकता है या सफलतापूर्वक शटडाउन / रिबूट / सस्पेंड / हाइबरनेट कर सकता है?
गेरिट

इस प्रश्न का एक दुर्भावनापूर्ण पक्ष है, मेरा मानना ​​है कि कुछ विवेक का प्रयोग किया जाना चाहिए।
MariusMatutiae

1
दुर्भावनापूर्ण क्यों? यदि इसका दुरुपयोग किया जा सकता है, तो sysops को पता होना चाहिए और फिर पता होना चाहिए कि इसके खिलाफ कैसे बचाव करें।
गेरिट

मैं यह नहीं कह रहा हूं कि आप दुर्भावनापूर्ण हैं, लेकिन यह दुर्भावनापूर्ण उपयोग इस जानकारी से हो सकता है। मैं पहले से ही इसे साझा करने के लिए पछता रहा हूं ... शायद मुझे @Matteo की तरह करना चाहिए था
MariusMatutiae

5

इस डिज़ाइन के निर्णय के पीछे का कारण तकनीकी नहीं है (आपके पास एक गैर-विशेषाधिकार प्राप्त shutdownकमांड या GUI में पासवर्ड की आवश्यकता हो सकती है )।

  • डेस्कटॉप वातावरण का उपयोग करते समय उपयोगकर्ता को मशीन तक भौतिक पहुंच प्राप्त होनी चाहिए । फिर उपयोगकर्ता को पावर बटन को पुश करने या पावर कॉर्ड को अनप्लग करने की तुलना में स्वच्छ शटडाउन की अनुमति देने के लिए बेहतर है।

  • शेल का उपयोग करते समय उपयोगकर्ता एक दूरस्थ उपयोगकर्ता हो सकता है और दूरस्थ बंद से बचने के लिए अधिक विशेषाधिकार का अनुरोध किया जाता है।

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


मैं आपकी बात देख रहा हूं, @ मत्ते। लेकिन जैसे MariusMatutiae ने कहा, हुड के तहत DE ने सुपरसुअर विशेषाधिकार के बिना "शटडाउन" के अलावा कुछ कार्यक्रम को बंद करने के लिए कहा होगा। आपके पास कोई सुराग है कि वह क्या है?
के.सी.

1

सूडो (सुपरयूजर करते हैं) एक सिस्टम एडमिनिस्ट्रेटर को कुछ यूजर्स (या यूजर्स) को कुछ कमांड (या सभी) कमांड को रूट करने की क्षमता देता है, जबकि सभी कमांड और तर्क लॉग करते हैं। शटडाउन -h कमांड या init 0 कमांड का उपयोग मशीन को बंद करने के लिए किया जा सकता है। लेकिन दोनों आदेशों को निष्पादित करने के लिए मूल विशेषाधिकार की आवश्यकता है।

/ Sbin में रेखांकित होने वाली कमांड को इसे निष्पादित करने के लिए मूल विशेषाधिकार होना चाहिए। शटडाउन कमांड का स्थान खोजने के लिए,

टर्मिनल में किस प्रकार का शटडाउन

आशा है कि अब आपका संदेह स्पष्ट है :)

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