مقدمه
در هنگام مدیریت یک سرور، گاهی لازم است به کاربران اجازه دهید دستورات را با سطح دسترسی مدیر (root) اجرا کنند. دستور sudo ابزاری است که به مدیر سیستم امکان میدهد برخی کاربران معمولی را مجاز کند تا دستورات خاصی را با سطح دسترسی مدیر اجرا کنند، بدون اینکه نیازی به ورود مستقیم به حساب root باشد.
در این آموزش، یاد میگیرید چگونه یک کاربر جدید با دسترسی sudo در اوبونتو ایجاد کنید، بدون آنکه نیازی به ویرایش فایل /etc/sudoers داشته باشید.
نکته: اگر قصد دارید به کاربر فعلی خود دسترسی
sudoبدهید، از مرحله ۳ شروع کنید.
مراحل ایجاد کاربر جدید با دسترسی sudo
- ورود به سرور
- افزودن کاربر جدید به سیستم
- افزودن کاربر به گروه sudo
- آزمایش دسترسی sudo
مرحله ۱ — ورود به سرور
با استفاده از SSH به عنوان کاربر root وارد سرور شوید:
ssh root@your_server_ip_address
مرحله ۲ — افزودن کاربر جدید به سیستم
برای افزودن یک کاربر جدید از دستور زیر استفاده کنید:
adduser sammy
به جای sammy، نام کاربر مورد نظر خود را بنویسید. سیستم از شما میخواهد رمز عبور کاربر جدید را تعیین و تأیید کنید:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
سپس میتوانید اطلاعات تکمیلی وارد کنید یا برای عبور از هر گزینه، کلید Enter را بزنید:
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
مرحله ۳ — افزودن کاربر به گروه sudo
برای اعطای دسترسی مدیریتی، کاربر را به گروه sudo اضافه کنید:
usermod -aG sudo sammy
تمام اعضای گروه sudo در اوبونتو به صورت پیشفرض اجازه اجرای دستورات مدیریتی را دارند.
مرحله ۴ — آزمایش دسترسی sudo
برای بررسی فعال بودن دسترسی sudo، ابتدا با کاربر جدید وارد شوید:
su - sammy
سپس یک دستور مدیریتی را با sudo اجرا کنید، برای مثال:
sudo ls -la /root
در اولین اجرای sudo، سیستم رمز عبور کاربر جدید را درخواست میکند:
[sudo] password for sammy:
توجه: این رمز عبور کاربر جدید است، نه رمز root.
اگر رمز درست باشد و کاربر عضو گروه sudo باشد، دستور با سطح دسترسی مدیر اجرا خواهد شد.
تفاوت بین sudo و su
هر دو دستور sudo و su برای اجرای دستورات با سطح دسترسی بالا استفاده میشوند، اما شیوه کار آنها متفاوت است.
-
sudo (مخفف SuperUser Do) به کاربر مجاز اجازه میدهد یک یا چند دستور خاص را با سطح دسترسی کاربر دیگر (معمولاً root) اجرا کند. این دستور از رمز خود کاربر استفاده میکند و همه فعالیتها را در لاگ ذخیره مینماید، بنابراین برای امنیت و ردیابی بهتر است.
-
su (مخفف Switch User) به شما اجازه میدهد به طور کامل به حساب کاربر دیگری (مثلاً root) وارد شوید. در این حالت باید رمز کاربر هدف (مثلاً root) را بدانید و پس از ورود، تمام محیط و دسترسیهای او را خواهید داشت تا زمانی که با دستور
exitخارج شوید.
ایجاد کاربر بدون دسترسی به شِل (برای حسابهای سیستمی یا خودکار)
در برخی موارد مدیریتی، نیاز به ساخت کاربرانی دارید که نباید امکان ورود تعاملی به سرور داشته باشند — مثلاً برای اجرای سرویسها، اسکریپتها یا daemonها. در این حالت، باید کاربر را با «شل غیرفعال» ایجاد کنید.
شلهای غیرفعال معمول عبارتاند از:
/usr/sbin/nologin/bin/false
این گزینهها مانع از ورود کاربر به سیستم میشوند.
استفاده از adduser
sudo adduser --system --no-create-home --shell /usr/sbin/nologin serviceuser
توضیح گزینهها:
--system: کاربر سیستمی ایجاد میکند (با UID کمتر از ۱۰۰۰)--no-create-home: از ساخت دایرکتوری خانگی جلوگیری میکند--shell /usr/sbin/nologin: مانع ورود کاربر به شل میشود
نمونه:
sudo adduser --system --no-create-home --shell /usr/sbin/nologin ftpuser
استفاده از useradd
sudo useradd -r -s /usr/sbin/nologin db_reader
توضیح گزینهها:
-r: ایجاد حساب سیستمی-s: تعیین شل غیرفعال- عدم استفاده از
-mباعث میشود دایرکتوری خانگی ساخته نشود
بررسی دسترسی sudo با دستور sudo -l
برای مشاهده دستورات مجاز یک کاربر در sudo، میتوانید بنویسید:
sudo -l
یا برای بررسی دسترسی کاربر دیگر:
sudo -U username -l
این روش برای مدیران مفید است تا بتوانند مجوزهای هر کاربر را بدون مشاهده مستقیم فایل sudoers بررسی کنند.
بهترین شیوهها برای مدیریت دسترسیها و محدودسازی sudo
رعایت اصول امنیتی در سطح دسترسی کاربران بسیار مهم است. اصل اساسی این است که هر کاربر فقط به آنچه نیاز دارد دسترسی داشته باشد (اصل کمترین دسترسی).
نکات کلیدی:
- اعطای حداقل دسترسی ممکن: فقط دستورات یا فایلهایی را مجاز کنید که واقعاً لازم است.
- مدیریت گروهی کاربران: به جای دادن مجوزهای جداگانه، گروه بسازید و کاربران مرتبط را در آن قرار دهید.
- استفاده از مسیر کامل دستورات در sudoers: مثلاً
/usr/sbin/serviceبهجایservice. - پرهیز از استفاده از NOPASSWD مگر در موارد خاص و امن.
- عدم استفاده از wildcardها در فایل sudoers برای جلوگیری از اشتباهات امنیتی.
پرسشهای متداول (FAQ)
۱. تفاوت adduser و useradd چیست؟
adduser یک اسکریپت سطح بالا و کاربرپسند است که مراحل ایجاد کاربر، ساخت دایرکتوری، تنظیم شل و کپی فایلهای اولیه را خودکار انجام میدهد.
useradd ابزار سطح پایینتری است که کنترل دقیقتری ارائه میدهد اما به صورت پیشفرض دایرکتوری خانگی نمیسازد مگر اینکه گزینه -m استفاده شود.
۲. چگونه بررسی کنم که کاربر دسترسی sudo دارد؟
با دستور زیر:
getent group sudo
اگر نام کاربر در خروجی بود، او به گروه sudo تعلق دارد.
یا از دستور آزمایشی:
sudo ls /root
اگر اجرا شد، کاربر sudo دارد.
۳. آیا میتوان حساب root را غیرفعال کرد؟
بله، این کار از نظر امنیتی توصیه میشود:
sudo passwd -l root
برای فعالسازی مجدد:
sudo passwd -u root
۴. چطور میتوان دسترسی sudo را محدود کرد؟
فایل /etc/sudoers را با visudo باز کنید:
sudo visudo
مثلاً برای اینکه کاربر webadmin فقط بتواند Apache را ریاستارت کند:
webadmin ALL=(ALL:ALL) /usr/sbin/service apache2 restart
⚠️ هرگز فایل sudoers را بدون visudo ویرایش نکنید؛ اشتباه در این فایل ممکن است کل دسترسی مدیریتی سیستم را از بین ببرد.
نتیجهگیری
در این راهنما یاد گرفتیم چگونه یک کاربر جدید با دسترسی sudo در اوبونتو ایجاد کنیم، تفاوت بین sudo و su را درک کنیم، و کاربران سرویس را بدون شل تعاملی بسازیم. همچنین با بهترین روشهای امنیتی برای مدیریت دسترسیها و محدود کردن دستورات sudo آشنا شدیم.
برای راهنماییهای بیشتر در مورد راهاندازی سرور اوبونتو، میتوانید به مقالات زیر مراجعه کنید: