পরিবেষ্টিত ক্ষমতা

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

পরিবেষ্টিত ক্ষমতাগুলি init দ্বারা চালু করা সিস্টেম পরিষেবাগুলিকে তাদের .rc ফাইলগুলিতে ক্ষমতাগুলি কনফিগার করার অনুমতি দেয়, fs_config.c ফাইলে কনফিগারেশনকে বিভক্ত করার পরিবর্তে একটি একক ফাইলে কনফিগারেশন আনয়ন করে। এর মানে হল যে init দ্বারা চালু করা যেকোনো পরিষেবার জন্য, আপনি সেই পরিষেবার জন্য ক্ষমতা কনফিগার করতে পরিষেবার সাথে যুক্ত .rc ফাইল ব্যবহার করতে পারেন।

পরিবেষ্টিত ক্ষমতা হল init দ্বারা চালু করা পরিষেবাগুলির জন্য ক্ষমতা নির্ধারণের জন্য পছন্দের প্রক্রিয়া (এই পদ্ধতিটি একটি একক .rc ফাইলে পরিষেবা কনফিগারেশনের সমস্ত দিক রাখে)। আমরা config.fs ফাইলে ক্যাপস বিভাগ ব্যবহার করে ফাইল সিস্টেমের ক্ষমতা কনফিগার করার পরিবর্তে পরিবেষ্টিত ক্ষমতা ব্যবহার করার পরামর্শ দিই।

init দ্বারা চালু না হওয়া পরিষেবাগুলির জন্য ক্ষমতা নির্ধারণ করার সময়, fs_config.c ব্যবহার করে ফাইল সিস্টেমের ক্ষমতা কনফিগার করা চালিয়ে যান।

পরিবেষ্টিত ক্ষমতা সক্ষম করা

একটি প্রদত্ত পরিষেবার জন্য পরিবেষ্টিত ক্ষমতা সক্ষম করতে, init-এ capabilities কীওয়ার্ড ব্যবহার করুন। বর্তমান init ভাষার বিশদ বিবরণের জন্য, init README.md পড়ুন।

উদাহরণস্বরূপ, AOSP পরিষেবা wificond এর জন্য পরিবেষ্টিত ক্ষমতা সক্ষম করতে, wificond পরিষেবার জন্য .rc ফাইলটি উপযুক্ত ব্যবহারকারী এবং গোষ্ঠী সেট আপ করে এবং capabilities কীওয়ার্ড ব্যবহার করে পরিষেবাটিকে নির্দিষ্ট ক্ষমতা দেয়:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

রেফারেন্স বাস্তবায়ন

রেফারেন্স বাস্তবায়ন হল Android সাধারণ কার্নেল https://android.googlesource.com/kernel/common/

প্রয়োজনীয় প্যাচ

প্রয়োজনীয় প্যাচগুলি সমস্ত প্রাসঙ্গিক Android সাধারণ কার্নেল শাখাগুলিতে ব্যাকপোর্ট করা হয়েছে৷

প্রধান পরিবেষ্টিত ক্ষমতা প্যাচ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 ব্যাকপোর্ট করা হয়েছে:

একটি ছোট নিরাপত্তা সমাধান https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 এতে ব্যাকপোর্ট করা হয়েছে:

বৈধতা

বায়োনিক ইউনিট পরীক্ষায় পরিবেষ্টিত ক্ষমতার জন্য ইউনিট পরীক্ষা অন্তর্ভুক্ত। এর বাইরে, কোনও পরিষেবার জন্য অ্যান্ড্রয়েড ইনিট-এ "ক্ষমতা" কীওয়ার্ড ব্যবহার করা এবং তারপরে পরিষেবাটি প্রত্যাশিত ক্ষমতাগুলি পেয়েছে কিনা তা পরীক্ষা করা এই বৈশিষ্ট্যটির রানটাইম পরীক্ষার অনুমতি দেবে।