কম্পিউটার টিউটোরিয়াল

Setuid কীভাবে ইউজারদের এস্কেলেটেড প্রivilেজের সাথে ফাইল রান করতে দেয়

যখন আপনি লিনাক্সে একটি এক্সিকিউটেবল ফাইল রান করেন, এটি সাধারণত বর্তমান ইউজার এবং গ্রুপ ID-র সাথে চলে। কিন্তু কিছু সময় আপনাকে সেই ফাইলটি অন্য ইউজার (রুটের মত) হিসেবে রান করতে হয়। আপনার ইউজার অ্যাকাউন্ট সুইচ করার বদলে, আপনি setuid ব্যবহার করে এক্সিকিউটেবলটি ফাইল ওনার হিসেবে রান করতে পারেন, বর্তমান ইউজার হিসেবে না। এখানে আমরা ব্যাখ্যা করব setuid কীভাবে কাজ করে এবং কীভাবে এটি ইউজারদের এক্সিকিউটেবল/বাইনারি এস্কেলেটেড প্রিভিলেজের সাথে রান করতে দেয়।

Setuid কীভাবে কাজ করে?

Setuid মানে SET User ID on execution। ধরুন, "identity" নামে একটি এক্সিকিউটেবল রুট ইউজার তৈরি করেছে। আপনি যখন এটি রান করবেন, এটি আপনার ইউজার ID, গ্রুপ ID এবং ইউজার প্রিভিলেজের সাথে চলবে। যদি "identity" ফাইলে setuid বিট সেট করা থাকে, তবে আপনি যখন এটি রান করবেন, এটি রুট ইউজার হিসেবে এবং এর ইউজার প্রিভিলেজের সাথে চলবে।

ইলাস্ট্রেশনের হিসেবে, আমরা প্রথমে "identity" ফাইলের ওনারশিপ চেক করি এবং ভেরিফাই করি যে এটি রুট ইউজারের স্বামিত্বে। পারমিশন স্ট্রিংও ইউজার, গ্রুপ এবং অথার্সের জন্য এক্সিকিউটেবল (x) বিট সেট দেখাচ্ছে।

ইউজার "john1" "identity" ফাইলটি এক্সিকিউট করে, যা এক্সিকিউশনে একটি প্রসেসে রূপান্তরিত হয়। প্রসেস লিস্টে দেখানো হয়েছে, প্রসেসটি "john1" ইউজারনেম এবং ইউজার ID-র অধীনে তৈরি ও রান হয়েছে।

এরপর, রুট ইউজার হিসেবে, আমরা "identity" ফাইলের setuid বিট সেট করি:

chmod u+s /usr/bin/identity

"u" обозначає যে setuid বিট (+s) শুধু ইউজারের জন্য সেট করা হবে।

ওনারের জন্য, পারমিশন স্ট্রিং-এর এক্সিকিউটেবল পার্টে আমরা দেখি "x" হলো "s"-এর সাথে রিপ্লেসড। আপনি যখনই এক্সিকিউটেবলের জন্য "s" দেখবেন, বুঝবেন সেটিতে setuid বিট সেট করা আছে।

chmod কমান্ডের নমেরিক্যাল ভ্যারিয়েন্টও নিচের মতো ব্যবহার করা যায়।

chmod 4755 /usr/bin/identity

নমেরিক্যাল পারমিশন স্ট্রিং-এ ৪ যোগ করলে setuid বিট ইনক্লুড হয়।

নিচের হলো যা ঘটে যখন "john1" আবার "identity" ফাইলটি এক্সিকিউট করে। রানিং প্রসেসের লিস্ট দেখলে, আমরা এখন দেখি প্রসেসটি "john1"-এর বদলে "root" ইউজার দ্বারা তৈরি ও রান হয়েছে।

Setuid বিটের গুরুত্বপূর্ণ ব্যবহার

বেশির ভাগ সময় আপনি এক্সপার্টদের শুনবেন যে আপনাকে রুট ইউজার হিসেবে অ্যাপ্লিকেশন রান করা উচিত নয়। কিন্তু কিছু উদাহরণ রয়েছে যেখানে নির্দিষ্ট ফাইলগুলো রুট পারমিশনের সাথে রান করতে হয়। উদাহরণস্বরূপ, লিনাক্স সিস্টেমে ডিফল্টভাবে ইনস্টলড passwd ইউটিলিটিতে setuid বিট সেট করা থাকে।

কারণটি সহজ: একটি ইউজারের পাসওয়ার্ড ইনফরমেশন "/etc/passwd" এবং "/etc/shadow" ফাইলে সংরক্ষিত থাকে, যেগুলো শুধু "root" দ্বারা মডিফাই করা যায়। যখন "john1" নিজের পাসওয়ার্ড পরিবর্তন করার চেষ্টা করে, তাকে উপরের দুটি ফাইলে ইনফরমেশন মডিফাই করার পারমিশন দরকার। passwd-এ setuid বিট সেট থাকা "john1"-কে সাময়িকভাবে রুট পারমিশন দিয়ে ইউজার পাসওয়ার্ড পরিবর্তন করতে এবং দুটি ফাইলে ইনফরমেশন আপডেট করতে সক্ষম করে।

Setuid সিকিউরিটি রিস্ক

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

উপসংহার

Setuid শুধু এক্সিকিউটেবল ফাইলগুলোর ওপর সেট করা যায়। একইভাবে, setgid বিটও সেট করা যায়, যা একটি গ্রুপের সকল মেম্বারকে একটি এক্সিকিউটেবল ওনার পারমিশন সহ রান করতে সক্ষম করে।

লক্ষ্য করুন setuid এবং setgid বিট সিকিউরিটি-সংবেদনশীল এবং শুধু যোগ্য সিস্টেম অ্যাডমিনিস্ট্রেটররা ব্যবহার করা উচিত।

পরবর্তী পড়ুন:

  • লিনাক্সে শেয়ারড ডিরেক্টরিতে ফাইল ম্যানেজ করার জন্য Sticky Bit ব্যবহার করা
  • লিনাক্স টার্মিনালে স্পেলিং চেক করা
  • find, locate, which এবং whereis কমান্ড ব্যবহার করে লিনাক্সে ফাইল খোঁজা
  1. উইন্ডোজ ১০-এ .JAR ফাইল চালানোর উপায়

  2. উইন্ডোজ ১০-এ অ্যাপ্লিকেশন ভিন্ন ইউজার হিসেবে চালানোর পদ্ধতি

  3. উইন্ডোজ ১০-এ JAR ফাইল সহজে চালান: ধাপে ধাপে গাইড

  4. OneDrive ফাইল সুরক্ষিতভাবে কাউকে শেয়ার করার কম্প্লিট গাইড