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

sudo কমান্ড এবং কনফিগারেশন ফাইলের পরিচিতি

এই গাইড ব্যাখ্যা করবে sudo কমান্ড কী, লিনাক্সে কীভাবে ব্যবহার করতে হয়, এবং এর কনফিগারেশন ফাইল কীভাবে এডিট করতে হয়।

উবুন্টু লিনাক্স ইউজাররা লিনাক্সে "sudo" কমান্ড ব্যবহার করার সাথে পরিচিত হতে পারেন। এটি লিনাক্সে একটি খুব উপকারী ফিচার যা একটি লিনাক্স মেশিনের অ্যাডমিনিস্ট্রেটরকে একটি নির্দিষ্ট ইউজার বা ইউজার গ্রুপকে "রুট" প্রিভিলেজ দিতে সক্ষম করে। এটি এভাবেও কনফিগার করা যায় যাতে এই প্রিভিলেজ এক বা একাধিক কমান্ডের জন্য সীমাবদ্ধ থাকে। উবুন্টু টিম, উদাহরণস্বরূপ, রুট ইউজারকে ডিফল্টভাবে লগইন করতে ব্লক করে রাখেছে এবং পরিবর্তে ইউজারদের sudo ব্যবহার করতে দিয়েছে অ্যাডমিনিস্ট্রেটিভ টাস্ক করার জন্য। তাই আপনি যদি উবুন্টু লিনাক্স ব্যবহার করেন, sudo প্রিভিলেজ সেট আপ করা আছে যাতে আপনার পূর্ণ "রুট" প্রিভিলেজ থাকে। চলুন আপনার মেশিনে sudo প্রিভিলেজ সেট আপ এবং কনফিগার করার”上ে নজর দিই। আগে অগ্রसर হয়ার আগে দয়া করে নোট করুন যে আপনাকে নিচের উদাহরণগুলো প্রোডাকশন সার্ভারে ট্রাই না করা উচিত। অনুগ্রহ করে এই টিউটোরিয়ালের উদাহরণগুলো একটি টেস্ট মেশিনে ট্রাই করুন এবং sudo-র সাথে পরিচিত হোন প্রোডাকশন সার্ভারে ট্রাই করার আগে। sudo একটি খুব পাওয়ারফুল টুল এবং অত্যন্ত সতর্কতার সাথে ব্যবহার করতে হবে।

আমার জানা মতে "sudo" প্যাকেজ সকল লিনাক্স ডিস্ট্রিবিউশনের সাথে আসে। তাই আমি ইনস্টলেশন স্কিপ করি এবং সরাসরি কনফিগারেশনে যাই। এই টিউটোরিয়ালের জন্য আমি একটি রেড হ্যাট লিনাক্স মেশিন ব্যবহার করব। আপনার লিনাক্স মেশিনে রুট হিসেবে লগইন করুন এবং কমান্ড লাইনে নিচের কমান্ডটি রান করুন:

# visudo

উপরের কমান্ড "sudo" কনফিগারেশনটি খুলবে, যা অবস্থিত /etc/sudoers-এ, আপনার মেশিনের ডিফল্ট এডিটর ব্যবহার করে, যা আমার কেসে Vim। সেকশনটি স্ক্রোল ডাউন করুন যেখানে আপনি নিচের টেক্সটটি দেখতে পাবেন:

root ALL=(ALL) ALL

এই sudo কনফিগারেশন সিনট্যাক্সের ব্রেকডাউন হয় এইভাবে। প্রথমে আপনি 'user'-কে ডিফাইন করেন যার জন্য আপনি sudo সেট আপ করতে চান। তারপর আসে 'hostname' যেখানে কমান্ডটি চলার অনুমতি থাকবে। এটি একটি স্পেসিফিক হোস্টনেম হতে পারে বা উদাহরণের মতো "ALL"। এবং শেষে 'command' যেটির জন্য আপনি 'user'-কে অ্যাডমিনিস্ট্রেটিভ প্রিভিলেজ দিতে চান।

কনফিগারেশনে ফিরি। Vim-এ উপরের লাইনটি দেখে নিচে স্ক্রোল করুন এবং আপনার কীবোর্ডের o অক্ষর চাপুন একটি নতুন লাইন যোগ করতে। এখন নিচের টেক্সটটি যোগ করুন, calvin-কে আপনার নিজস্ব ইউজারনেম দিয়ে রিপ্লেস করে:

calvin ALL=(ALL) ALL

