अन्य उपयोगकर्ता / समूह के रूप में लॉन्च प्रक्रिया (init.d स्क्रिप्ट में)


10

मैं init.d स्क्रिप्ट का संपादन कर रहा हूं। Init.d स्क्रिप्ट एक उपयोगिता स्क्रिप्ट चलाता है जो तब एक प्रक्रिया चलाता है। या तो बश लिपियों से मैं इसे विशिष्ट उपयोगकर्ता और समूह के रूप में मुख्य प्रक्रिया कैसे शुरू करूँगा?

जवाबों:


12

सु (1) कमांड का उपयोग करने का सबसे सरल तरीका है, इसमें एक विकल्प है जो आपको उपयोगकर्ता के शेल के माध्यम से कमांड चलाने की अनुमति देता है, उदाहरण:

su foo -c ls

यह उपयोगकर्ता foo पर स्विच करेगा और ls कमांड चलाएगा। यदि आप जिस उपयोगकर्ता का उपयोग करना चाहते हैं, उसके पास एक वैध शेल नहीं है (अर्थात यह / etc / गोले में नहीं है, जैसे / बिन / गलत या / sbin / nologin) तो आपको कमांड लाइन पर एक शेल निर्दिष्ट करना होगा। आउटपुट के साथ उदाहरण:

# su nobody -s /bin/bash -c id
uid=99(nobody) gid=99(nobody) groups=99(nobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

सु ऐसा नहीं लगता है कि मैं इसे कई तर्क देता हूं। मैं मिलता है Usage: su [options] [LOGIN]औरsu: unrecognized option '--debug'

इसका बिल्कुल काम नहीं है। जब मैं इस लाइन को रूट के रूप में निष्पादित करता हूं su www-data -c ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &तो मुझे एक त्रुटि मिलती है यदि मैं su www-dataसभी वेरिएशन सेट करता हूं और ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &इसे चलाता है तो यह ठीक काम करता है। मैं इसे कैसे हल करूं?

2
@ acidzombie24 suएक एकल तर्क लेता है, जो एक शेल कमांड है। आपको लिखने की जरूरत है su www-data -c '$MONOSERVER "/application=$WEBAPPS" "/socket=unix:/path/monoserve.pid"', और सुनिश्चित करें कि MONOSERVERऔर WEBAPPSमूल शेल द्वारा निर्यात किया जाता है। (नोट: ऐसा न करें su … -c "$MONOSERVER …"क्योंकि यह विफल हो जाएगा यदि किसी भी चर में शेल विशेष वर्ण हैं।) और यदि आपके पास एक समर्पित डेमन लांचर है जैसे किstart-stop-daemon , इसका उपयोग करें।
गाइल्स का SO- दुष्ट होना बंद हो '

गिलेस: ठीक है, मैं init.d स्क्रिप्ट की जगह नहीं ले रहा हूँ? मैं सभी वेरिएबल्स को एक नई स्क्रिप्ट में डाल सकता हूं और लॉन्च कर सकता हूं क्योंकि यह आसान है और मुझे कुछ भी नहीं सीखना होगा। लेकिन स्टार्ट-स्टॉप-डेमॉन के बारे में क्या खास है? मैं उस उत्तर पर एक टिप्पणी छोड़ दूँगा

क्या su या su -lologin का उपयोग करना बेहतर है? मैं सु के आदमी को पढ़ता हूं लेकिन मैं इस विशिष्ट मामले के लिए नहीं समझ सकता हूं
मैसिमो

4

यदि start-stop-daemonआपके सिस्टम पर उपलब्ध है, तो आपको शायद इसका उपयोग करना चाहिए और इसके विकल्पों (विशेषकर -uऔर -gइस मामले में) पर एक नज़र रखना चाहिए ।

(अन्यथा, आप suऔर के संयोजन का उपयोग कर सकते हैं sg।)

अद्यतन: यहाँ कुछ /etc/init.d/mpdस्क्रिप्ट से लिया गया एक उदाहरण है (जो उपयोग करता है start-stop-daemon):

  • प्रारंभ आदेश:

    echo "Starting Music Player Daemon"
    start-stop-daemon --start --quiet --background --exec /usr/bin/mpd \
        --pidfile /var/run/mpd.pid --make-pidfile \
        -- --no-daemon /etc/mpd.conf 2>/dev/null
    

    सब कुछ जो इस प्रकार --है वह /usr/bin/mpdकार्यक्रम का एक तर्क है। (आरंभ-स्टॉप-डेमॉन स्क्रिप्ट द्वारा डेमोंनाइजेशन प्रक्रिया का ध्यान रखा जाता है इसलिए mpdइसे इसके बारे में परवाह नहीं करने के लिए कहा जाता है --nodaemon।)

  • स्टॉप कमांड:

    echo "Stopping Music Player Daemon"
    start-stop-daemon --stop --exec /usr/bin/mpd --pidfile /var/run/mpd.pid
    

तो mpdअपने आप में विशेषाधिकार छोड़ने नहीं किया गया था, एक (उदाहरण के लिए) जोड़ने के लिए की आवश्यकता होगी -u mpd, -g mpdके लिए विकल्प start-stop-daemonआदेश।


मैं प्रारंभ-रोक-डेमॉन के साथ init.d स्क्रिप्ट की जगह नहीं ले रहा हूँ? यह सु और एक स्क्रिप्ट फ़ाइल का उपयोग करने के लिए आसान नहीं होगा? अगर मैं init.d को प्रतिस्थापित करता हूं तो मैं इसे स्टार्टअप पर चलाने के लिए कैसे स्थापित करूं? क्या मैं स्टार्ट-स्टॉप-डेमॉन से गुजर रहा हूँ? -edit- मैं उदाहरण के तौर पर एटीएम जा रहा हूं, शायद मुझे जवाब की जरूरत नहीं है, लेकिन मुझे लगता है कि इसका एक जटिल जवाब है

2
कोई भाग्य नहीं। यहाँ मेरी लाइन है। यह अभी भी जड़ के रूप में चलता है। मैं आदमी पृष्ठों की जाँच की और मैं अभी भी नहीं जानता कि इस बारे में क्या करना है। start-stop-daemon --start --quiet --background -u www-data -g www-data --exec ${MONOSERVER} --pidfile /path/monoserve.pid --make-pidfile -- /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.