আপস্টার্ট জব তৈরি করা অনিয়ন্ত্রিত ব্যবহারকারী হিসাবে আউটপুট পুনঃনির্দেশ করুন


1

আমি বর্তমানে একটি অনিবন্ধিত ব্যবহারকারী হিসাবে একটি আপস্টার্ট কাজ চালিয়ে যাচ্ছি:

start on started mongodb
stop on runlevel [06]

respawn
respawn limit 10 100

env NODE_ENV=production

pre-start script
    ulimit -n 2048
end script

exec sudo -u mainuser /usr/bin/make -C /home/mainuser/app start-prod >> /home/mainuser/data/logs/app.log 2>> /home/mainuser/data/logs/app.err.log

এটি একটি ব্যতিক্রম সহ ভাল কাজ করে: লগ ফাইলগুলি app.logএবং app.err.logরুট হিসাবে লেখা হয় (রুট এই ফাইলগুলির মালিক হয়ে যায়)।

আমি কীভাবে নিশ্চিত করব যে লগ ফাইলগুলি অনিবদ্ধদের দ্বারা লিখিত হয়েছে mainuser?

উত্তর:


1

আমার মাথার উপরের দিক থেকে কিছু ধারণা: আপনি | sudo -u mainuser teeফাইলটি লিখতে ব্যবহার করতে পারেন (তবে আপনি যদি STDOUT এবং STDERR বিভক্ত করতে চান তবে এটি কিছুটা অগোছালো হয়ে যেতে পারে ), অথবা আপনি স্ক্রিপ্টে লগ ফাইলগুলি বিদ্যমান কিনা এবং এর মালিকানাধীন কিনা তা পরীক্ষা করতে পারেন the mainuser, না তৈরি এবং যদি chown mainuser। তারপরে আউটপুট সংযোজন করা আপনার মালিকানা হিসাবে থাকবে।

দ্রুত স্নিপেট:

#!/bin/sh
user="mainuser"
group="mainuser"
for i in /home/mainuser/data/logs/app.log /home/mainuser/data/logs/app.err.log; do
    if [ ! -f "${i}" ] || [ "$(stat -c%U -- "${i}")" != "${user}" ]; then
        touch -- "${i}"
        chown ${user}:${group} -- "${i}"
    fi
done

এটি দ্রুত এবং ডিরেক্টরি / লিঙ্ক হিসাবে বিদ্যমান লগ ফাইলগুলির মতো কেসগুলি খুব সুন্দরভাবে পরিচালনা করে না, তবে বাস্তবে এটি ঠিক আছে।

আমি যদিও আপস্টার্টের সাথে কাজ করি নি, তাই সম্ভবত আরও সহজ উপায় আছে।


আমি মনে করি না একটি অনিবদ্ধ ব্যবহারকারী রুটের মালিকানাধীন কোনও ফাইল "চুরি" করতে বা ছুঁড়ে ফেলতে পারে। teeইঙ্গিতটি আরো আকর্ষণীয়, কিন্তু আমি অপেক্ষা করুন এবং যদি সেখানে কোনো ভালো অপশন পাওয়া যায় দেখুন, যদি কিছু মনে হবে না, আগে আমি তা বাস্তবায়ন করার চেষ্টা করুন। সম্ভবত আমার কেবলমাত্র আমার মেক স্ক্রিপ্টটি পরিবর্তন করা উচিত যাতে এটি লগিং করে।
টম

@ টম: আপনি উপরের টেস্টটি রুট হিসাবে আপস্টার্ট স্ক্রিপ্টে pre-start scriptচালাবেন, আমি অনুমান করব যে বিভাগে , সুযোগটি নেমে যাওয়ার আগে mainuser। শুধুমাত্র রুট chownপাশাপাশি করতে পারে।
ড্যানিয়েল অ্যান্ডারসন 20'12
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.