আমি কয়েকটি উদাহরণ সহ ধাপে ধাপে ব্যাখ্যা করার চেষ্টা করব।
সংক্ষিপ্ত পটভূমি
প্রতিটি প্রসেসের নিজস্ব 'প্রক্রিয়া পরিচয়পত্র' যা মত বৈশিষ্ট্য অন্তর্ভুক্ত করা হয়েছে হয়েছে PID
, PPID
, PGID
, session ID
এবং বাস্তব ও কার্যকর ব্যবহারকারী এবং গ্রুপ আইডি:
RUID
, EUID
, RGID
, EGID
।
আমরা তাদের উপর ফোকাস করব।
পর্ব 1: ইউআইডি এবং জিআইডি বুঝুন
এখন আমি আমার শংসাপত্রগুলি দিয়ে একটি শেলের মধ্যে লগইন করব এবং চালাব:
$ grep $LOGNAME /etc/passwd
rotem:x:1000:1000:rotem,,,:/home/rotem:/bin/bash
আপনি আমার লগনাম (রোটেম), ইউআইডি এবং জিআইডি যা উভয়ই 1000, এবং আমি যে শেলটি লগ ইন করেছি তার মতো অন্যান্য বিবরণ দেখতে পাবেন।
পার্ট 2: আরআইডি এবং আরজিআইডি বুঝতে
প্রতিটি প্রক্রিয়াটির একটি মালিক থাকে এবং এটি একটি গোষ্ঠীর অন্তর্ভুক্ত ।
আমাদের শেলের মধ্যে, এখন যে প্রতিটি প্রক্রিয়া আমরা চালাব তা আমার ব্যবহারকারীর অ্যাকাউন্টের অধিকারের অধিকারী হবে এবং একই ইউআইডি এবং জিআইডি সহ চলবে।
এটি পরীক্ষা করার জন্য একটি সাধারণ কমান্ড চালাতে দিন:
$ sleep 10 & ps aux | grep 'sleep'
এবং ইউআইডি এবং জিআইডি প্রক্রিয়াটি পরীক্ষা করুন:
$ stat -c "%u %g" /proc/$pid/
1000 1000
এরাই সত্যিকারের ব্যবহারকারী আইডি ( RUID
) এবং বাস্তব গোষ্ঠী ID ( RGID
এর) প্রক্রিয়া ।
(*) ইউআইডি এবং জিআইডি দেখার জন্য অন্যান্য বিকল্পগুলি এবং এটি ওয়ান-লাইনারে পাওয়ার উপায়গুলি দেখুন ।
আপাতত, এই সত্যটি স্বীকার করুন যে EUID
এবং এর EGID
বৈশিষ্ট্যগুলি 'রিডানডান্ট' এবং কেবল পর্দার সমান RUID
এবং RGID
পিছনে als
পার্ট 3: EID এবং EGID বোঝা Unders
ping
কমান্ডটি উদাহরণ হিসাবে নেওয়া যাক ।
which
কমান্ডটি দিয়ে বাইনারি অবস্থানের জন্য অনুসন্ধান করুন এবং তারপরে চালান ls -la
:
-rwsr-xr-x 1 root root 64424 Mar 10 2017 ping
আপনি দেখতে পাচ্ছেন যে ফাইলটির মালিক এবং গ্রুপ root
। এটি কারণ হ'ল ping
কমান্ডটি একটি সকেট খুলতে হবে এবং লিনাক্স কার্নেল এর root
জন্য বিশেষাধিকার দাবি করে।
তবে আমার ping
যদি root
সুবিধা না থাকে তবে কীভাবে ব্যবহার করব ?
লক্ষ্য করুন 'S' ফাইল অনুমতি মালিক অংশে 'X পরিবর্তে চিঠি।
এটি নির্দিষ্ট বাইনারি এক্সিকিউটেবল ফাইলগুলির জন্য (যেমন ping
এবং sudo
) সেটউইড হিসাবে পরিচিত জন্য একটি বিশেষ অনুমতি বিট ।
এখানেই EUID
এবং EGID
খেলতে আসে।
যখন একটি কী হবে হয় setuid বাইনারি মত ping
, executes প্রক্রিয়া তার কার্যকরী ব্যবহারকারী আইডি (পরিবর্তনগুলি EUID
ডিফল্ট থেকে) RUID
এই বিশেষ বাইনারি এক্সিকিউটেবল ফাইল যা এই ক্ষেত্রে হয় মালিককে -root
।
এই ফাইলটি setuid
কিছুটা সরল সত্য দ্বারা সম্পন্ন হয়েছে ।
কার্নেল এই প্রক্রিয়াটির প্রক্রিয়াটির দিকে তাকিয়ে বিশেষাধিকার পেয়েছে কিনা তা সিদ্ধান্ত নিয়েছে EUID
। কারণ এখন EUID
পয়েন্টগুলি root
, অপারেশন কার্নেল দ্বারা প্রত্যাখ্যাত হবে না।
লক্ষ্য করুন : জনপ্রিয় সাম্প্রতিক উপর লিনাক্স রিলিজের আউটপুট ping
কমান্ড কারণ এটা সত্য যে তারা গৃহীত বিভিন্ন দেখবে লিনাক্স কেপেবিলিটিস এই পরিবর্তে কাছে setuid পদ্ধতির - পড়া - যারা পরিচিত নন জন্য এখানে ।
পার্ট 4: এসইউডি এবং এসজিআইডি সম্পর্কে কী?
সংরক্ষিত ব্যবহারকারীর আইডি ( SUID
) ব্যবহার করা হচ্ছে যখন কোনও সুবিধাযুক্ত প্রক্রিয়া চলছে ( root
উদাহরণস্বরূপ) এবং এটিতে কিছু অনিবদ্ধ কাজ করা দরকার।
সেক্ষেত্রে কার্যকর ইউআইডি ( EUID
) আগে থেকে সংরক্ষণ করা হবে SUID
এবং তারপরে একটি অনিবদ্ধ কর্মে পরিবর্তিত হবে to অনিবদ্ধ কাজ শেষ EUID
হয়ে গেলে মানটির থেকে নেওয়া হবে SUID
এবং সুবিধাভোগী অ্যাকাউন্টে ফিরে যেতে হবে।