मैं अपस्टार्ट में गैर विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में नौकरी कैसे शुरू करूं?


14

मैं ubuntu 10.4 LTS के लिए अंतिम अपस्टार्ट संस्करण का उपयोग कर रहा हूं। upstart --debug कर्नेल फ्लैग के साथ लॉन्च किया गया है।

मैं nzbget डेमॉन के लिए एक कस्टम जॉब कॉन्फ़िगरेशन बना रहा हूं। मूल रूप से, इस नौकरी में एक प्री-स्टार्ट स्क्रिप्ट है जो एक फाइल सिस्टम, एक पोस्ट-स्टार्ट स्क्रिप्ट है जो फाइल सिस्टम और एक exec nzbget -Dलाइन को अनमाउंट करता है ।

समस्या यह है कि nzbget डेमॉन को एक गैर-निजीकृत उपयोगकर्ता के रूप में चलाने की आवश्यकता है। यह सुविधा पहले से ही nzbget में शामिल है। दरअसल, जब मैं कंसोल sudo nzbget -Dसे चलता हूं तो प्रक्रिया एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलती है। लेकिन जब मैं exec nzbget -Dलाइन के साथ अपस्टार्ट का काम शुरू करता हूं , तो प्रक्रिया nzbget -D रूट के रूप में चलती है। जैसा कि ऊपर की रसोई की किताब में कहा गया है, मैंने su -c "nzbget -D" उपयोगकर्ता का उपयोग करने की कोशिश की और सलाह के रूप में उम्मीद के श्लोक के बिना स्टार्ट-स्टॉप-डेमॉन दोनों भी शुरू किया। लेकिन दोनों आज्ञाओं के लिए, जैसा कि upstart गलत PID पर नज़र रखता है, मुझे लगता है कि यह मुख्य प्रक्रिया को मारता है (स्टार्टिंग के लिए upstart लॉग के कारण) और प्रक्रिया शुरू होने के अंत में, यह पोस्ट-प्रोसेस स्क्रिप्ट लॉन्च करता है, जो मुझे नहीं चाहिए।

=> मैं इसे सही कैसे कर सकता हूं? यह कैसे होता है कि exec nzbget -Dअपस्टार्ट कमांड प्रक्रिया को रूट के रूप में चलाता है जबकि sudo nzbget -Dकमांड इसे गैर-निजीकृत उपयोगकर्ता के रूप में चलाता है।

जवाबों:


12

संस्करण 1.4 की रिलीज के साथ कुछ प्रगति हुई थी।

नए "सेट्युड" और "सेटगिड" स्टैंजस को दिए गए नाम / समूह के अनुरूप निर्दिष्ट यूआईडी / जीआईडी ​​के तहत सिस्टम जॉब चलाने की अनुमति देता है।

आप इसे उनके लॉन्चपैड पेज से पकड़ सकते हैं लेकिन (अजीब तरह से) मैं एक पीपीए नहीं देख सकता हूं, इसलिए आपको इसे स्वयं संकलित करना पड़ सकता है।

अन्यथा, अपने निष्पादन कमांड का उपयोग करें suया sudoऐसा करें:

su -c "<commands>" <username>
sudo -u <username> <commands>

वे दोनों बहुत ज्यादा एक ही काम करते हैं इसलिए आप जिस किसी के साथ खुश हैं उसे चुनें। तो अपने उदाहरण आदेश का उपयोग कर:

exec sudo -u me "nzbget -D"

डोमेन नाम upstart.at पूर्ववत है
प्रो।

इसके लिए धन्यवाद! अगर मुझे सत्र Init / Jobs आदि का उपयोग करना चाहिए, तो मुझे अपस्टार्ट डॉक्स में स्पष्ट नहीं था
ल्यूक होर्स्टन

4

मैं निम्नलिखित वाक्यविन्यास के साथ sudo का उपयोग करने का सुझाव देता हूं:

sudo -u foouser foocommand

यह उपयोगकर्ता फ़ॉउसर के रूप में कमांड फ़ॉकोमैंड चलाता है।

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