उपयोगकर्ता को बिना पासवर्ड के systemctl / systemd सेवाएं चलाने की अनुमति देता है


25

मैं डिफ़ॉल्ट उपयोगकर्ता चाहता हूं, ubuntuजो पासवर्ड के लिए संकेत दिए बिना एक विशिष्ट सेवा चलाने में सक्षम हो।

विशेष रूप से systemctl restart unicorn_my_app.service

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

$ getent group LimitedAdmins
LimitedAdmins:x:1001:ubuntu

निम्न पाठ वाली निर्देशिका में एक नई फ़ाइल, limitedadmins(उपयोग करके sudo vim) बनाई गई /etc/sudoers.d:

%LimitedAdmins ALL=NOPASSWD: /etc/init.d/unicorn_ofn_america restart, /etc/init.d/unicorn_ofn_america start

मैंने भी कोशिश की है:

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl/unicorn_ofn_america restart, /bin/systemctl/unicorn_ofn_america start

(और /bin/systemd)

सामग्री /etc/sudoers/डिफ़ॉल्ट है sudo visudo(या sudo cat /etc/sudoers) के साथ की पुष्टि की :

    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # Please consider adding local content in /etc/sudoers.d/ instead of
    # directly modifying this file.
    #
    # See the man page for details on how to write a sudoers file.
    #
    Defaults    env_reset
    Defaults    mail_badpass
    Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

    # Host alias specification

    # User alias specification

    # Cmnd alias specification

    # User privilege specification
    root    ALL=(ALL:ALL) ALL

    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL

    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL

    # See sudoers(5) for more information on "#include" directives:

    #includedir /etc/sudoers.d

(हैश साइन इन #includedirएक टिप्पणी नहीं है, लेकिन # निर्देश के सिंटैक्स का हिस्सा है )।

हालाँकि अभी भी एक पासवर्ड प्रॉम्प्ट चल रहा है systemctl restart unicorn_my_app.service

सेवा init.dनिर्देशिका में है:

$ ls -l /etc/init.d | grep unicorn
-rwxr--r-- 1 ubuntu ubuntu 1874 Oct 29 06:47 unicorn_my_app

755एप्लिकेशन पर chmodding की कोशिश की , लेकिन लगता है कि एक फर्क नहीं करना चाहिए, क्योंकि ubuntuयह वैसे भी मालिक है।

यहां तक ​​कि बिना किसी अंतर के सिस्टम को रिबूट करने की कोशिश की। क्या मुझे एक कदम याद आ रहा है, जैसे एक पुनः आरंभ / पुनः लोड)? कुछ गलत हो रहा है?

मुझे यह भी उल्लेख करना चाहिए कि मैंने vimनई फ़ाइल बनाई थी /etc/sudoers.d, क्योंकि ऐसा लगता है कि visudoकमांड केवल संपादन के लिए है /etc/sudoers


जवाबों:


38

Sudoers फ़ाइल काफी लचीली है, और इसके साथ जटिलता आती है। आप यहां क्या चाहते हैं /bin/systemctl, विशिष्ट मापदंडों के साथ कमांड तक पहुंच की अनुमति है :

%LimitedAdmins ALL=NOPASSWD: /bin/systemctl restart unicorn_my_app.service

मूल रूप से आप बस सटीक कमांड लाइन लेते हैं जिसे आप टाइप करेंगे, सुरक्षा के लिए पथ नाम को हार्ड-कोड करेंगे और उसे अपने sudoers फ़ाइल (या /etc/sudoers.d) में डाल देंगे । और ध्यान दें कि 'आरंभ' और 'पुनः आरंभ' पूरी तरह से अलग हैं जहां तक ​​कि सूडो का संबंध है; एक को अनुमति देना दूसरे को पहुंच प्रदान नहीं करेगा।


1
लगता है काम नहीं कर रहा है। मैं /bin/systemctl restart unicorn_my_app.serviceसीधे /etc/sudoers.d/limitedadminsफाइल से कॉपी कर सकता हूं और इसे CLI में चला सकता हूं, और पासवर्ड के लिए प्रेरित किया जा सकता है। क्या उपयोगकर्ता ubuntuको tp की आवश्यकता कहीं पर निर्दिष्ट की गई है या ALLइसे सभी उपयोगकर्ताओं के लिए सभी डोमेन के लिए खोल दिया गया है?
मिकीएलएल

5
आप दौड़ेंगे sudo /bin/systemctl restart unicorn_my_app.serviceऔर यह पासवर्ड के बिना चलना चाहिए। (यदि PsiOps के उत्तर को इस से अलग किया जाता है तो टिप्पणी के रूप में पोस्ट करना)
rosuav

1
@rosuav क्या कोई ऐसा तरीका है जिससे हम systemctl restart myapp.serviceबिना उपयोग किए सीधे इसे चला सकें sudo
काबीरबैध्या

वास्तव में नहीं है, लेकिन आप कमांड को एक स्क्रिप्ट में डाल सकते हैं (सूडो प्रीफ़िक्स के साथ पूर्ण), और फिर उस स्क्रिप्ट को $ PATH पर डाल दिया। या इसे एक शेल उर्फ ​​बनाते हैं।
रोजवू

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