গুগল কালো সম্প্রদায়ের জন্য জাতিগত সমতা উন্নয়নে প্রতিশ্রুতিবদ্ধ। দেখ কিভাবে.
This page was translated by the Cloud Translation API.
Switch to English

বিক্রেতার উদ্যোগ

Init প্রক্রিয়াটিতে প্রায় অবিরত অনুমতি রয়েছে এবং বুট প্রক্রিয়া চলাকালীন সিস্টেমটি আরম্ভ করার জন্য সিস্টেম এবং বিক্রেতার পার্টিশন উভয় থেকেই ইনপুট স্ক্রিপ্ট ব্যবহার করা হয়। এই অ্যাক্সেসটির ফলে ট্রেবল সিস্টেম / বিক্রেতার বিভাজনে একটি বিশাল গর্ত ঘটে, কারণ বিক্রেতাকারী স্ক্রিপ্টগুলি স্থিতিশীল সিস্টেম-বিক্রেতার অ্যাপ্লিকেশন বাইনারি ইন্টারফেসের (এবিআই) অংশ নয় এমন ফাইল, বৈশিষ্ট্য ইত্যাদিতে অ্যাক্সেসের জন্য আরআইকে নির্দেশ দিতে পারে।

বিক্রেতার vendor_init /vendor সাথে সুনির্দিষ্ট vendor_init /vendor পাওয়া কমান্ড চালানোর জন্য একটি পৃথক সুরক্ষা-বর্ধিত লিনাক্স (SELinux) ডোমেন vendor_init ব্যবহার করে এই গর্তটি বন্ধ করার জন্য ডিজাইন করা হয়েছে।

পদ্ধতি

বিক্রেতার আরআইএলটি বুট প্রক্রিয়া শুরুতে সিলিনাক্স প্রসঙ্গে u:r:vendor_init:s0 সাথে একটি সাব-প্রসেস প্রসেস করে। এই সেলইনাক্স প্রসঙ্গে ডিফল্ট থ্রি প্রসংগের তুলনায় যথেষ্ট কম অনুমতি রয়েছে এবং এর অ্যাক্সেস কেবলমাত্র ফাইল, বৈশিষ্ট্য ইত্যাদির মধ্যে সীমাবদ্ধ থাকে যা হয় বিক্রেতা-নির্দিষ্ট বা স্থিতিশীল সিস্টেম-বিক্রেতা এবিআইয়ের অংশ।

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

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

Initের প্রধান প্রসেসিং লুপটিতে একটি চেক থাকে যে যদি কোনও কমান্ড বিক্রেতার সাবপ্রোসেসে চালনার জন্য টীকায়িত হয় এবং কোনও বিক্রেতার স্ক্রিপ্ট থেকে উত্পন্ন হয়, সেই কমান্ডটি আন্তঃ-প্রক্রিয়া যোগাযোগের (আইপিসি) মাধ্যমে বিক্রেত আরআইআই সাব সাবস্ক্রিসে প্রেরণ করা হয়, যা কমান্ডটি চালায় এবং ফলাফলটি init এ ফিরে পাঠায়।

ভেন্ডর ইনিশ ব্যবহার করা

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

তবে, যদি কোনও প্রদত্ত বিক্রেতার স্ক্রিপ্টের কমান্ডগুলি বিক্রেতা সূচনা নিষেধাজ্ঞা লঙ্ঘন করে, কমান্ডগুলি ব্যর্থ হবে। ব্যর্থ কমান্ডগুলির কার্নেল লগের (dmesg সহ দৃশ্যমান) ব্যর্থতা নির্দেশকারী থেকে একটি লাইন রয়েছে। সেলইনক্স নীতির কারণে ব্যর্থ হওয়া কোনও ব্যর্থ কমান্ডের সাথে একটি সেলইনক্স অডিট রয়েছে। সেলইনক্স অডিট সহ একটি ব্যর্থতার উদাহরণ:

type=1400 audit(1511821362.996:9): avc: denied { search } for pid=540 comm="init" name="nfc" dev="sda45" ino=1310721 scontext=u:r:vendor_init:s0 tcontext=u:object_r:nfc_data_file:s0 tclass=dir permissive=0
init: Command 'write /data/nfc/bad_file_access 1234' action=boot (/vendor/etc/init/hw/init.walleye.rc:422) took 2ms and failed: Unable to write to file '/data/nfc/bad_file_access': open() failed: Permission denied

যদি কোনও কমান্ড ব্যর্থ হয় তবে দুটি বিকল্প রয়েছে:

  • যদি আদেশটি কোনও সীমাবদ্ধতার কারণে কমান্ডটি ব্যর্থ হয় (যেমন কমান্ডটি কোনও সিস্টেম ফাইল বা সম্পত্তি অ্যাক্সেস করছে), কেবল স্থিতিশীল ইন্টারফেসের মধ্য দিয়ে কমান্ডটি অবশ্যই ট্রিবল-বান্ধব উপায়ে প্রয়োগ করতে হবে। নিউভেরেলো বিধিগুলি স্থিতিশীল সিস্টেম-বিক্রেতা এবিআইয়ের অংশ নয় এমন সিস্টেমের ফাইলগুলিতে অ্যাক্সেসের অনুমতি যুক্ত করতে বাধা দেয়।
  • যদি vendor_init.te লেবেলটি নতুন হয় এবং সিস্টেম vendor_init.te ইতিমধ্যে অনুমতি প্রদান করা হয়নি বা নিউরোলো নিয়মের মাধ্যমে বর্জনিত অনুমতিগুলি না দেওয়া হয়, তবে নতুন লেবেলটি ডিভাইস-নির্দিষ্ট vendor_init.te অনুমতি দেওয়া হতে পারে।

অ্যান্ড্রয়েড 9 এর আগে লঞ্চ করা ডিভাইসের জন্য, ডিভাইস-নির্দিষ্ট vendor_init.te ফাইলটিতে data_between_core_and_vendor_violators টাইপট্রিবিউট যুক্ত করে data_between_core_and_vendor_violators বিধিগুলি বাইপাস করা যেতে পারে।

কোড অবস্থান

বিক্রেতার ডিআইপি আইপিসির বেশিরভাগ লজিক সিস্টেম / কোর / আরম্ভ / সাবকন্টেক্সট সিপিপি-তে রয়েছে

কমান্ডগুলির সারণীটি সিস্টেম / কোর / ইনি / ইন / বিল্টিনস.পি.পি.-র BuiltinFunctionMap শ্রেণিতে রয়েছে এবং এতে টীকাগুলি অন্তর্ভুক্ত রয়েছে যা নির্দেশ করে যে কমান্ডটি বিক্রেতার আরআইএন সাবপ্রসেসে চালানো উচিত।

বিক্রেতার উদ্যোগের জন্য এসইপলিসিটি সিস্টেম / সেপোলিসিতে বেসরকারী ( সিস্টেম / সেপোলসি / প্রাইভেট / বিক্রেতার_ইনিট.টি ) এবং সর্বজনীন ( সিস্টেম / সেপলিসি / পাবলিক / বিক্রেতার_আইনিটি ) ডিরেক্টরিতে বিভক্ত।