আপনি যখন লিনাক্সে একটি এক্সিকিউটেবল ফাইল চালান, তখন এটি সাধারণত বর্তমান ব্যবহারকারী এবং গ্রুপ আইডি দিয়ে চলে। যাইহোক, এমন সময় আছে যখন আপনাকে সেই ফাইলটিকে অন্য ব্যবহারকারী হিসাবে চালাতে হবে (যেমন রুট)। আপনার ব্যবহারকারীর অ্যাকাউন্ট স্যুইচ করার পরিবর্তে, আপনি ফাইলের মালিক হিসাবে এক্সিকিউটেবল চালানোর জন্য setuid ব্যবহার করতে পারেন এবং বর্তমান ব্যবহারকারীকে নয়। এখানে আমরা ব্যাখ্যা করব কিভাবে setuid কাজ করে এবং কিভাবে এটি ব্যবহারকারীদেরকে এক্সিকিউটেবল/বাইনারী চালানোর অনুমতি দেয়।
সেটুইড কিভাবে কাজ করে?
Setuid মানে SET User ID অন এক্সিকিউশন . ধরা যাক রুট ব্যবহারকারীর দ্বারা তৈরি করা "পরিচয়" নামে একটি এক্সিকিউটেবল আছে। আপনি যখন এটি চালাবেন, এটি আপনার ব্যবহারকারী আইডি, গ্রুপ আইডি এবং ব্যবহারকারীর বিশেষাধিকার দিয়ে চলবে। যদি setuid বিটটি "পরিচয়" ফাইলে সেট করা থাকে, আপনি যখন এটি চালাবেন, এটি রুট ব্যবহারকারী এবং এর ব্যবহারকারীর বিশেষাধিকার হিসাবে চালানো হবে৷
একটি উদাহরণ হিসাবে, আমরা প্রথমে "পরিচয়" ফাইলের মালিকানা পরীক্ষা করতে পারি এবং যাচাই করতে পারি যে এটি মূল ব্যবহারকারীর মালিকানাধীন। অনুমতি স্ট্রিং ব্যবহারকারী, গোষ্ঠী এবং অন্যান্যদের জন্য এক্সিকিউটেবল (x) বিট সেটও দেখায়।
ব্যবহারকারী "john1" "পরিচয়" ফাইলটি চালায়, যা কার্যকর করার প্রক্রিয়াতে পরিণত হয়। প্রসেস লিস্টে যেমন দেখানো হয়েছে, প্রসেসটি "john1" ইউজারনেম এবং ইউজার আইডির অধীনে তৈরি এবং চালানো হয়।
এর পরে, রুট ব্যবহারকারী হিসাবে, আমরা "পরিচয়" ফাইলের setuid বিট সেট করি:
chmod u+s /usr/bin/identity
"u" বোঝায় যে setuid বিট (+s) শুধুমাত্র ব্যবহারকারীর জন্য সেট করা আবশ্যক।
মালিকের জন্য, অনুমতি স্ট্রিং এর এক্সিকিউটেবল অংশে আমরা দেখতে পাচ্ছি যে "x" কে "s" দিয়ে প্রতিস্থাপিত করা হয়েছে। যখনই আপনি একটি এক্সিকিউটেবলের জন্য "s" এর মুখোমুখি হন, এর মানে হল এটিতে setuid বিট সেট করা হয়েছে৷
chmod
এর সংখ্যাসূচক বৈকল্পিক নীচে দেখানো হিসাবে কমান্ড ব্যবহার করা যেতে পারে।
chmod 4755 /usr/bin/identity
সাংখ্যিক অনুমতি স্ট্রিং-এ 4 যোগ করলে সেটুইড বিটের অন্তর্ভুক্তি বোঝায়।
যখন "john1" আবার "পরিচয়" ফাইলটি চালায় তখন কি হয়। চলমান প্রক্রিয়াগুলির তালিকার দিকে তাকালে, আমরা এখন দেখতে পাচ্ছি যে প্রক্রিয়াটি "john1" এর পরিবর্তে "root" ব্যবহারকারী দ্বারা তৈরি এবং চালানো হয়েছে৷
সেটুইড বিটের গুরুত্বপূর্ণ ব্যবহার
বেশিরভাগ সময় আপনি বিশেষজ্ঞদের কাছ থেকে শুনতে পাবেন যে আপনার রুট ব্যবহারকারী হিসাবে অ্যাপ্লিকেশন চালানো উচিত নয়। যাইহোক, এমন কিছু উদাহরণ রয়েছে যেখানে নির্দিষ্ট ফাইলগুলিকে রুট অনুমতি নিয়ে চালানোর প্রয়োজন। উদাহরণস্বরূপ, passwd
যে ইউটিলিটি লিনাক্স সিস্টেমে ডিফল্টরূপে ইনস্টল করা হয় তাতে setuid বিট সেট থাকে।
কারণটি সহজ:একজন ব্যবহারকারীর জন্য পাসওয়ার্ডের তথ্য "/etc/passwd" এবং "/etc/shadow" ফাইলগুলিতে সংরক্ষণ করা হয়, যা শুধুমাত্র "রুট" দ্বারা সংশোধন করা যেতে পারে। যখন "john1" নিজের জন্য পাসওয়ার্ড পরিবর্তন করার চেষ্টা করে, তখন তার কাছে উল্লিখিত দুটি ফাইলে তথ্য পরিবর্তন করার অনুমতি থাকতে হবে। passwd
-এ setuid বিট সেট করা আছে ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে এবং দুটি ফাইলের তথ্য আপডেট করার জন্য অস্থায়ীভাবে রুট অনুমতি পেতে "john1" সক্ষম করে৷
Setuid নিরাপত্তা ঝুঁকি
আপনি যদি সতর্ক না হন, তাহলে একজন আক্রমণকারী আপনার সিস্টেম নিয়ন্ত্রণ করতে সেটুইড বাইনারি ব্যবহার করতে পারে। ব্যবহারকারীদের সাধারণত সেটুইড প্রোগ্রাম ইনস্টল করা উচিত নয়, বিশেষ করে নিজেদের ছাড়া অন্য ব্যবহারকারীদের জন্য সেটুইড। সবচেয়ে গুরুত্বপূর্ণ, আপনার হোম ফোল্ডারে রুট ব্যবহারকারীর জন্য আপনার কোনো সেটুইড সক্ষম বাইনারি থাকা উচিত নয়। এগুলি সাধারণত ট্রোজান হর্স, বা ম্যালওয়্যার৷
৷উপসংহার
Setuid শুধুমাত্র এক্সিকিউটেবল ফাইলগুলিতে সেট করা যেতে পারে। একইভাবে, setgid
বিটও সেট করা যেতে পারে, যা একটি গ্রুপের সকল সদস্যকে মালিকের অনুমতি নিয়ে একটি এক্সিকিউটেবল চালাতে সক্ষম করে।
মনে রাখবেন যে setuid
এবং setgid
বিটগুলি নিরাপত্তা-সংবেদনশীল এবং শুধুমাত্র যোগ্য সিস্টেম অ্যাডমিনিস্ট্রেটরদের দ্বারা ব্যবহার করা আবশ্যক৷
পরবর্তী পড়ুন:
- লিনাক্সে শেয়ার করা ডিরেক্টরিগুলিতে ফাইলগুলি পরিচালনা করতে কীভাবে স্টিকি বিট ব্যবহার করবেন
- লিনাক্স টার্মিনালে বানান পরীক্ষা কিভাবে করবেন
- লিনাক্সে ফাইল অনুসন্ধান করার জন্য অনুসন্ধান, অবস্থান, কোনটি এবং কোথায় কমান্ড ব্যবহার করে