मैं गैर रूट उपयोगकर्ता के रूप में इस डेमन / इनिट को कैसे चला सकता हूं?


19

मेरे पास एक डेमॉन को किक करने के लिए एक init स्क्रिप्ट है। समस्या यह है कि यह जड़ के रूप में चलता है। मैं इसे "परिनियोजित" नामक उपयोगकर्ता के रूप में चलाना चाहूंगा। उबुन्टु 12.04

#! /bin/sh

# File: /etc/init.d/unicorn

### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the unicorn web server
# Description:       starts unicorn
### END INIT INFO

DAEMON=/usr/local/bin/unicorn_rails
DAEMON_OPTS="-c /var/www/current/config/unicorn.rb -D"
NAME=unicorn
DESC="Unicorn"
PID=/var/www/current/shared/pid/unicorn.pid

case "$1" in
  start)
    echo -n "Starting $DESC: "
    $DAEMON $DAEMON_OPTS
    echo "$NAME."
    ;;
  *)
    echo "Usage: $NAME {start|stop|restart|reload}" >&2
    exit 1
    ;;
esac

exit 0

2
$DAEMON $DAEMON_OPTSsu - deploy -c "$DAEMON $DAEMON_OPTS"
डेसी

जब आप परीक्षण कर रहे हैं तो "सेवा" कमांड का उपयोग करके बहरीन को लॉन्च करने से सावधान रहें क्योंकि च्यूइड विकल्प का कोई प्रभाव नहीं होगा और प्रक्रिया रूट के रूप में चलेगी।
पस्कल

क्या सभी लिपियों init.d को कर्नेल के बाद कहा जाता है जो पहले से ही सिस्टम में उपयोगकर्ताओं को जानता है?
रंस

जवाबों:


18

start-stop-daemonअपने डेमॉन को शुरू करने के लिए उपयोगिता का उपयोग करें । इसे एक अलग उपयोगकर्ता के रूप में चलाने के लिए -c(या --chuid) विकल्प पास करें। आपको इसमें कुछ उदाहरण मिलेंगे /etc/init.d/*

case $1 in
  start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --chuid deploy --pidfile "$PID" --start --exec "$DAEMON" -- $DAEMON_OPTS
    echo "$NAME."
    ;;
…

क्या कर्नेल के बाद कहे जाने वाले सभी init.d स्क्रिप्ट सिस्टम के सभी उपयोगकर्ताओं को पहले से ही जानते हैं?
रंस

@ransh मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। कर्नेल वास्तव में "उपयोगकर्ता" नहीं जानता है: जहां तक ​​यह चिंतित है, एक उपयोगकर्ता सिर्फ एक संख्या है, और यह परवाह नहीं करता है कि संख्या क्या है सिवाय इसके कि उपयोगकर्ता 0 के रूप में चल रही प्रक्रिया कई चीजें कर सकती हैं जो अन्य उपयोगकर्ता नहीं कर सकते हैं ।
गिलेस एसओ- बुराई को रोकना '

-1

उबंटू पर आप बस उपयोग कर सकते हैं

sudo -u deploy $DAEMON $DAEMON_OPTS


जब सू या नीच मौजूद हो तो सूडो को क्यों जोड़ें? यदि सूडो स्थापित न हो तो क्या होगा?
जेफ स्कालर

2
@JeffSchaller sudo उबंटू में स्थापित है
Роман Коптев
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.