আপনি কীভাবে জানতে পারবেন যে কোনও প্রোগ্রাম কার্যকর করার জন্য যদি মূলের প্রয়োজন হয়?


10

আমি বুঝতে পারি যে এটি কিছুটা মৌলিক এবং সম্ভবত একটি নির্বোধ প্রশ্ন, তবে আমি কোনও উত্তর খুঁজে পাচ্ছি না।

আমি বুঝতে পারি যে প্রতিটি ফাইলের "Executable"বিট থাকে।

আমি ধরে নিয়েছি যে ব্যবহারকারীদের এবং গোষ্ঠীর rootমালিকানাধীন এমন প্রোগ্রামগুলির জন্য কিছুটা হবে না এবং এটি অ-রুট ব্যবহারকারীদের কার্যকর করতে বাধা দিতে পারে। তবে ডিরেক্টরি এবং ডিরেক্টরিতে আমি দেখতে পাচ্ছি যে সমস্ত ফাইলের মতোই অনুমতি রয়েছেrootrootExecutableOther/bin/sbin-rwxr-xr-x

সুতরাং কোনও ব্যবহারকারীকে কিছু কার্যকর করার জন্য রুট অনুমতি থাকা দরকার কিনা তা সত্যই নির্ধারণ করে?


1
ডিফল্টরূপে, আপনি বা যে কোনও ব্যবহারকারী যেকোন প্রোগ্রাম /binবা /sbinডিরেক্টরি থেকে পরিচালনা করতে পারেন । সমস্যাটি হ'ল those প্রোগ্রামগুলির মধ্যে কিছুগুলি পৃথকভাবে চলছে যা নির্ভর করে যে কোনও ব্যবহারকারী তাদের চালায়।
রাদু রেডানু

উত্তর:


13

কিছু সময়, এটি কোডে। উদাহরণস্বরূপ, মাঝপথে hwclock.c, আপনি পাবেন:

if (getuid() == 0)
            permitted = TRUE;
else {
            /* program is designed to run setuid (in some situations) */
            if (set || systohc || adjust) {
                    warnx(_("Sorry, only the superuser can change "
                            "the Hardware Clock."));
[...]

আপনি যদি রুট হন বা না হন তবে প্রোগ্রামটির আচরণ পরিবর্তন করবে।

বেশিরভাগ ক্ষেত্রে, এটি অন্তর্নিহিত; কার্নেল প্রেরণ উদাহরণস্বরূপ, প্রোগ্রাম যদি সিস্টেম কল করে যে আপনাকে সিস্টেমটি পুনরায় চালু করতে দেয়, আপনি কেবল রুট হলেই এটি কাজ করবে। আপনি যদি মূল না হন তবে আপনার কাছে "অনুমতি অস্বীকৃত" ত্রুটি থাকবে যা অ্যাপ্লিকেশনটি (যদি ভালভাবে লেখা থাকে) কেবল আপনাকে জানায়। অথবা আপনি কোনও ফাইল মুছতে চাইছেন; ফাইলটি করার জন্য যদি আপনার সঠিক অনুমতি থাকে তবে তা সফল হবে; যদি তা না হয় তবে এটি নির্ভর করে যে আপনি মূল বা না --- যখন rmকল unlink()করার পরে কার্নেল অনুমতি পরীক্ষা করে।

সুতরাং না, নীতিগতভাবে আপনি বলতে পারবেন না যে যদি প্রোগ্রামটির মূল সুযোগগুলির প্রয়োজন হয় বা না হয় তবে কেবল এক্সিকিউটেবলের অনুমতি দেখে। প্রচুর প্রোগ্রামগুলির কেবল কিছু অপারেশনের জন্য তাদের প্রয়োজন হবে, সুতরাং এরকম কিছু করা সত্যিই কঠিন হবে। ক্ষেত্রে hwclockএক (যে কেউ ঘড়ি পড়তে পারেন কিন্তু শুধুমাত্র রুট এটি সেট করতে পারেন), কিন্তু তাদের শত শত আছে ( kill, rm, cat...)

তারপরে সেটুয়েড প্রোগ্রামগুলির সম্পর্কিত এবং আকর্ষণীয় বিশ্ব রয়েছে ...


তাহলে মূলত কার্নেলটি "এর দায়িত্বে" থাকে? প্রোগ্রামটি যদি কোনও সিস্টেম কল করে, কার্নেলটি নির্ধারণ করে যে প্রোগ্রামটি চালিত ব্যবহারকারীকে মূল হতে হবে এবং এটি প্রয়োগ করে?
ডিন

2
মূলত, হ্যাঁ প্রোগ্রামটি অতিরিক্ত পরীক্ষা করতে পারে তবে অনুমতি চেকটি কার্নেল স্তরে রয়েছে। সেটুইড-রুট প্রোগ্রামগুলি ব্যতিক্রম; তারা সর্বদা রুট হিসাবে চালায় তাই তাদের অনুমতি নেওয়ার জন্য তাদের চেক করা দরকার (এবং সুরক্ষার ত্রুটির একটি দুর্দান্ত ফন্ট ...)
রোমানো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.