Doas হলো একটি প্রivilেজ এস্কেলেশন প্রোগ্রাম sudo-এর মতো। এটি যতসাম্ভব হালকা এবং সহজ ডিজাইন করা হয়েছে। এটি OpenBSD-এর ডিফল্ট প্রivilেজ এস্কেলেশন প্রোগ্রাম কিন্তু OpenDoas প্রোগ্রামের মাধ্যমে অন্যান্য UNIX-লাইক অপারেটিং সিস্টেমের জন্যও উপলব্ধ।
sudo-এর সমস্যা
বছরের পর বছর, sudo ইউনিক্স বিশ্বে ডি ফ্যাক্টো প্রivilেজ এস্কেলেশন প্রোগ্রাম হয়ে উঠেছে। তবে এর মানে হলো sudo-কে প্রতিটি ইউজ-কেস ক্যাটার করতে पड़ছে প্রতিটি পারসনের জন্য যারা UNIX-লাইক মেশিন ব্যবহার করছে। প্রোগ্রাম ডেভেলপমেন্টের এই পদ্ধতিটি sudo কে একটি অনুপযোগী প্রোগ্রাম বানিয়েছে যা বুঝতে কঠিন এবং ব্যবহার করতেও কঠিন।
উদাহরণস্বরূপ, sudo-এর আচরণ মডিফাই করতে, আপনাকে visudo কমান্ড চালাতে হবে। এটি একটি স্পেশাল লোডার প্রোগ্রাম যা "/etc/sudoers" ফাইলটি "সেফ মোড"-এ খোলে।
Visudo কয়েকটি কাজ করে: এটি রুটিনলি "/etc/sudoers" ফাইলে সিনট্যাক্স এরর চেক করে এবং "/etc/sudoers" ফাইলটি লক করে যাতে কারো অন্য সেটি এডিট করতে না পারে বর্তমান ইউজারের বাদে। এগুলো সারফেসে লাগতে পারে উপকারী, কিন্তু visudo sudo-এর ক্রমবর্ধমান জটিলতার একটি লক্ষণ।
এটি মানে sudoers ফাইলের সিনট্যাক্স এত জটিল হয়ে গেছে যে পোটেনশিয়াল সিনট্যাক্স এরর চেক করা প্রয়োজন হয়ে পড়েছে। এটিও মানে sudo-কে একই সাথে সিঙ্গেল-ইউজার এবং মাল্টি-ইউজার এনভায়রনমেন্ট ক্যাটার করতে पड़ছে, তাই sudoers ফাইলটি বর্তমান ইউজারের জন্য লক করতে पड़ছে।
Sudo একটি চমৎকার প্রোগ্রাম। এর জটিল কনফিগারেশন সিনট্যাক্স আলंकৃত পারমিশন সিস্টেম তৈরি করতে পারে যা একজন অভিজ্ঞ সিস্টেম এডমিনিস্ট্রেটরের জন্য পোটেনশিয়ালি উপকারী।
বেশিরভাগ ইউজারের জন্য, তবে, আমরা শুধু sudo ব্যবহার করি একটি রুট শেল পেতে প্রোগ্রাম ইনস্টল এবং সিস্টেম টিংকার করার জন্য। sudo-এর জটিলতা, সেসব কেসে, একটি ফিচারের চেয়ে বাধার মতো দেখায়।
কেন doas ব্যবহার করবেন?
Doas-এর উদ্দেশ্য হলো sudo-এর জটিলতা সমাধান করা। এটি OpenBSD-এর জন্য ডেভেলপ করা হয়েছিল এবং দ্রুত প্রায় সব লিনাক্স সিস্টেমে পোর্ট করা হয়েছিল। এটি দ্রুত এবং সহজ ব্যবহার করা যাবে তা লক্ষ্য রাখে কিন্তু সহজে মেইনটেইন এবং সুরক্ষিতও।
doas-এর সিনট্যাক্সও sudo থেকে আলাদা। এটিকে কনফিগার করা সাদা ইংরেজি লেখার মতো। sudo-তে, উদাহরণস্বরূপ, wheel গ্রুপের যেকোনো ইউজারকে রুট হিসেবে এক্সিকিউট করতে দেয়া বিনা পাসওয়ার্ডের সিনট্যাক্স হলো:
%wheel ALL=(ALL) NOPASSWD: ALL
doas-এ, অন্যদিকে, সিনট্যাক্স আরও সহজ বুঝতে:
permit nopass :wheel as root
আরও, doas-কে visudo-এর মতো কোনো স্পেশাল লোডার প্রোগ্রাম দরকার নেই তার কনফিগারেশন মডিফাই করার জন্য। ইউজার শুধু যেকোনো টেক্সট এডিটর দিয়ে কনফিগারেশন ফাইল এডিট করতে পারেন, এবং যতক্ষণ না ইউজারর পর্যাপ্ত প্রivilেজ থাকে, তারা কনফিগারেশনে পরিবর্তন আনতে পারবে।
এটি doas কে বুঝতে এবং মেনে চলতে সহজ করে তোলে। এর সরল এবং স্পষ্ট পদ্ধতি প্রivilেজড ইউজার এবং গ্রুপ তৈরি করার জন্য প্রক্রিয়াকে ট্রান্সপারেন্ট এবং এরর-ফ্রি করে ইউজারের জন্য।
sudo দিয়ে doas সেট আপ করার পদ্ধতি
আপনি যদি একটি লিনাক্স সিস্টেম ব্যবহার করেন, তবে বড় সম্ভাবনা যে আপনি ইতিমধ্যে sudo ব্যবহার করছেন আপনার প্রivilেজ এস্কেলেশন প্রোগ্রাম হিসেবে, এবং এতে doas ইনস্টল করা তুলনামূলকভাবে স্ট্রেটফরওয়ার্ড।
Debian এবং Ubuntu-এ, doas ইনস্টল করতে apt ব্যবহার করতে পারেন:
sudo apt install doas
Arch Linux-এ, pacman ব্যবহার করতে পারেন:
sudo pacman -Syu opendoas
Fedora-এ, dnf ব্যবহার করতে পারেন:
sudo dnf install opendoas
Void Linux-এ, xbps ব্যবহার করতে পারেন:
sudo xbps-install opendoas
আমার কেসে, আমি আমার Void Linux-এ doas ইনস্টল করছি, তাই আমি XBPS ব্যবহার করছি।
doas কনফিগারেশন ফাইল
doas ইনস্টল হয়ে গেলে, আপনি এখন "/etc/doas.conf" ফাইলটি এডিট করতে পারেন su ব্যবহার করে রুট ইউজারে সুইচ করে।
su --command="nano /etc/doas.conf"
Su আপনার রুট পাসওয়ার্ড চাইবে, এবং এরপর, এটি ন্যানো ব্যবহার করে কনফিগারেশন ফাইল খোলবে বা তৈরি করবে।
হয়ে গেলে, আপনি লক্ষ্য করতে পারেন যে "doas.conf" খালি। এটি visudo-র সাথে সম্পূর্ণ আলাদা। কিন্তু যেনে আলোচনা করা হয়েছে, doas কনফিগার করা তুলনামূলকভাবে ত্রিবিয়াল।
কনফিগারেশন সিনট্যাক্স
doas.conf-এর সিনট্যাক্স নিম্নরূপ:
permit|deny [options] identity [as target] [cmd command [args ...]]
- Permit এবং Deny সেট করবে doas রুলটি অনুমতি দেবে কিনা।
- Options doas-এর জন্য অতিরিক্ত কনফিগারেশন। রেজুলার ইউজারের জন্য সবচেয়ে উপকারী অপশনগুলো হলো persist এবং nopass।
- Identity হলো ইউজার বা গ্রুপ যারা doas এক্সিকিউট করছে।
- as target হলো ইউজার যাকে "Identity" রান করতে পারে বা করতে পারবে না।
- cmd হলো কমান্ড যা "Identity" রান করতে পারে বা করতে পারবে না "as target" হিসেবে। ডিফল্ট হলো সকল প্রোগ্রাম, কিন্তু আপনি এই ফিল্ডে একটি নির্দিষ্ট প্রোগ্রাম স্পেসিফাই করতে পারেন।
- args হলো আর্গুমেন্ট যা আপনি নির্দিষ্ট কমান্ডের জন্য স্পেসিফাই করেছেন।
উদাহরণস্বরূপ, নিচেরটি লিখলে wheel গ্রুপের যেকোনো ইউজার রুট হিসেবে কমান্ড এক্সিকিউট করতে পারবে। রুট শেলও পersist করবে যতক্ষণ না উইন্ডো বন্ধ হয়।
permit persist :wheel as root
আপনি একটি রুলও তৈরি করতে পারেন যা শুধু একটি নির্দিষ্ট ইউজারকে টার্গেট করে একটি নির্দিষ্ট কমান্ডের জন্য। উদাহরণস্বরূপ, আপনি নিচের রুল ব্যবহার করতে পারেন "bob" ইউজারকে "apt" প্রোগ্রাম রুট হিসেবে চালাতে দেবার জন্য বিনা কোনো পাসওয়ার্ড চেয়ে।
permit nopass bob as root cmd apt
আমার কেসে, আমি "wheel" গ্রুপকে রুট হিসেবে রান করতে দিতে চাই বিনা কোনো পাসওয়ার্ড। আমি "aga" ইউজারকেও যেও wheel গ্রুপে থাকা সত্ত্বেও রুট হিসেবে যেকোনো কমান্ড চালাতে দিতে চাই না। তাই আমি আমার "/etc/doas.conf"-এ নিচেরটি লিখব:
permit nopass :wheel as root deny aga as root
পোস্ট-কনফিগারেশন
এরপর, আপনাকে কিছু কমান্ড এক্সিকিউট করতে হবে নিশ্চিত করতে যে doas উদ্দেশ্য অনুযায়ী কাজ করছে। প্রথমে, আপনাকে doas.conf-এর ওনার সেট করতে হবে রুট হিসেবে:
sudo chown -c root:root /etc/doas.conf
আপনাকে ফাইলের পারমিশনও 0644 সেট করতে হবে নিশ্চিত করতে যে ফাইলটি শুধু রুট ইউজারের কাছে অ্যাক্সেসযোগ্য।
sudo chmod -c 0644 /etc/doas.conf
শেষে, আপনাকে doas নিজে চেক করতে হবে কনফিগারেশনের ভিতরে যেকোনো সিনট্যাক্স এরর আছে কিনা। সেটির জন্য নিচের কমান্ড চালান:
sudo doas -C /etc/doas.conf && echo "OK" || echo "ERROR"
অভিনন্দন! আপনি সফলভাবে আপনার সিস্টেমের জন্য doas ইনস্টল ও কনফিগার করেছেন। আপনি এখন doas ব্যবহার শুরু করতে পারেন sudo-এর সাবস্টিটিউট হিসেবে বা আপনার doas.conf ফাইল ফাইন-টিউন করতে পারেন আপনার পছন্দ অনুযায়ী। লিনাক্সে সিস্টেম এডমিনিস্ট্রেশন সম্পর্কে আরও জানতে, এই আর্টিকেল পড়ুন।
প্রশ্নোত্তর
১. আমার কনফিগারেশন কাজ করছে না দেখাচ্ছে। আমি একটি নির্দিষ্ট ইউজারের জন্য একটি রুল এবং একটি জেনারেল রুল যোগ করেছি কিন্তু ইউজারের জন্য রুলটি কাজ করছে না।
doas কনফিগারেশন ফাইলটি সবচেয়ে জেনারেল রুল থেকে সবচেয়ে স্পেসিফিক রুল পর্যন্ত কাজ করে। আপনার কনফিগারেশন কাজ করার জন্য, আপনাকে প্রথমে সেটি রুল স্পেসিফাই করতে হবে যেটি সব ইউজারর জন্য প্রযোজ্য। তারপর আপনি সিঙ্গেল ইউজারকে টার্গেট করে রুলটি নিচে স্পেসিফাই করতে পারেন।
২. কি sudo এবং doas একই সিস্টেমে রাখা সম্ভব?
হ্যাঁ! Doas এবং sudo দুটি আলাদা প্রোগ্রাম। সেগুলো একে অপরের সাথে কনফ্লিক্ট করে না, এবং sudo সিস্টেমে রেখে doas ব্যবহার করা ঠিক।
৩. কি doas ব্যবহার করে রুট শেল পাওয়া সম্ভব?
হ্যাঁ, শর্তে আপনি সঠিকভাবে আপনার কনফিগারেশন ফাইল কনফিগার করেছেন। আপনি doas -s চালিয়ে একটি রুট শেল শুরু করতে পারেন।