এখনও অবধি, আমি যেটি সংগ্রহ করতে পারি তা হ'ল ফেকারকুট এমন কোনও ফাইলের মালিকানা দিতে ব্যবহৃত হয় যা যখন আনজিপ / ট্যারিড হয় তখন রুট হওয়া দরকার। আমার প্রশ্ন, কেন আপনি কেবল ছোটাছুটি করে তা করতে পারবেন না?
আপনি কেবল এটি দিয়ে করতে পারবেন না chown
, কমপক্ষে একটি অ-রুট ব্যবহারকারী হিসাবে নয়। (এবং আপনি যদি রুট হিসাবে চলমান থাকেন তবে আপনার প্রয়োজন হবে না fakeroot
)) এটি সম্পূর্ণরূপে fakeroot
: রুট-প্রয়োজনীয় ক্রিয়াকলাপ সফল হওয়ার ভান করে এমন প্রোগ্রামগুলিকে সাধারণ ব্যবহারকারীর হিসাবে চালানোর জন্য চালিত হওয়ার আশা করে to
এটি বিশেষভাবে যখন (এমনকি যদি এটা রান একটি প্যাকেজ নির্মাণের, যাতে প্যাকেজের ইনস্টলেশন প্রক্রিয়া ইনস্টল করা হচ্ছে ত্রুটি ছাড়া এগিয়ে যেতে পারেন ব্যবহৃত হয় chown root:root
, অথবা install -o root
ইত্যাদি)। fakeroot
এটি ফাইল দেওয়ার ভান করে এমন নকল মালিকানার কথা মনে পড়ে, সুতরাং পরবর্তী মালিকানাগুলি মালিকানাটির দিকে তাকিয়ে প্রকৃত মালিকের পরিবর্তে এটি দেখতে পায়; এটি পরবর্তী tar
রানগুলি যেমন রুটের মালিকানাধীন ফাইলগুলি সঞ্চয় করতে সহায়তা করে allows
কীভাবে ফেকারুট লিনাক্সে অবাঞ্ছিত সুবিধাগুলি বৃদ্ধি বন্ধ করে? ফেকরূট যদি রুটের মালিকানাধীন কোনও ফাইল তৈরি করতে টারকে চালিত করতে পারে, তবে এসইউডিটির সাথে অনুরূপ কিছু করবেন না কেন?
fakeroot
কোনও tar
কিছু করার জন্য কৌতুক করে না, এটি বিল্ডটি হোস্টিং সিস্টেমে সেই পরিবর্তনগুলি কার্যকর করতে দেওয়া ছাড়াই বিল্ডটি যে পরিবর্তন চায় তা সংরক্ষণ করে। fakeroot
রুট এবং স্যুইডের মালিকানাধীন একটি ফাইল যুক্ত একটি টারবাল তৈরি করার দরকার নেই ; আপনার যদি নিয়মিত ব্যবহারকারী হিসাবে বাইনারি থাকে evilbinary
, চলমান থাকে তবে মূলের মালিকানাধীন এবং সুইডযুক্ত tar cf evil.tar --mode=4755 --owner=root --group=root evilbinary
একটি টারবাল তৈরি করবে evilbinary
। তবে, আপনি যে টারবলটি বের করতে পারবেন না এবং আপনি যদি অনুমতি হিসাবে না থাকেন তবে অনুমতিগুলি সংরক্ষণ করতে পারবেন না: এখানে কোনও সুবিধা বাড়ানো নেই। fakeroot
একটি বিশেষাধিকার ডি-সেসালেশন সরঞ্জাম: এটি আপনাকে নিয়মিত ব্যবহারকারী হিসাবে একটি বিল্ড চালানোর অনুমতি দেয়, তবে বিল্ডটি যদি এটি রুট হিসাবে চালানো হত তবে তার প্রভাবগুলি পরে চালিত করার অনুমতি দেয়। "বাস্তবের জন্য" প্রভাবগুলি প্রয়োগ করার জন্য সর্বদা মূল সুবিধার প্রয়োজন; fakeroot
এগুলি অর্জন করার কোনও পদ্ধতি সরবরাহ করে না।
fakeroot
আরও বিস্তারিতভাবে ব্যবহার বুঝতে , বিবেচনা করুন যে একটি সাধারণ বিতরণ বিল্ডের মধ্যে নিম্নলিখিত ক্রিয়াকলাপগুলি জড়িত রয়েছে (অনেকের মধ্যে):
- রুট দ্বারা মালিকানাধীন ফাইল ইনস্টল করুন
- ...
- এই ফাইলগুলি এখনও রুটের মালিকানাধীন সংরক্ষণাগারভুক্ত করুন, যাতে সেগুলি যখন সরানো হয় তখন এগুলি রুটের মালিকানাধীন হবে
প্রথম অংশটি স্পষ্টতই ব্যর্থ হয় যদি আপনি মূল না হন। তবে, fakeroot
সাধারণ ব্যবহারকারীর অধীনে চলার সময় প্রক্রিয়াটি হয়ে যায়
- রুটের মালিকানাধীন ফাইলগুলি ইনস্টল করুন - এটি ব্যর্থ হয় তবে
fakeroot
এটি সাফল্যের ভান করে এবং পরিবর্তিত মালিকানা স্মরণ করে
- ...
- এই ফাইলগুলি এখনও মূলের মালিকানাধীন আর্কাইভ করুন - যখন
tar
(বা যা কিছু আর্কিভার ব্যবহার করা হচ্ছে) ফাইলটির মালিকানা কী তা সিস্টেমকে জিজ্ঞাসা করে, এর fakeroot
আগে রেকর্ড করা মালিকানার সাথে মিল রেখে উত্তর পরিবর্তন করে
এইভাবে আপনি রুট না হয়ে একটি প্যাকেজ বিল্ড চালাতে পারেন, একই ফলাফলগুলি পাওয়ার পরে আপনি যদি সত্যিই রুট হিসাবে চালাচ্ছিলেন। ব্যবহার fakeroot
করা নিরাপদ: সিস্টেমটি এখনও আপনার ব্যবহারকারী যা করতে পারে না তেমন কিছুই করতে পারে না, সুতরাং একটি দুর্বল ইনস্টলেশন প্রক্রিয়া আপনার সিস্টেমে ক্ষতি করতে পারে না (আপনার ফাইলগুলি স্পর্শ করার বাইরে)।
ডেবিয়ানে, বিল্ড সরঞ্জামগুলি আরও উন্নত করা হয়েছে যাতে এটির আর প্রয়োজন না হয় এবং আপনি প্যাকেজ ছাড়াই তৈরিfakeroot
করতে পারেন । এটি dpkg
সরাসরি Rules-Requires-Root
নির্দেশের দ্বারা সমর্থিত (দেখুন rootless-builds.txt
)।
fakeroot
মূল এবং না হিসাবে চালানোর সুরক্ষা দিকগুলি বোঝার জন্য , এটি প্যাকেজিংয়ের উদ্দেশ্য বিবেচনা করতে সহায়তা করতে পারে। আপনি যখন সিস্টেম-ব্যাপী ব্যবহারের জন্য উত্স থেকে কোনও টুকরো সফ্টওয়্যার ইনস্টল করেন, আপনি নীচের দিকে এগিয়ে যান:
- সফ্টওয়্যারটি তৈরি করুন (যা কোনও অধিকার ছাড়াই করা যায়)
- সফ্টওয়্যারটি ইনস্টল করুন (যা রুট হিসাবে সম্পন্ন করা প্রয়োজন, বা কোনও ব্যবহারকারী হিসাবে উপযুক্ত সিস্টেমের অবস্থানগুলিতে লেখার অনুমতি দেওয়া হয়েছে)
আপনি যখন কোনও টুকরো সফ্টওয়্যার প্যাকেজ করেন, আপনি দ্বিতীয় অংশটি বিলম্ব করছেন; তবে এটি সফলভাবে করার জন্য আপনাকে সিস্টেমে না গিয়ে প্যাকেজে সফ্টওয়্যারটি "ইনস্টল" করতে হবে। সুতরাং আপনি যখন সফ্টওয়্যার প্যাকেজ করেন, প্রক্রিয়াটি হয়ে যায়:
- সফটওয়্যারটি তৈরি করুন (কোনও বিশেষ সুযোগ ছাড়াই)
- সফ্টওয়্যার ইনস্টল করার ভান করুন (আবার কোনও বিশেষ সুযোগ ছাড়াই)
- একটি প্যাকেজ হিসাবে সফ্টওয়্যার ইনস্টলেশন ক্যাপচার (ditto)
- প্যাকেজ উপলব্ধ করুন (ditto)
এখন একজন ব্যবহারকারী প্যাকেজটি ইনস্টল করে প্রক্রিয়াটি সম্পূর্ণ করে, যা রুট হিসাবে সম্পন্ন করা প্রয়োজন (বা আবার, উপযুক্ত স্থানে লেখার উপযুক্ত অধিকার সহ একটি ব্যবহারকারী)। এখানেই বিলম্বিত সুবিধাপ্রাপ্ত প্রক্রিয়াটি উপলব্ধি করা যায় এবং প্রক্রিয়াটির একমাত্র অংশ যা বিশেষ সুবিধাগুলি প্রয়োজন।
fakeroot
আমাদের সফ্টওয়্যার ইনস্টলেশন প্রক্রিয়া চালানোর অনুমতি দেয় এবং মূল হিসাবে চালানো ছাড়াই তাদের আচরণ ক্যাপচার করে উপরের 2 এবং 3 ধাপে সহায়তা করে।