Làm thế nào tôi có thể làm cho daemon / init này chạy như một người dùng không root?


19

Tôi có một kịch bản init để khởi động một daemon. Vấn đề là nó chạy như root. Tôi muốn nó chạy như một người dùng gọi là "triển khai". Ubuntu 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
Thay đổi $DAEMON $DAEMON_OPTSthànhsu - deploy -c "$DAEMON $DAEMON_OPTS"
daisy

Chú ý không khởi chạy deamon bằng lệnh "dịch vụ" trong khi bạn đang kiểm tra vì tùy chọn chuid sẽ không có hiệu lực và quá trình sẽ chạy như root.
pasqal

Có phải tất cả các tập lệnh trong init.d được gọi sau kernel đã biết người dùng trong hệ thống?
chuộc

Câu trả lời:


18

Sử dụng start-stop-daemontiện ích để bắt đầu daemon của bạn. Vượt qua tùy chọn -c(hoặc --chuid) để chạy nó với tư cách người dùng khác. Bạn sẽ tìm thấy một số ví dụ trong /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."
    ;;
…

Có phải tất cả các tập lệnh init.d được gọi sau kernel đã biết tất cả người dùng trong hệ thống?
chuộc

@ransh Tôi không chắc bạn đang hỏi gì. Hạt nhân không thực sự hiểu biết về người dùng của người dùng: theo như người dùng quan tâm, người dùng chỉ là một số và không quan tâm đến số đó là gì ngoại trừ các quy trình chạy như người dùng 0 có thể làm nhiều việc mà người dùng khác không thể .
Gilles 'SO- ngừng trở nên xấu xa'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.