Squid shm_open অনুমতি প্রত্যাখ্যাত: শেয়ার্ড মেমরির মালিকানা যাচাই করুন
Squid-এর শেয়ার্ড মেমরি মালিকানার ব্যর্থতাকে PID, লগ ও ক্যাশ ডিরেক্টরির অনুমতি ত্রুটি থেকে আলাদা করুন।
একই ব্যর্থ Squid স্টার্টআপের সময় Could not read pid file এবং shm_open(...): Permission denied দুটোই দেখা দিতে পারে। তারা ভিন্ন সম্পদ নির্দেশ করে। ক্যাশ ডিরেক্টরির মালিকানা ঠিক করলে তাতে এদের কোনোটিই নিজে থেকে ঠিক হয় না।
Linux-এ POSIX শেয়ার্ড মেমরি অবজেক্ট সাধারণত /dev/shm-এর অধীনে উপস্থাপিত হয়। এর মালিক ও অ্যাক্সেস মোড গুরুত্বপূর্ণ। তাই ভিন্ন রানটাইম পরিচয়ের রেখে যাওয়া অবজেক্ট পরবর্তী প্রসেসকে ব্যর্থ করতে পারে, এমনকি যখন squid.conf পাঠযোগ্য এবং শোনার পোর্ট মুক্ত।
এই ইনস্ট্যান্স কীভাবে চালু হয়েছিল পুনর্গঠন করুন
স্বাভাবিক সার্ভিস লঞ্চের সঙ্গে সমস্যা অনুসন্ধানে ব্যবহৃত যেকোনো ম্যানুয়াল লঞ্চ তুলনা করুন। ম্যানুয়ালি চালু করা প্রসেস ও প্যাকেজ করা সার্ভিস ভিন্ন ব্যবহারকারী, পথ বা কনফিগারেশন ফাইল ব্যবহার করতে পারে। কোনো অবজেক্টকে অপ্রচলিত ভাবার আগে অন্য Squid ইনস্ট্যান্স এখনও চলছে কি না তা নির্ধারণ করুন।
তারপর ব্যর্থ হওয়া সঠিক অপারেশনটি পড়ুন। PID ত্রুটি কনফিগার করা PID অবস্থান ও তার মূল ডিরেক্টরি নিয়ে। লগ ত্রুটি লগ ফাইল বা ডিরেক্টরি নিয়ে। ক্যাশ আরম্ভের ত্রুটি স্টোরেজ নিয়ে। shm_open ত্রুটি নামযুক্ত শেয়ার্ড মেমরি অবজেক্ট নিয়ে এবং প্রসেসে প্রয়োগ করা নিরাপত্তা নীতিও জড়িত থাকতে পারে।
প্রতিটি সম্পদের জন্য প্রয়োজনীয় রানটাইম অ্যাক্সেসের সঙ্গে তার বর্তমান মালিক ও মোড মিলিয়ে দেখুন। সাধারণ অনুমতি যথেষ্ট মনে হলে প্রাসঙ্গিক SELinux বা AppArmor প্রত্যাখ্যানের প্রমাণ দেখুন। শুধু “Permission denied” কোন স্তর অ্যাক্সেস প্রত্যাখ্যান করেছে তা বলে না।
দ্বিতীয় সমস্যা তৈরি না করে মালিকানা ঠিক করুন
রানটাইম অ্যাকাউন্ট ইনস্টলেশনের সার্ভিস কনফিগারেশনের সঙ্গে সামঞ্জস্যপূর্ণ রাখুন। সবকিছু nobody-এ বদলে দিলে হেল্পার অ্যাক্সেস ভেঙে যেতে পারে এবং সার্ভিস-নিয়ন্ত্রিত ফাইলের সঙ্গে নতুন অমিল তৈরি হতে পারে।
/dev/shm-এ Squid-সদৃশ প্রতিটি অবজেক্ট মুছেও প্রথম ভালো পদক্ষেপ নয়। নামযুক্ত অবজেক্ট সক্রিয় ইনস্ট্যান্সের হতে পারে। প্রয়োজন হলে পরিষ্কারকরণের লক্ষ্য হওয়া উচিত নিশ্চিতভাবে পরিত্যক্ত সম্পদ, সংশ্লিষ্ট সার্ভিস বন্ধ থাকা অবস্থায়, তারপর স্বাভাবিক সার্ভিস ব্যবস্থার মাধ্যমে চালু করা।
উপকারী ফল হলো সামঞ্জস্যপূর্ণ লঞ্চ ও মালিকানা মডেল। ত্রুটি না যাওয়া পর্যন্ত root হিসেবে একটি কমান্ড চালিয়ে রাখলে পরবর্তী নিয়মিত পুনরায় চালুতে ঠিক একই সমস্যা থেকে যেতে পারে।