এক্সিকিউটেবলের দিকে একবার নজর রাখলে sudo
:
$ which sudo
/usr/bin/sudo
$ ls -la /usr/bin/sudo
---s--x--x 2 root root 208808 Jun 3 2011 /usr/bin/sudo
আপনি লক্ষ্য করবেন যে এতে অনুমতি বিট রয়েছে ---s--x--x
। এগুলি নীচে ভেঙে ফেলা যায়:
-|--s|--x|--x
- - first dash denotes if a directory or a file ("d" = dir, "-" = file)
--s - only the setuid bit is enabled for user who owns file
--x - only the group execute bit is enabled
--x - only the other execute bit is enabled
সুতরাং যখন কোনও প্রোগ্রামের সেটুইড বিট সক্ষম থাকে (SID হিসাবেও পরিচিত) এর অর্থ হ'ল কেউ যখন এই প্রোগ্রামটি চালায় তখন এটি ফাইলের মালিক, যার শংসাপত্রগুলি দিয়ে চালিত হবে, ওরফে। এই ক্ষেত্রে মূল।
উদাহরণ
যদি আমি নিম্নলিখিত কমান্ডটি ব্যবহারকারী হিসাবে ব্যবহার করি স্যামল:
$ whoami
saml
$ sudo su -
[sudo] password for saml:
আপনি লক্ষ্য করবেন যে বাস্তবায়নের বাস্তবায়ন sudo
মূল হিসাবে চলছে:
$ ps -eaf|grep sudo
root 20399 2353 0 05:07 pts/13 00:00:00 sudo su -
নির্ধারিত প্রক্রিয়া
আপনি যদি আগ্রহী হন তবে SID কীভাবে কাজ করে তা একবার দেখুন man setuid
। ম্যান পৃষ্ঠার একটি অংশ এখানে দেওয়া হয়েছে যা এটি আমার চেয়ে আরও ভাল ব্যাখ্যা করে:
setuid () কলিং প্রক্রিয়াটির কার্যকর ব্যবহারকারী আইডি সেট করে। যদি কলারের কার্যকর ইউআইডি মূল হয় তবে আসল ইউআইডি এবং সংরক্ষিত সেট-ব্যবহারকারী-আইডিও সেট করা থাকে। লিনাক্সের অধীনে সেপুইড () POSIX সংস্করণের মতো _POSIX_SAVED_IDS বৈশিষ্ট্য সহ প্রয়োগ করা হয়। এটি কোনও সেট-ব্যবহারকারী-আইডি (রুট ব্যতীত) প্রোগ্রামটিকে তার সমস্ত ব্যবহারকারীর সুবিধাগুলি বাদ দিতে, কিছু অন-সুবিধাযুক্ত কাজ করতে এবং তারপরে সুরক্ষিতভাবে মূল কার্যকর ব্যবহারকারী আইডি পুনরায় বন্ধ করতে সহায়তা করে।
যদি ব্যবহারকারী রুট হয় বা প্রোগ্রামটি সেট-ইউজার-আইডি-রুট হয় তবে বিশেষ যত্ন নিতে হবে। সেটুইড () ফাংশনটি কলারের কার্যকর ব্যবহারকারী আইডি পরীক্ষা করে এবং যদি এটি সুপারভাইজার হয় তবে সমস্ত প্রক্রিয়া-সম্পর্কিত ব্যবহারকারী আইডি ইউআইডিতে সেট করা আছে। এটি হওয়ার পরে, প্রোগ্রামটির পক্ষে রুট সুবিধাগুলি ফিরে পাওয়া অসম্ভব।
এখানে মূল ধারণাটি হ'ল প্রোগ্রামগুলিতে একটি আসল ইউজারিড (ইউআইডি) এবং কার্যকর একটি (ইইডি) থাকে। এই বিট সক্ষম হয়ে থাকলে সেটুইড কার্যকর ইউজারিড (ইইউডি) সেট করে।
সুতরাং কার্নেলের দৃষ্টিকোণ থেকে এটি জানা যায় যে আমাদের উদাহরণে saml
এখনও মূল মালিক (ইউআইডি), তবে ইইউআইডি সেট করা হয়েছে যার সাথে এক্সিকিউটেবলের মালিক।
setgid
আমার আরও উল্লেখ করা উচিত যে আমরা যখন sudo কমান্ডের অনুমতিগুলি ভেঙে ফেলি তখন বিটের দ্বিতীয় গ্রুপটি গ্রুপের অনুমতিের জন্য ছিল। গ্রুপ বিটগুলির মধ্যে সেট গ্রুপের আইডি (ওরফে সেটগ্রিড, এসজিআইডি) নামে কিছু সেটআপের অনুরূপও রয়েছে। এটি মালিকানার শংসাপত্রগুলির পরিবর্তে গোষ্ঠী শংসাপত্রগুলি দিয়ে প্রক্রিয়া চালিত করে SID এর মতো একই কাজ করে।
তথ্যসূত্র
sudo -s
পরিবর্তে আপনার ব্যবহার করা উচিতsudo su
কারণ এটি অকেজো ব্যবহারsu
। :)