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

দুটি অস্থায়ী ডিরেক্টরি, একটিই পথ

আইসোলেশন সেটিংটি ইউনিটকে অস্থায়ী ডিরেক্টরিগুলির একটি ব্যক্তিগত দৃশ্য দেয়, সেগুলিকে কেবল-পাঠযোগ্য করে না। ইউনিটের বাইরের প্রক্রিয়াগুলি সেখানে কী লেখা হচ্ছে তা দেখতে পারে না, এবং ইউনিট থামলে তার পিছনে পড়ে থাকা সবকিছু বাতিল হয়ে যায়। তাই হুকের মুদ্রিত একটি পথ এবং শেল থেকে যাচাই করা একটি পথ একই নামের ভিন্ন বস্তুকে নির্দেশ করতে পারে।

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

অদৃশ্যকে অলেখনীয় থেকে আলাদা করুন

সফল লেখা এবং ব্যর্থ খোলা ভিন্ন প্রমাণ দেয়, এবং এই পার্থক্যই মেরামত নির্ধারণ করে। যদি হুক বলে ফাইলটি তৈরি হয়েছে কিন্তু বাইরের পাঠক তা খুঁজে পায় না, তবে আপনার নেমস্পেস সংক্রান্ত প্রশ্ন আছে। যদি হুক কোনো অনুমতি ত্রুটি বা ব্যর্থ খোলার কথা জানায়, তবে ফাইলটি কখনও লেখা হয়নি এবং কোনো নেমস্পেস পরিবর্তনই সাহায্য করবে না।

systemctl show [email protected] -p PrivateTmp -p User -p Group -p RuntimeDirectory
systemctl show [email protected] -p MainPID --value
sudo ls -l /proc/PID/root/tmp/client-state

প্রক্রিয়া-রুট পথটি সার্ভিসের নিজস্ব ফাইলসিস্টেম দৃশ্য দেখায়, প্রক্রিয়াটি চলমান থাকা অবস্থায় তার উপর অনুমতি যাচাই সাপেক্ষে। একই সেশনে ইউনিটের জার্নাল পড়ুন, কারণ কেউ ইতিমধ্যে কারণ ঠিক করে ফেললে লেখার ত্রুটি ও অনুপস্থিত ফাইল গুলিয়ে ফেলা সহজ।

ভাগ করা ডেটাকে স্পষ্ট স্থান দিন

যে ডেটা কেবল সার্ভিসের প্রয়োজন, তা তার ব্যক্তিগত অস্থায়ী ডিরেক্টরিতেই থাকে। যে ডেটা অন্য প্রক্রিয়াকে পড়তে হবে, তার জন্য উভয়ের জন্য নির্ধারিত পথ দরকার, যাতে মালিক, মোড ও মেয়াদ উল্লেখ থাকে। ইউনিট সম্পাদনার আগে নির্ধারণ করুন আপনার কাছে দুটির মধ্যে কোনটি আছে। এই ঘটনাগুলির বেশিরভাগই আসে ব্যক্তিগত ফাইলকে ভাগ করা ফাইল হিসেবে গণ্য করা থেকেই।

[Service]
RuntimeDirectory=openvpn-hook-office
RuntimeDirectoryMode=0750

একটি রানটাইম ডিরেক্টরি ফোল্ডারটিকে সিস্টেমের রানটাইম এলাকার অধীনে রাখে, ইউনিটের কনফিগার করা ব্যবহারকারী ও গ্রুপের জন্য এটি তৈরি করে এবং ইউনিট থামলে এটি সরিয়ে দেয়। প্যাকেজের ইউনিট অক্ষত রাখতে এটি drop-in-এর মাধ্যমে যোগ করুন, তারপর ম্যানেজার পুনরায় লোড করুন এবং ওই ইনস্ট্যান্সটি আবার চালু করুন, এটা মেনে নিয়ে যে এর ক্লায়েন্টরা আবার সংযোগ করবে।

ইনস্টল করা ইউনিট ইতিমধ্যে যে রানটাইম ডিরেক্টরি দাবি করে, তা রেখে দিন। তালিকায় যোগ না করে তা প্রতিস্থাপন করা একটি সাধারণ উপায় অসম্পর্কিত কোনো বৈশিষ্ট্য ভাঙার, যা কেউ পরিবর্তনের সঙ্গে যুক্ত করে না।

দুটি বিশেষাধিকার স্তর একমত নাও হতে পারে

সার্ভিস ম্যানেজার ইউনিটের কনফিগার করা ব্যবহারকারীর জন্য ডিরেক্টরিটি তৈরি করে, আর VPN ডেমন সংযোগ হুক চালানোর আগে আলাদাভাবে নিজের অ্যাকাউন্টে নেমে যেতে পারে। এগুলি ভিন্ন স্তর, এবং তারা ভিন্ন পরিচয়ের নাম বলতে পারে।

সীমাবদ্ধ মোডযুক্ত root-মালিকানার ডিরেক্টরি এমন ডেমন-এর কাছে পুরোপুরি দৃশ্যমান যে ইতিমধ্যে বিশেষাধিকার ছেড়ে দিয়েছে, এবং তার জন্য এখনও অলেখনীয়। তখন ত্রুটিটি অনুমতির সমস্যা হিসেবে পড়া হয়, যদিও পথটি ঠিক যেখানে আপনি আশা করেছিলেন সেখানেই আছে। ডিরেক্টরির মালিককে হুকের জানানো পরিচয়ের সঙ্গে তুলনা করুন। তারা ভিন্ন হলে মোড কখনও প্রশ্নই ছিল না।

মালিকানা পরিবর্তনের আগে হুকটি সত্যিই কোন পরিচয়ে চলে তা যাচাই করুন। ডিরেক্টরি ঠিক করতে সার্ভিসের সম্পাদন ব্যবহারকারী বদলালে অন্য জায়গায় ডিভাইস অ্যাক্সেস ও নেটওয়ার্ক বিশেষাধিকার বদলে যেতে পারে, যা ছোট সমস্যার জন্য বড় দাম।

পুরো হস্তান্তর যাচাই করুন

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

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

সম্পর্কিত নিবন্ধ