सभी उपयोगकर्ताओं के लिए "systemctl पड़ाव" की अनुमति दें? (सिस्टमड + डेबियन)


0

क्या सभी उपयोगकर्ताओं के लिए "सिस्टमैक्टल हाल्ट" की अनुमति देना संभव है?

वर्तमान में केवल आदेश:

systemctl poweroff & systemctl reboot work on my system (Debian Jessie)

जब मैं एक सामान्य उपयोगकर्ता के रूप में सिस्टमैक्टल हाल्ट कहता हूं, तो मुझे निम्न संदेश मिलता है:

Failed to start halt.target: Access denied

मैंने निम्नलिखित विधियों की कोशिश की:

  1. विधि - मैंने इसमें एक नई क्रिया जोड़ने का प्रयास किया: /usr/share/polkit-1/actions/org.freedesktop.login1.policy

मैंने कार्रवाई की प्रतिलिपि बनाई

<action id="org.freedesktop.login1.power-off"> to
<action id="org.freedesktop.login1.halt">
  1. विधि (और जो काम किया) यूएम / s / sbin / पड़ाव chmod करने के लिए था, लेकिन क्योंकि / sbin / पड़ाव एक लिंक है -> / बिन / systemctl यह शायद एक अच्छा विचार नहीं है

ध्यान दें कि haltऔर systemctl haltदो अलग-अलग कमांड हैं। यहां तक ​​कि अगर कोई दूसरे के लिए सहानुभूति रखता है, तो भी वे अलग तरह से व्यवहार करते हैं।
विशालता

जवाबों:


2

चरण 1: डेबियन स्ट्रेच जारी होने तक कई महीनों तक प्रतीक्षा करें - आपको कम से कम systemd v227 की आवश्यकता है, जिसमें कम से कम 2ac3930f (पॉलकिट चेकिंग के लिए /sbin/halt) और 88ced61b ( systemctl haltआदि के लिए विस्तारित पोलकिट डेटा ) शामिल हैं।

चरण 2: एक पोलकिट नियम बनाएँ ...वास्तव में, नहीं, यह पर्याप्त नहीं होगा क्योंकि यहां तक ​​कि स्ट्रेच में अभी भी पोलकिट v0.105 है , जिसने अभी तक जेएस-आधारित नियमों का समर्थन नहीं किया था; केवल बहुत अधिक सीमित .pklaप्रारूप। कहा कि, v0.113 अंत में "प्रयोगात्मक" है।

लेकिन अगर आप systemd youv227 और polkit 0v0.113 में अपग्रेड करते हैं, तो इस तरह का नियम काम करना चाहिए:

/* copy to /etc/polkit-1/rules.d/systemd-allow-halt.rules */

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.systemd1.manage-units" &&
        action.lookup("unit") == "halt.service")
    {
        return polkit.Result.YES;
    }
});

इसलिए systemctl poweroffइसके बजाय खुद को टाइप करना सिखाएं । "हॉल्ट" सामान्य शटडाउन कमांड नहीं है; यह सचमुच मशीन को रोकने की आज्ञा है - इसे बंद किए बिना। यह बहुत उपयोगी नहीं है।

यदि आप इसे उपयोगी पाते हैं, तो इसके बजाय sudo का उपयोग करें :

# /etc/sudoers

ALL ALL=(root) NOPASSWD: /usr/bin/systemctl halt, /sbin/halt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.