লিনাক্স রিবুট সিস্টেম কলটিতে "ম্যাজিক আর্গুমেন্ট" এর ব্যবহার কী?


10

আমি যখন লিনাক্স উত্স কোডটি পড়ছিলাম এবং আরও বিশেষত সিস্টেম কল কোডটি পড়ছিলাম, আমি sys_rebootবাস্তবায়নটি দেখতে পেয়েছি : http://lxr.free-electrons.com/source/kernel/reboot.c#L199

199 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
200                 void __user *, arg)
201 {
202        ...
...    
286 }

মাঝখানে, কোডের এই নির্দিষ্ট অংশটি রয়েছে:

209 
210         /* For safety, we require "magic" arguments. */
211         if (magic1 != LINUX_REBOOT_MAGIC1 ||
212                         (magic2 != LINUX_REBOOT_MAGIC2 &&
213                         magic2 != LINUX_REBOOT_MAGIC2A &&
214                         magic2 != LINUX_REBOOT_MAGIC2B &&
215                         magic2 != LINUX_REBOOT_MAGIC2C))
216                 return -EINVAL;

আমি আশ্চর্য হই যে এটি আসলে কী ধরণের "সুরক্ষা" সরবরাহ করে। মানে, এটি কি অপব্যবহার রোধ করা যায়? এই ক্ষেত্রে, প্যারামিটারগুলি সর্বজনীন হওয়ায় যে কোনও গ্রন্থাগার বা অ্যাপ্লিকেশন প্যারামিতিগুলি পাস করার পরেও সিস্টেম কলটির অপব্যবহার করতে পারে। আমি কি থেকে বাতিল হলাম?


এটি সম্ভবত দুর্ঘটনাক্রমে কলগুলির জন্য, উদাহরণস্বরূপ, মেমরির দুর্নীতি বা একটি স্কাইল নম্বরটিতে টাইপ করা। এটি আসলে চিন্তার মতো কিছু কিনা, তা জেনে নেই।
ডারোবার্ট

@ডারবার্ট বোধগম্য হন তবে ... সমস্ত সিস্টেম কলগুলির কি এই জাতীয় সুরক্ষা দরকার না? getpidঅবশ্যই এবং এর মতো ব্যতীত , অপব্যবহার করা হলে এগুলির সমস্তেরই অনাকাঙ্ক্ষিত পরিণতি হতে পারে। অথবা হতে পারে, অন্য সমস্ত সিস্টেমে ইতিমধ্যে পর্যাপ্ত প্যারামিটারগুলি পরীক্ষা করা আছে যাতে তারা ভুলভাবে ডাকা হয় them এটি আমার কাছে "সুরক্ষা" সম্পর্কে একটি অদ্ভুত ধারণা বলে মনে হচ্ছে, যদিও ...
লার্জার্জ

প্রকৃতপক্ষে. আমি নিশ্চিত নই যে, এক পর্যায়ে লিনাস একটি বাগের পিছনে পিছনে ছুটছিল যা # $ & # রেখেছিল! তার মেশিনটি রিবুট করা, বা কেউ যদি কেবলমাত্র এটি যুক্ত করেছেন কারণ তারা অসম্পূর্ণ, ইত্যাদি it's এটির বিরুদ্ধে রক্ষা করার কথাটি মোটামুটি পরিষ্কার; কেন যে থেকে সুরক্ষা প্রয়োজন একটি ভাল প্রশ্ন।
ডারোবার্ট

@डरবার্ট সম্ভবত সংহত সার্কিটের জন্য ব্যবহৃত কারও কাছ থেকে সম্ভবত একটি হোল্ডওভার, যেখানে শাটডাউন কার্যকারিতা সক্ষম করার জন্য অনেক চিপস এক ধরণের প্রহরী প্রয়োগ করে (উদাহরণস্বরূপ, শাটডাউন নির্দেশিকাটির কাজ করার আগে আপনাকে একটি বিশেষ রেজিস্টারে XYZ বিট লিখতে হবে)। নিশ্চিত নয় যে এর জন্য সময়সীমাগুলি বোধগম্য হয়,
এমবিআরআইজি

উত্তর:


10

এই সুপার ইউজার প্রশ্নে এই প্রশ্নের উত্তর দেওয়া হয়েছে:

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

মজার ব্যাপারটি যথেষ্ট, দ্বিতীয় জাদু সংখ্যার লিনাস এবং তার তিন কন্যার জন্মদিনের সাথে মিল রয়েছে:


1
আহ, আমি অন্যান্য সাইটগুলি যাচাই করার বিষয়ে ভাবি নি। আমি কখনও ভাবিনি যে এই প্রশ্নটি এখানের ব্যতীত অন্য কোনও হতে পারে। যাইহোক, আপনার উত্তরের জন্য আপনাকে ধন্যবাদ। :-)
lgeorget
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.