ডিস্ক এনক্রিপশন আর nosuid মাউন্ট একই ধারণার দুই রকম রূপ বলে শোনায়, কিন্তু এদের মধ্যে আদৌ কোনো সম্পর্ক নেই। একটি বিশ্রামে থাকা ডেটা রক্ষা করে, আর অন্যটি ঠিক করে প্রোগ্রাম চালু হওয়ার মুহূর্তে কার্নেল কোনো বিশেষাধিকার বিট মানবে কি না। যে সহায়ক তার প্রত্যাশিত পরিচয় পর্যন্ত পৌঁছাতে পারে না, সে দ্বিতীয়টির কথাই বলছে। প্রথমটিই দায়ী এই ধারণা মানুষকে এমন ক্লায়েন্ট পুনরায় ইনস্টল করতে পাঠায় যেগুলো কখনো নষ্ট ছিল না।

দুটি অসংশ্লিষ্ট বৈশিষ্ট্য

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

দুটিকে একটি বৈশিষ্ট্য হিসেবে পড়াই এই তত্ত্ব তৈরি করে যে এনক্রিপ্টেড হোম root অ্যাক্সেস আটকায়। ওই তত্ত্ব টেকে কারণ দুটি লক্ষণ একই মেশিনে দেখা যায়, এ কারণে নয় যে তাদের কারণ এক।

আসলে কী সেই রূপান্তরকে দমন করে

execve রেফারেন্স বর্ণনা করে কীভাবে একটি set-user-ID চালনাযোগ্য ফাইল নতুন প্রক্রিয়ার কার্যকর পরিচয় ফাইলের মালিকের পরিচয়ে বদলে দেয়। একই পাতায় সেই রূপান্তর দমনকারী শর্তগুলো এবং গ্রুপ আইডির জন্য সমতুল্য শর্ত তালিকাভুক্ত আছে: no_new_privs সেটিং, nosuid দিয়ে মাউন্ট করা ফাইল সিস্টেম, এবং ট্রেস করা প্রক্রিয়া। একই শর্তে ফাইল ক্যাপাবিলিটিগুলো উপেক্ষা করা হয়। ওই চারটি নিয়ম এই ধরনের প্রায় প্রতিটি প্রতিবেদন ঢেকে দেয়।

এই তালিকা ব্যাখ্যা করে কেন ls যে মোড ছাপে তা কখনোই অনুমোদনের পুরো গল্প নয়। এটি বলে না কোন শর্তটি একটি নির্দিষ্ট ব্যর্থতার বার্তা ঘটিয়েছে, আর অ্যাপ্লিকেশন একই ভাষায় একটি অসংশ্লিষ্ট ক্রেডেনশিয়াল কাজের কথা জানাতে পারে। সিদ্ধান্তে পৌঁছানোর আগে সঠিক প্রোগ্রাম, লঞ্চার ও ত্রুটির ক্রম ধরে রাখুন।

সমর্থিত প্যাকেজ যে চালনাযোগ্য ফাইল ইনস্টল করেছে, তার মালিক, তার প্রকৃত পথ এবং তাকে ধারণ করা ফাইল সিস্টেমের নীতি চিহ্নিত করুন। ডাউনলোড ফোল্ডারে পড়ে থাকা একটি কপি ইনস্টল করা সহায়ক নয়, তার মোড যা-ই বলুক।

এই বিষয়ে যা করা উচিত নয়

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

সমর্থিত পথ হলো ক্লায়েন্টের নথিভুক্ত সহায়ক বা সেবা ইনস্টলেশন, যা একজন প্রশাসক সম্পন্ন করেন এবং বাইনারিটিকে সেখানে রাখেন যেখানে নীতি তা প্রত্যাশা করে। এতে দুটির বদলে একটিই বিশেষাধিকার ব্যবস্থা থাকে।

প্রকৃত লঞ্চ প্রসঙ্গ নিশ্চিত করুন

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

তারপর সহায়কটি যে নেটওয়ার্ক কাজের জন্য আছে তা নিশ্চিত করুন। যে সহায়ক চালু হয় কিন্তু ইন্টারফেস কনফিগার করতে পারে না সে সমস্যাটিকে এক ধাপ পরে সরিয়েছে, সমাধান করেনি।

findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper

মাউন্ট অপশন ও সহায়কের মালিকানা একই নোটে লিখে রাখুন। নইলে পরের যিনি এটি ডিবাগ করবেন তিনি এনক্রিপশন তত্ত্বটি আবার শুরু থেকে দোহরাবেন।

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