ফাইলটি সেভ এবং এক্সিট করুন নিচের কী কম্বিনেশন ব্যবহার করে:

ESC :wq

Return (এন্টার) কী চাপুন এই ইনস্ট্রাকশনগুলো অ্যাপ্লাই করার জন্য। আমরা এখন ইউজার 'calvin'-কে sudo ব্যবহার করে সকল অ্যাডমিনিস্ট্রেটিভ প্রিভিলেজ দিয়ে দিয়েছি। একটি নতুন টার্মিনাল উইন্ডো খুলুন এবং যেই ইউজারকে sudo প্রিভিলেজ দিয়েছিলেন সেটি হিসেবে লগইন করুন। আসুন টেস্ট করি নতুন পারমিশনগুলো সঠিকভাবে সেট আপ হয়েছে কিনা Apache ওয়েব সার্ভার রিস্টার্ট করে ইউজার 'calvin' হিসেবে:

# sudo /etc/init.d/httpd restart
Password:
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

সিস্টেম এখন আপনাকে পাসওয়ার্ড প্রম্পট করবে। আপনার ইউজারনেমের পাসওয়ার্ড লিখুন। এবং ওলা! Apache ওয়েব সার্ভার এখন রিস্টার্ট হয়ে যাবে। আপনি এটি যেকোনো অন্যান্য অ্যাডমিনিস্ট্রেটিভ টাস্কের জন্য ব্যবহার করতে পারেন। একটি ইউজারকে সম্পূর্ণ প্রিভিলেজ দেয়া সবসময় ভালো আইডিয়া নয়। তাই আপনি ইউজারকে কয়েকটি কমান্ডের সাথে অ্যাডমিনিস্ট্রেটিভ প্রিভিলেজ দিয়ে সীমাবদ্ধ করতে পারেন। চলুন বলুন আপনি চান ইউজার 'calvin'-কে শুধু Apache ওয়েব সার্ভার রিস্টার্ট করার অনুমতি দিন। sudo কনফিগারেশন ফাইল visudo কমান্ড দিয়ে খুলুন এবং আগে আপনি যে লাইনটি লিখেছিলেন সেটি এডিট করুন নিচের মত দেখাতে:

calvin ALL=(ALL) /etc/init.d/httpd restart

ফাইলটি সেভ এবং এক্সিট করুন। টার্মিনালে ইউজার 'calvin' হিসেবে লগইন করুন। এখন sudo দিয়ে Apache রিস্টার্ট করার চেষ্টা করুন:

# sudo /etc/init.d/httpd restart
Password:
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

বাহ! কাজ করল। এখন ওয়েব সার্ভার স্টপ করার চেষ্টা করুন:

# sudo /etc/init.d/httpd stop
Password:
Sorry, user calvin is not allowed to execute ‘/etc/init.d/httpd stop’ as root on commons.

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

calvin ALL=(ALL) /etc/init.d/httpd restart,/etc/init.d/httpd stop

এখন ওয়েব সার্ভার স্টপ করার চেষ্টা করুন, এবং এটা কাজ করা উচিত:

# sudo /etc/init.d/httpd stop
Password:
Stopping httpd: [ OK ]

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

sudoers ফাইলটি খুলুন এবং আগে লিখা লাইনটি এডিট করুন নিচের মত দেখাতে:

calvin ALL=(ALL) /etc/init.d/httpd restart NOPASSWD: ALL

কনফিগারেশনের শেষ অংশ sudo-কে পাসওয়ার্ড প্রম্পট বা এক্সপেক্ট না করতে বলে, এবং ইউজারকে সেটি যেটি অ্যাসাইন করা আছে সেই কমান্ডটি অ্যাডমিনিস্ট্রেটিভ প্রিভিলেজ দিয়ে এক্সিকিউট করার অনুমতি দেয়। ফাইলটি সেভ করুন এবং আপনার টেক্সট এডিটর থেকে এক্সিট করুন এবং Apache রিস্টার্ট করার চেষ্টা করুন:

# sudo /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

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

  1. su, sudo su, sudo -s এবং sudo -i-এর পার্থক্য: রুট অ্যাক্সেসের পূর্ণ গাইড

  2. লিনাক্সে হোস্টস ফাইল ব্যবহার ও এডিট করার পদ্ধতি

  3. লিনাক্সে Find কমান্ড ব্যবহার করে ফাইল খুঁজে বের করার পদ্ধতি

  4. HTML এবং CSS-র শুরুতাবদের গাইড