কোনও সুপারভাইজার প্রক্রিয়া কি পাসওয়ার্ড ফাইলের সাথে মেলে না, কোনও প্রক্রিয়ার আসল ব্যবহারকারী আইডি এবং গ্রুপ আইডি পরিবর্তন করতে পারে?


11

যথাক্রমে

প্রকৃত ব্যবহারকারী আইডি এবং কোনও প্রক্রিয়ার আসল গ্রুপ আইডি সনাক্ত করে আমরা আসলে কে really পাসওয়ার্ডে প্রবেশের সময় এই দুটি ক্ষেত্র নেওয়া হয় are লে যখন আমরা লগ ইন করি when সাধারণত, লগইন সেশনের সময় এই মানগুলি পরিবর্তন হয় না, যদিও কোনও সুপারভাইজার প্রক্রিয়া পরিবর্তনের উপায় রয়েছে

কোনও সুপারভাইজার প্রক্রিয়া কি কোনও প্রক্রিয়ার আসল ব্যবহারকারী আইডি এবং প্রকৃত গোষ্ঠী আইডি পরিবর্তন করতে পারে, যাতে প্রকৃত ব্যবহারকারীর আইডি এবং বাস্তব গ্রুপ আইডির মধ্যে সম্পর্ক পাসওয়ার্ড ফাইলের সাথে মেলে না? উদাহরণস্বরূপ, যদি ব্যবহারকারী পাসওয়ার্ড ফাইলের Timজন্য গোষ্ঠীর সদস্য না হন , তবে oceanকোনও সুপারসার ব্যবহারকারী প্রক্রিয়াটির বাস্তব ব্যবহারকারী আইডি এবং প্রকৃত গ্রুপ আইডি যথাক্রমে Timএবং oceanযথাযথভাবে পরিবর্তন করতে পারে ?


5
এখানে একটি গুরুত্বপূর্ণ স্পষ্টতা: সুপারভাইজার সুবিধাগুলি নিয়ে চলমান একটি প্রক্রিয়াটির নিজস্ব ইউআইডি এবং জিআইডি পরিবর্তন করার ক্ষমতা রয়েছে , অন্য কোনও প্রক্রিয়া নয়।
ফিলাব্রেন্ডেন


ব্যবহারকারীর তথ্য ডাটাবেস নির্ভুলভাবে ইউজারল্যান্ড। কার্নেল কেবলমাত্র ইউআইডি এবং জিআইডি সম্পর্কে চিন্তা করে, ব্যবহারকারী বা গোষ্ঠী ডেটাবেস নয়।
0 薯条 德里克

উত্তর:


15

হ্যাঁ, একটি সুপারভাইজার প্রক্রিয়া তার আসল ব্যবহারকারীর আইডি এবং রিয়েল গ্রুপ আইডিটিকে যে কোনও মান পছন্দ করতে পারে। মান /etc/passwdএবং /etc/shadowকি মান নির্ধারণ করা উচিত জন্য কনফিগারেশন, কিন্তু না সম্ভাব্য মান একটি সীমাবদ্ধতা আছে।

সম্পাদনা # 1

এর অর্থ প্রোগ্রামগুলি যেমন loginফাইলগুলি থেকে মানগুলি পড়বে তাই ফাইলগুলি কনফিগারেশন ফাইল বা ইনপুট ফাইল। কোনও প্রোগ্রাম কী করতে পারে সেগুলি এগুলি বাধা নয়। একটি সুপারভাইজার প্রক্রিয়া কার্নেলের কাছে কোনও মান পাস করতে পারে এবং কার্নেল কোনও ফাইল পরীক্ষা করে না।

একটি প্রোগ্রাম কল করতে পারে

setgid (54321);
setuid (12345);

এবং এটি কার্যকর হবে, এমনকি আইডি এর কোনও ফাইলের উল্লেখ না থাকলেও।


9

পাসওয়ার্ড ফাইল এবং গ্রুপ ফাইলটি পড়া হয় না, এগুলি কেবল লগইন প্রক্রিয়া দ্বারা রিয়েল ইউজার আইডি এবং রিয়েল গ্রুপ আইডি সেট করে।

কার্নেলের মধ্যে এই ফাইলগুলি উল্লেখ করার মতো কিছুই নেই। লগইন করতে ফাইলগুলি খুলতে হবে, তাদের প্রক্রিয়া করতে হবে এবং দুটি আইডি সেট করতে হবে। অন্য কোথাও থেকে এই আইডিগুলি পেতে আলাদাভাবে লেখা যেতে পারে। একটি নেটওয়ার্কযুক্ত ডাটাবেস থেকে উদা।

সামর্থ্য CAP_SETUID সহ যে কোনও প্রক্রিয়া এই আইডিগুলি সেট করতে পারে, মূলের এই ক্ষমতা রয়েছে।

ইউনিক্সের সুরক্ষা মডেলটি কিছু অংশ কার্নেলে প্রয়োগ করা হয় এবং অংশটি উন্নত ক্ষমতা (যেমন রুট হিসাবে) দিয়ে চালিত প্রক্রিয়াতে প্রয়োগ করা হয়।


লক্ষ্য করুন /etc/passwdএবং /etc/groupএছাড়াও দ্বারা পড়া হয় ls, psএবং অন্য কোন প্রোগ্রাম যা চাহিদা ব্যবহারকারী / গ্রুপ ID থেকে শুরু / ব্যবহারকারীর / গ্রুপ নাম অনুবাদ করার। (তারা এই বিবরণ সংরক্ষণের বিকল্প পদ্ধতি সম্পর্কে জানে না, এটি একটি লাইব্রেরির মাধ্যমে করতে পারেন।)


1
সেগুলি ( /etc/passwd, /etc/groups) এমন প্রক্রিয়াগুলি দ্বারাও পঠিত হয় যা অভ্যন্তরীণ সংখ্যাসূচক আইডিগুলির পরিবর্তে ব্যবহারকারীর নাম প্রদর্শন করতে বা প্রক্রিয়া করতে চায়, যেমন psএবং ls
জোনাস শোফার

3

অন্যান্য জিনিসের মধ্যে, এর উদ্দেশ্য /etc/passwdহ'ল ব্যবহারকারীর নাম কোনও ব্যবহারকারীর ইউআইডি-তে অনুবাদ করা । ববের ইউআইডি কী তা যদি আপনার যত্ন না করে থাকে তবে আপনার সেই ফাইলটির দরকার নেই। আপনি যদি কেবল একটি স্বেচ্ছাসেবক ইউআইডি / জিআইডিতে পরিবর্তন করতে চান তবে প্রাসঙ্গিক সিস্কেলগুলি ব্যবহার করুন:

int setuid(uid_t uid);
int setgid(gid_t gid);

নোট করুন যে কোনও ক্ষমতাযুক্ত প্রক্রিয়া CAP_SETUIDএবং CAP_SETGID ক্ষমতাগুলি (যা একটি মূল প্রক্রিয়া সাধারণত থাকে) কেবল তার নিজস্ব ইউআইডি এবং জিআইডি পরিবর্তন করতে পারে, অন্য চলমান প্রক্রিয়া নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.