कैसे बनाने के लिए / sbin / shutdown, / sbin / reboot आदि को 16.04 में फिर से sudo की आवश्यकता है?


18

जो भी कारण के लिए, हमें sudoचलाने के लिए रूट (या उपयोग ) करने की आवश्यकता नहीं है /sbin/shutdown, /sbin/rebootआदि।

ऐसा इसलिए लगता है क्योंकि अब वे निष्पादक सिम्लिंक होते हैं /bin/systemctlजो सामान्य उपयोगकर्ता के रूप में सब कुछ संभालते हैं।

हालांकि, क्या होगा अगर मैं चाहता हूं shutdownऔर rebootफिर से रूट प्रमाणीकरण की आवश्यकता है? इसे कैसे प्राप्त किया जा सकता है?


3
मैं पोलकिट नियमों का अनुमान लगाऊंगा। जरूरत के अनुसार askubuntu.com/a/570969/158442 संशोधित करें ( pkaction | grep login1ब्याज के अन्य नियमों के लिए उपयोग करें )
muru

3
(व्यवस्थापक विशेषाधिकारों की आवश्यकता के लिए नियमों का एक उदाहरण: askubuntu.com/a/744094/158442 )
मुरु

1
क्या यह केवल तभी नहीं है जब आप लॉग इन करने वाले एकमात्र व्यक्ति हैं। यदि सिस्टम में कोई और लॉग इन है तो आपको रूट पासवर्ड डालने के लिए कहा जाएगा।
11

यह वह उत्तर नहीं हो सकता है जिसकी आप अपेक्षा कर रहे हैं, लेकिन एक समान व्यवहार दूसरे व्यवस्थापक उपयोगकर्ता द्वारा आपके '/ etc / sudoers' को संपादित करने के कारण हो सकता है। यदि यह वही है जो आपके मुद्दे का कारण बन रहा है, तो आप इसे टाइप करके वापस बदल सकते हैं sudo visudoऔर जांच सकते हैं कि क्या इन निष्पादनों के मार्ग के साथ कोई रेखा है।
डेमियन

जवाबों:


5

Systemd वास्तव में क्या करता है shutdown, rebootऔर अन्य आदेश, और डिफ़ॉल्ट सौंपा विशेषाधिकार अनुमोदक हैं। इसे बदलने के लिए, आपको एक Polkit नियम बनाने की आवश्यकता है। युक्त (कहना ) .pklaमें एक फ़ाइल बनाएँ :/etc/polkit-1/localauthority/50-local.dconfirm-shutdown.pkla

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

विभिन्न शटडाउन, रिबूट, आदि कमांड हैं, पोलकिट शब्दों में org.freedesktop.login1, उदाहरण के लिए, org.freedesktop.login1.power-offऔर org.freedesktop.login1.reboot, आदि में कार्य। यहां विशिष्ट समस्या डिफ़ॉल्ट कॉन्फ़िगरेशन है, जो इसमें है /usr/share/polkit-1/actions/org.freedesktop.login1.policy:

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

ध्यान दें कि यह सक्रिय उपयोगकर्ता को बिजली बंद करने, रिबूट करने आदि की अनुमति देता है।


0

आप chmodकमांड का उपयोग कर सकते हैं ।

  • यदि आप केवल रूट को एक्सेस देना चाहते हैं, तो आप लिख सकते हैं:

    chmod 700 directory/to/the/file
    
  • यदि आप रूट और सुडो समूह को अनुमति देना चाहते हैं तो आप लिख सकते हैं:

    chmod 770 directory/to/the/file
    
  • यदि आप फ़ाइल के समूह को sudo से दूसरे में बदलना चाहते हैं (जैसे कोई उपयोगकर्ता या व्यवस्थापक) तो आपको इसमें टाइप करना होगा:

    chown owner:group directory/to/the/file
    
  • यदि आप वापस लौटना चाहते हैं, तो दौड़ें:

    chown root:sudo filedirectory 
    

नोट : आपको sudoइन कमांड का उपयोग करना पड़ सकता है , या रूट खाते में लॉग इन किया है


ध्यान दें कि लिंक की अनुमतियों को बदलने का प्रयास लक्ष्य की अनुमतियों को बदल देगा (इस मामले में /bin/systemctl) इसलिए रनिंग चामॉड / sbin / शटडाउन सभी लिंक को इंगित करेगा /bin/systemctlजो कि अनुमतियों को bin/systemctlबदल देगा क्योंकि कमांड $ ll /bin/systemctl द्वारा पुष्टि की जाएगी। -rwx ------ 1 रूट रूट 659848 जनवरी 18 16:04 / बिन / systemctl *
एल्डर गीक

यदि आपको इसे वापस बदलने की आवश्यकता है, तो डिफ़ॉल्ट अनुमतियाँ हैं-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
एल्डर गीक

0

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

एक और संबंधित पोस्ट यहां पाया जा सकता है


-1

आप एक स्क्रिप्ट बना सकते हैं जो यह जांचती है कि उपयोगकर्ता इसे रूट अनुमतियों के साथ चला रहा है या नहीं।
फिर यह systemctl कमांड या रिटर्न एरर चलाएगा।

#! / Bin / bash
अगर ["$ (whoami)"! = "जड़"]; फिर
    गूंज "क्षमा करें, आप जड़ नहीं हैं।"
    बाहर निकलें 1
अन्य
    (systemctl शटडाउन कमांड)
फाई

स्रोत


4
इस स्क्रिप्ट को दरकिनार करके एक गैर-रूट उपयोगकर्ता को क्या रोकना है?
रॉबी बसाक

-1

टर्मिनल में इसकी अनुमतियों को बदलने का प्रयास करें। आप इसे केवल एक निश्चित समूह द्वारा निष्पादित कर सकते हैं, जैसे कि पहिया या व्यवस्थापक। अफसोस की बात है (या शायद सौभाग्य से), एक फ़ाइल में केवल एक समूह का स्वामित्व हो सकता है, इसलिए केवल आसानी से काम नहीं करेगा। "Sudo chown root: wheel / sbin / shutdown" और फिर "sudo chmod g + x / sbin / shutdown" आज़माएँ। यह फ़ाइल को केवल रूट और एडिंस (कंपकंपी) द्वारा निष्पादित करेगा और sudoers को अपने पासवर्ड दर्ज करने की आवश्यकता होगी।


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

2
यह प्रभावी नहीं है। एक उपयोगकर्ता बस कहीं और से एक systemctl बाइनरी डाउनलोड कर सकता है, और इसके बजाय इसे चला सकता है।
रॉबी बसाक

@ रॉबी, आप किसी भी समाधान के साथ ऐसा कर सकते हैं। आप पावर बटन दबाए रख सकते हैं। मेरा समाधान वह जो पूछता है उसके लिए काम करता है।
जुवेग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.