আমি কেন একটি "পিড ​​ফাইল তৈরি করতে ব্যর্থ হয়েছি ... অনুমতি অস্বীকৃত" ত্রুটি পাচ্ছি?


11

যদি কোনও প্রোগ্রামের লেখার অনুমতি প্রয়োজন হয় তবে আমি কীভাবে এটি বন্ধ করে দেব? বিশেষত, এই ত্রুটিটি সমাধানের জন্য প্রোগ্রাম ফু এর অনুমতিগুলি কী হবে?

failed to create pid file '/var/run/bar.pid': Permission denied

উত্তর:


7

যদি আপনার fooকাছে কোনও ফাইল ফাইল তৈরি / লেখার চেষ্টা করা থাকে তবে fooবাইনারিগুলির অনুমতিগুলি বিবেচনা করে না, তবে ব্যবহারকারী যেভাবে এটি চালিয়ে যাচ্ছেন তা সমস্ত পার্থক্য করে।

এই ক্ষেত্রে, fooলেখার চেষ্টা করা হচ্ছে /var/run, যা মালিকানাধীন rootএবং কেবল রুট দ্বারা লিখনযোগ্য ।

সুতরাং আপনাকে sudo fooপিআইডি ফাইলটি তৈরি করার জন্য প্রোগ্রামটি চালাতে হবে। আপনি কোনও প্রোগ্রাম করার আগে রুট হিসাবে চালানোর অনুমতি দেওয়ার সুরক্ষা সম্পর্কিত প্রভাবগুলি বিবেচনা করুন ...


যদি বাইনারিগুলিতে অনুমতিটি কিছু থাকে: rw-rr তবে প্রোগ্রামটি মূল হিসাবে প্রোগ্রামটি চালাচ্ছি অর্থাৎ / var / run এর অধীনে একটি প্রসেস আইডি তৈরি করার অনুমতি দিলে কি প্রোগ্রামটি কার্যকর হতে পারে?
অঙ্কিত

@ অঙ্কিত: যদি কোনও বাইনারিটির কার্যকর করার অনুমতি না থাকে তবে এটি "চালানো" হবে না; কিন্তু কিছু আপনি রুট হিসাবে চালাতে না একটি PID অধীনে তৈরি করতে সক্ষম হবে/var/run
পর

বিকল্পভাবে, পিড ফাইলটি অন্য কোথাও লিখুন (অনেক অ্যাপ্লিকেশন আপনাকে পিড ফাইলের পথ নির্দিষ্ট করতে দেয়)।
মিশনফোর্ড

1

সাধারণ পদ্ধতি: ফাইলটি অ্যাক্সেস করার চেষ্টা করে প্রক্রিয়াটির ব্যবহারকারী এবং গোষ্ঠী নির্ধারণ করুন। এটি প্রায়শই সফ্টওয়্যারটির কনফিগারেশনে পাওয়া যায় (যেমন ওয়েবসার্ভার / মেইল ​​সার্ভার / ...) তবে সফ্টওয়্যারটি ইতিমধ্যে চললে এটি ব্যবহার করুন:

ps aux 

আপনি যে প্রক্রিয়াটির জন্য অ্যাক্সেসের অধিকারগুলি কনফিগার করতে চান তা দেখুন। প্রথম কলাম আপনাকে জানায় যে এটি কোন ব্যবহারকারীর নামে চলছে।

groups <username>

এটি আপনাকে বলবে যে ব্যবহারকারী কোন গ্রুপের অন্তর্ভুক্ত।

পরিষেবাটির সাথে মেলে ফাইলের মালিক বা গোষ্ঠী পরিবর্তন করুন।

নোট 1: যেহেতু প্রশ্নটি ইঙ্গিত করে যে ফাইলটি / ভার্ / রানে রয়েছে / আমি ধরে নিচ্ছি যে কেবলমাত্র একটি প্রক্রিয়া অ্যাক্সেসের প্রয়োজন, যদি এটি সত্য না হয় তবে আপনার মালিক বা গোষ্ঠী পরিবর্তন করা উচিত নয়, তবে আপনি প্রক্রিয়াটি যুক্ত করার কথা বিবেচনা করতে পারেন এই গোষ্ঠীতে ব্যবহারকারী বা এই ফাইল / ফোল্ডারের জন্য একটি নতুন গোষ্ঠী তৈরি করুন।

দ্রষ্টব্য 2: মজার জিনিস অ্যাপোর্মারের সাথে ঘটতে পারে, এটি একটি সুরক্ষা ব্যবস্থা: এটি ফাইল এবং ফোল্ডারগুলিতে তাদের সমস্ত প্রয়োজনীয় অধিকারগুলি (ফাইল সিস্টেম স্তরে) লেখা থেকে প্রক্রিয়াগুলি আটকাতে পারে। সঙ্গে aa-statusআপনি দেখতে পারেন কিনা আপনার পরিষেবার জন্য একটি নির্দিষ্ট নিয়ম সক্রিয়।


1

আমি যা করেছি তা হ'ল স্টার্ট-স্টপ-ডিমন নির্বাহের ঠিক আগে একটি ফোল্ডার তৈরি করা। এটি কাজ করে কারণ স্ক্রিপ্টটি সাধারণত শুরু করার সময় রুট হিসাবে কার্যকর হয়। এটি কেবল / var / run ফোল্ডারটি তৈরি করে এবং তাত্ক্ষণিকভাবে মালিককে পরিবর্তন করে, যাতে একটি পিআইডি লেখা যায়।

নীচের উদাহরণে, আমি / var / রানের সাবফোল্ডারটির অস্তিত্ব পরীক্ষা করে দেখি যেখানে আমি বর্তমান রান ব্যবহারকারী হিসাবে পিআইডি রেখেছি, এই ক্ষেত্রে ব্যবহারকারী 'পাই' (যেহেতু আমি রাস্পবেরিতে আছি)।

এই লিঙ্কটিও পরীক্ষা করুন যেহেতু এটি আমার কাছে অত্যন্ত শিক্ষামূলক ছিল: পরিষেবা হিসাবে চালিত করার জন্য পাইথন স্ক্রিপ্ট , তবে এটি এখানে আলোচিত সমস্যাটি আবৃত করে না।

আমার শেল স্ক্রিপ্টের উদাহরণ অংশ:

# The process ID of the script when it runs is stored here:
PIDFILE=/var/run/power/$DAEMON_NAME.pid

do_start () {
    log_daemon_msg "Starting system $DAEMON_NAME daemon"
    if [ ! -d /var/run/power ]; then
        mkdir /var/run/power/
        chown pi:pi /var/run/power/
    fi
    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chdir $DIR --startas $DAEMON -- $DAEMON_OPTS
    log_end_msg $?
}

সিস্টেমডের জন্য এর কোনও সংস্করণ পেয়েছেন?
আর্টেম রাশাকোভস্কিই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.