আপস্টার্ট: অবাঞ্ছিত ব্যবহারকারী হিসাবে পরিষেবা চালনা এবং মূল হিসাবে স্ক্রিপ্ট প্রাক-শুরু start


8

আমি প্রথম কাজটি অনুসরণ করছি:

description "posty api"


start on mysql
stop on shutdown

env RACK_ENV=production

setuid vmail
setgid vmail

chdir /opt/posty_api

pre-start script
    mkdir -p /var/run/posty
    chown -R vmail:root /var/run/posty
end script

exec /usr/local/bin/unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1

post-stop exec kill `cat /var/run/posty/unicorn.pid`

respawn
respawn limit 1 10

ফোল্ডারটি তৈরি করতে /var/runআমার রুট সুবিধার দরকার need আমি কীভাবে আপস্টার্ট কাজের কিছু অংশ রুট হিসাবে এবং পরিষেবাটি নিজেই অনিবদ্ধ ব্যবহারকারী হিসাবে চালাতে পারি?

উত্তর:


9

upstartsystemdএর PermissionsStartOnlyসেটিং এর সমতুল্য কোনও সুবিধা নেই । কাজ সকল প্রক্রিয়ার মাধ্যমে ব্যবহারকারী সেট হিসাবে চালানো স্তবক , যেমন Cookbook বলেছেন।setuid

সুতরাং কাজটি ডিমন্টোলস উপায়ে করুন।

ব্যবহারের setuidgid, setuidgid, s6-setuidgid, chpst, runuid, অথবা setuidgidমধ্যে execস্তবক:

নির্বাহ \
কাউকে সেটুইডজিড
ইউনিকর্ন -ডি -সি / ওপট / পোস্টি_পী / ইউনিকর্ন.আরবি --env উত্পাদন >> /var/log/posty/upstart.log 2> & 1

ওয়ে, এটি একটি ভয়ানক লগিং মেকানিজম। Daemontools উপায় হবে একটি সঠিক, স্বয়ংক্রিয়ভাবে আবর্তিত, rotateable-অন-ডিমান্ড, আকার-লাভের ব্যবহার লগ ইন করুন multilog, multilog, s6-log, svlogd, tinylog, অথবা cyclogupstartযারা এর সাথে সংহত করার জন্য কৌশল, যদিও এটির expectপ্রক্রিয়াটি দেওয়া হয়েছে

কাঁটাচামচ আশা
নির্বাহ \
কাউকে সেটুইডজিড
ইউনিকর্ন -ডি -সি / ওপট / পোস্টি_পি //icicorn.rb --env উত্পাদন 2> & 1 | \
/ usr / স্থানীয় / বিন / chdir / var / লগ /
setuidgid লগ \
সাইক্লগ পোস্ট / ইউনিকর্ন /

( chdirএখানে noshপ্যাকেজটি থেকে চেইন-লোড করা হচ্ছে এবং এটি কঠোরভাবে প্রয়োজনীয় নয় But তবে এটি কিছুটা পরিপাটি করে তোলে))


ব্যাখ্যার জন্য Thx এবং লগ করার জন্য ইঙ্গিত। আমি ইতিমধ্যে দুটি upstartjobs তৈরি, রেফারেন্স জব রেফারেন্সিং সঙ্গে start on starting posty। তবে লগিং আমার চেয়ে ভাল।
খ্রিস্টান

0

আপনি স্ক্রিপ্ট ব্লকে সেটগুইড ব্যবহার করতে পারেন এবং এটি কেবল প্রদত্ত ব্লককে প্রভাবিত করবে। এটার মতো কিছু:

# Ubuntu upstart file at /etc/init/kafka.conf
description "kafka broker"

limit nofile 32768 32768

start on runlevel [2345]
stop on [!2345]

respawn
respawn limit 2 5

umask 007

kill timeout 300

pre-start script
    # here you are root
    ls -alh /root/
end script

chdir /usr/local/lib/kafka

script
    setuid kafka
    setgid kafka
    # here you are user/group kafka
    /usr/local/lib/kafka/bin/kafka-server-start.sh /usr/local/lib/kafka/config/server.properties
end script

এটি আমার পক্ষে কাজ করে না। স্ক্রিপ্ট বিভাগটি কার্যকর করে না।
সপ্তাহের

1
এর ফলে একটি setuid: not foundত্রুটি হয়।
রোভিংব্ল্যাড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.