প্রশ্নটি পুরানো হলেও এটি উত্তর না দেওয়া (আমার ট্যাগ) প্রশ্নের উপরে উপস্থিত হতে থাকে । সুতরাং আমি মনে করি এর উত্তর দেওয়া উচিত :)
সক্ষমদের জন্য এএসপি'র সহায়তা:
প্রশ্নটি বিশেষত গুগল ডিভাইস সম্পর্কে, আমি কখনও কোনও গুগল ডিভাইস ব্যবহার করি নি। তবে আমি নিশ্চিতভাবে যা বলতে পারি তা হ'ল অ্যান্ড্রয়েড 1.6 এর মতো কম চলমান বেশিরভাগ ডিভাইসে (সমস্ত না থাকলে) লিনাক্স (প্রক্রিয়া) ক্ষমতা অবশ্যই সক্ষম করা উচিত ছিল। রেফারেন্স পাওয়া যায় initএবং system_serverউভয়ই এওএসপির খুব প্রাথমিক উপাদান। উদাহরণস্বরূপ, অ্যান্ড্রয়েড ৪.২-এ, installd- আরেকটি মূল উপাদান - বাদ দেওয়া ক্ষমতা নিয়ে চালানো হয়েছিল।
ফাইল সিস্টেমের ক্ষমতাগুলি অ্যান্ড্রয়েড ৪.৩- এ অন্যতম প্রধান সুরক্ষা বর্ধন ছিল যা তাদের উপর ফাইলের ক্ষমতা নির্ধারণের মাধ্যমে বাইনারিগুলি থেকে সরানো set-uid/ set-gidসরিয়ে run-asদেয়। এটি অ্যান্ড্রয়েডের মূল যাত্রায় বিপ্লবী পরিবর্তন ঘটায় ।
অ্যান্ড্রয়েড 8-এ অ্যাম্বিয়েন্ট ক্ষমতার জন্য সমর্থন যোগ করা হয়েছিল যা ফাইল ক্ষমতার ব্যবহারকে নিরুৎসাহিত করে:
ফাইল ক্ষমতা, ঘুরে, একটি সুরক্ষা ঝুঁকি উপস্থাপন করে যেহেতু ফাইল ক্ষমতা সহ যে কোনও প্রক্রিয়া কোনও ফাইল কার্যকর করে সেই ক্ষমতাগুলি অর্জন করতে সক্ষম হবে।
অনেকগুলি initপরিষেবা তাদের উপর নির্ভর করে যেমন storagedআমার নিজস্ব sshdএবং dnscrypt-proxyপরিষেবাদিগুলি।
যোগ্যতার জন্য কার্নেলের সহায়তা:
কার্নেলের অংশে আসার পরে, ক্ষমতা ছাড়াই কার্নেল তৈরি করা isn'tচ্ছিক নয়:
কার্নেল ২.২.২7 থেকে কার্নেল ২.6.২6 পর্যন্ত, ক্ষমতাগুলি একটি alচ্ছিক কার্নেল উপাদান ছিল এবং CONFIG_SECURITY_CAPABILITIES কার্নেল কনফিগারেশন বিকল্পের মাধ্যমে সক্ষম / অক্ষম করা যেতে পারে ।
এবং:
লিনাক্স ২.6.৩৩ এর আগে কার্নেলগুলিতে, ফাইল ক্ষমতাগুলি একটি বিকল্প বৈশিষ্ট্য ছিল যা CONFIG_SECURITY_FILE_CAPABILITIES বিকল্পের মাধ্যমে কনফিগার করা যায় । লিনাক্স ২.6.৩৩ থেকে কনফিগারেশন বিকল্পটি সরানো হয়েছে এবং ফাইল ক্ষমতা সর্বদা কার্নেলের অংশ।
অ্যান্ড্রয়েড সংগ্রহস্থলগুলির মধ্যে প্রাচীনতম সাধারণ কার্নেল সংস্করণটি ২.6.৩৯ যা ফাইল ক্ষমতার জন্য সমর্থনও অন্তর্ভুক্ত ।
কার্নেল সাইডে ফাইল সিস্টেমের সক্ষমতার জন্য সমর্থন অবশ্যই কিছু ই এম থেকে বিলম্বিত হয়েছে তবে তাদের স্যুইচ করতে হয়েছিল, অন্যথায় কার্যকারিতা ভঙ্গ হবে। উদাহরণস্বরূপ surfaceflinger(অ্যান্ড্রয়েডের পৃষ্ঠতলের সুরকার ) অ্যান্ড্রয়েড .1.১ থেকে ফাইলের ক্ষমতা ছাড়াই কাজ করবে না।
মেইনলাইন লিনাক্স কার্নেল 4.3 এপ্রিয়েন্ট (প্রক্রিয়া) সক্ষমতার জন্য সেপ্টেম্বর -15 এ প্যাচ করা হয়েছিল, 2016 এ অ্যান্ড্রয়েড কার্নেল 3.18 এবং 4.1 এ ব্যাকপোর্ট করা হয়েছিল So সুতরাং এগুলি অবশ্যই কার্নেলের একটি অংশ।
উপসংহার:
লিনাক্স ডিস্ট্রোজে খুব কম প্রোগ্রাম লিনাক্সের ক্ষমতা ব্যবহার করে। যদিও এখন পর্যন্ত pam_cap, বেশিরভাগ (বা সকলের?) ডিস্ট্রো এখনও ব্যবহার set-uidউপর su, sudo, ping, mount, passwdইত্যাদি। তবে অ্যান্ড্রয়েড ক্ষমতাগুলি ফ্রেমওয়ার্ক এবং মূল পরিষেবাদিতে গভীরভাবে সংহত করা হয়েছে। এগুলি অপসারণ করতে কয়েকশো সম্পাদনা প্রয়োজন হবে বা এওএসপি এবং কার্নেল উত্সের কয়েক হাজার লাইন হতে পারে। এটি কোনও ধারণা দেয় না যে কোনও এএম (বিশেষত গুগল, যিনি অ্যান্ড্রয়েডের জন্য এওএসপি এবং সংশোধিত লিনাক্স কার্নেল তৈরি করেছেন) অ্যান্ড্রয়েড কার্নেলে সহজেই উপলব্ধ হলে এই বিনা মূল্যে সুরক্ষা বৈশিষ্ট্যটি ব্যবহার করবেন না । এটি একটি খাঁটি ওএস সম্পর্কিত বৈশিষ্ট্য, কোনও অতিরিক্ত হার্ডওয়্যার সমর্থন দাবি করে না। সুতরাং কোনও প্রস্তুতকারকের যে কোনও ফোনে অবশ্যই ক্ষমতা সমর্থিত থাকতে হবে।
প্রশ্ন:
আমি কি আসল কার্নেল বাইনারি পরিবর্তন না করে এক্সিকিউটেবলের উপর দক্ষতা সেট করতে সক্ষম হতে পারি?
হ্যাঁ, আপনি অবশ্যই।
প্রয়োজনীয় জিনিস হ'ল ক্যাপ সেট করার সরঞ্জামগুলি ...
আমি ব্যবহার করা হয়েছে capsh, getcap, setcap, getpcapsথেকে libcapএবং netcap, pscapথেকে libcap-ngকোন সমস্যা ছাড়াই। তবে আমি পরিবেশনীয় ক্ষমতাগুলি পছন্দ করি, এগুলি কনফিগার করা সহজ এবং ফাইল ক্ষমতাগুলির ক্ষেত্রে বর্ধিত বৈশিষ্ট্যের মতো কোনও ফাইল সিস্টেম বৈশিষ্ট্যের উপর নির্ভর করে না । এছাড়াও আপনি ব্যবহার করতে পারেন listxattr, getxattr, setxattrএবং removexattrএর সরঞ্জাম xattr_syscall_wrapperনিপূণভাবে security.capabilityবা অন্য কোন XATTR সরাসরি।
আপনার মন্তব্য থেকে:
আমি কেবল লক্ষ্য করেছি যে /system/bin/pingকমান্ডটি setuidআমার আসল স্যামসাং ডিভাইসে নেই, পরামর্শ দিচ্ছেCAP_NET_RAW
অ্যান্ড্রয়েডের পিং নেই বা set-uidনেই CAP_NET_RAW। এটি একটি বিশেষ অ-RAW সকেট তৈরি করে IPPROTO_ICMP- যা এর বিপরীতে IPPROTO_RAW- কোনও সুযোগ-সুবিধার প্রয়োজন হয় না।
আরও উল্লেখ:
উপরে বর্ণিত 10+ রেফারেন্স ছাড়াও, লিনাক্সের ক্ষমতা সমর্থন এবং ব্যবহারের জন্য এওএসপি কোডের কয়েকটি অন্যান্য অংশ এখানে দেওয়া হয়েছে:
- কোর উপাদান: বায়োনিক
libc, init, trusty(অপারেটিং সিস্টেম)
- বাহ্যিক উপাদান:
libcap ,libcap-ng
- ডেমন / সেবা:
zygote (forked অ্যাপ্লিকেশান এবং system_server), hostapd, wpa_supplicant, dnsmasq, logd, netd( NetLinkম্যানেজার, ব্যক্তিগত ডিএনএস), debuggerd(টেস্ট), sdcardডেমন, performanced, incidentd, mtpd, traced_probes(perfetto), racoon(IP সেক), wificondসহ করতো HAL ডেমন একটি নম্বর rild।
- এক্সেকিউটেবল:
reboot (Init), dumpstate, tcpdump, strace, iputils( ping, tracerouteইত্যাদি)
- মিনিজাইল: একটি উত্সর্গীকৃত স্যান্ডবক্সিং সরঞ্জাম এবং গ্রন্থাগার যা সক্ষমতার চারপাশে ঘোরে।
adbdসুযোগ পড়তে এই লাইব্রেরিটি ব্যবহার করে।
- SELinux
capability ডোমেনগুলিকে ক্ষমতা প্রদান / অস্বীকার করতে শ্রেণি ব্যবহার করে ।
এটি উপসংহারে এসেছে যে অ্যান্ড্রয়েড লিনাক্সের ক্ষমতার উপর অত্যন্ত নির্ভর করে, এটি কোনও সামান্য ব্যবহৃত বৈশিষ্ট্য নয়।
সম্পর্কিত: