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

পড়ার অনুমতি শেষ ধাপ, একমাত্র ধাপ নয়

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

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

সার্ভিস অ্যাকাউন্ট হিসেবে পথটি হাঁটুন

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

namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key

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

যে সবচেয়ে সংকীর্ণ অনুমতি যথেষ্ট, সেটিই বদলান

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

কোন উপাদান বদলেছেন এবং কেন, তা লিখে রাখুন। কারণ না লিখে অনুমতি বদলালে তা পর্যালোচনা করা কঠিন এবং ভুলে যাওয়া সহজ।

হাঁটার পরেই মোডের বাইরে তাকান

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

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

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