इन क्रियाओं के लिए उपयोगकर्ता की पहुँच को पोलकिट द्वारा नियंत्रित किया जाता है। विशेष रूप से, वे निम्नलिखित क्रियाओं के अनुरूप हैं:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
इन सभी कार्यों को सक्रिय स्थानीय उपयोगकर्ताओं के लिए डिफ़ॉल्ट रूप से अनुमति दी जाती है (हालांकि consolekitआगे केवल दो अनुमतियों को केवल तभी काम करने के लिए प्रतिबंधित करता है, जब सिस्टम में कोई एकल उपयोगकर्ता लॉग इन हो)।
यदि आप इन क्रियाओं को निष्क्रिय करना चाहते हैं तो एक फाइल बनाएं /etc/polkit-1/50-local.d/disable-shutdown.pklaजिसमें कुछ ऐसा हो:
[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no
इससे उन कार्यों को पूरा होने से रोका जाना चाहिए। इन नीति फ़ाइलों के बारे में अधिक जानकारी चलकर पाई जा सकती है man pklocalauthority।
यदि आप rootहालांकि प्रतिबंधित करने की कोशिश कर रहे हैं , तो यह केवल एक छोटी सी असुविधा होगी। परिभाषा के rootअनुसार, पारंपरिक UNIX विवेकाधीन अभिगम नियंत्रण प्रणाली के अनुसार एक अप्रतिबंधित खाता है। यदि आप उन उपयोगकर्ताओं पर भरोसा नहीं कर सकते हैं, जिनके लिए आपने पूरी rootपहुँच दी है, तो आपको सिस्टम बंद करने की तुलना में उनसे बड़ी समस्याएं मिली हैं।
ध्यान दें कि बाद के Ubuntu संस्करणों में किसी ने संगतता को तोड़ने का फैसला किया। जैसा कि 14.04 में lightdm से शटडाउन / रिबूट को अक्षम करने का उत्तर दिया गया है? कार्रवाई "org.freedesktop। login1 .reboot" (और इस तरह) में परिवर्तित हो गई है ।
14.04 में उदाहरण के लिए निम्न पंक्तियों को /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pklaकाम के रूप में जोड़ना है :
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
इसके अलावा ध्यान दें कि यह विधि पूरी तरह से रिबूट / आदि कमांड को GUI से जारी करती है। कमांड लाइन से रिबूट / आदि कमांड को ब्लॉक करने के लिए, सभी उपयोगकर्ताओं के लिए शटडाउन कमांड को अक्षम करने के लिए मूल-परिणाम का उपयोग किया जा सकता है , यहां तक कि रूट-परिणाम भी?
shutdownऔरpm-suspendसे/sbin/और/bin/