آموزش ساخت User جدید و دادن دسترسی Sudo در Ubuntu
مقدمه:
آموزش ساخت User جدید و دادن دسترسی Sudo در Ubuntu برای مدیرانی کاربرد دارد که نمیخواهند تمام فعالیتهای روزمره سرور با حساب root انجام شود. در این فرایند ابتدا یک حساب مستقل میسازیم، سپس آن را به گروه sudo اضافه میکنیم و در یک نشست جداگانه، دسترسی مدیریتی را آزمایش میکنیم. پیش از محدودکردن ورود Root یا خروج از حساب فعلی، حتماً مطمئن شوید کاربر جدید میتواند وارد سرور شود و دستورهای مجاز را اجرا کند.
فهرست مطالب
- چرا باید کاربر جداگانه بسازیم؟
- Sudo چیست و چگونه کار میکند؟
- پیشنیازها و هشدارهای ضروری
- ساخت User جدید در Ubuntu
- دادن دسترسی Sudo به کاربر
- آزمایش حساب و دسترسی مدیریتی
- انتقال کلید SSH به کاربر جدید
- اعطای دسترسی محدود با sudoers
- حذف دسترسی Sudo یا غیرفعالکردن کاربر
- خطاهای رایج و روش رفع آنها
- چکلیست امنیت حساب جدید
- جمع بندی
- سؤالات متداول
چرا باید بهجای Root یک User جدید بسازیم؟
حساب Root بالاترین سطح دسترسی را در لینوکس دارد. اجرای یک دستور اشتباه با این حساب ممکن است فایلهای سیستمی، سرویسها یا مجوزهای مهم را تغییر دهد.
روش منطقیتر این است که هر مدیر یک حساب مستقل داشته باشد و فقط هنگام نیاز از sudo استفاده کند. به این ترتیب فعالیتهای کاربران قابل تفکیک میشود و دستورهای عادی بدون دسترسی کامل مدیریتی اجرا میشوند.
مستندات Ubuntu نیز استفاده موردی از sudo را به نشست طولانی با دسترسی Root ترجیح میدهد. البته هر دستوری که با sudo اجرا شود، میتواند همان قدرت کاربر ریشه را داشته باشد؛ بنابراین باید قبل از اجرا کاملاً بررسی شود. Ubuntu Desktop documentation
مزایای ساخت حساب جداگانه عبارتاند از:
- کاهش استفاده مستقیم از حساب Root
- امکان تعریف حساب مستقل برای هر مدیر
- قابلیت حذف دسترسی یک فرد بدون تغییر حساب اصلی
- امکان اعطای دسترسی کامل یا محدود
- سادهترشدن بررسی رخدادها و فعالیتهای مدیریتی
- امکان استفاده از کلید SSH جداگانه برای هر کاربر
اگر چند مدیر، توسعهدهنده یا نیروی پشتیبانی به سرور شما متصل میشوند، ساختار دسترسی باید متناسب با وظیفه هر فرد طراحی شود. برای بررسی سطح دسترسی کاربران و امنیت سرور میتوانید از کارشناسان شرکت تجارت الکترونیک نوژن مشاوره دریافت کنید.
Sudo چیست؟
sudo به کاربر مجاز اجازه میدهد یک فرمان را با سطح دسترسی کاربر دیگری، معمولاً Root، اجرا کند. در Ubuntu کاربران دارای دسترسی مدیریتی معمولاً عضو گروه sudo هستند.
برای مثال، مشاهده فایلهای عادی به دسترسی مدیریتی نیاز ندارد:
ls -la
اما بهروزرسانی فهرست بستهها معمولاً با sudo اجرا میشود:
sudo apt update
پس از اجرای دستور، سیستم معمولاً رمز همان کاربری را درخواست میکند که با آن وارد شدهاید؛ نه الزاماً رمز Root. اگر کاربر مجاز باشد، دستور با سطح دسترسی لازم اجرا میشود.
تفاوت su و sudo
| ویژگی | su |
sudo |
|---|---|---|
| شیوه استفاده | تغییر نشست به کاربر دیگر | اجرای یک فرمان با مجوز بالاتر |
| رمز موردنیاز | معمولاً رمز حساب مقصد | معمولاً رمز کاربر فعلی |
| مدت دسترسی | تا زمان خروج از نشست | برای دستور یا بازه اعتبار احراز هویت |
| کاربرد مناسب | ورود موقت به حساب دیگر | اجرای کنترلشده فرمان مدیریتی |
| ریسک خطای انسانی | بیشتر در نشست طولانی Root | کمتر، به شرط بررسی هر دستور |
برای مدیریت روزمره سرور، اجرای موردی فرمانها با sudo معمولاً کنترل بیشتری ایجاد میکند. بااینحال، دادن دسترسی کامل Sudo به یک حساب به معنای اعطای قدرت مدیریتی گسترده است.
اگر برای پروژه خود به VPS لینوکس یا سروری با خدمات مدیریت و پشتیبانی نیاز دارید، میتوانید سرویسهای سرور مجازی شرکت تجارت الکترونیک نوژن را بررسی کرده و پیش از انتخاب، درباره سیستمعامل و سطح مدیریت مناسب مشاوره بگیرید.
بیشتر بخوایند: خرید سرور مجازی لینوکس
پیشنیازهای ساخت User جدید در Ubuntu
برای اجرای مراحل باید با یک حساب دارای دسترسی sudo یا حساب Root وارد سرور شده باشید. همچنین توصیه میشود کنسول اضطراری ارائهدهنده VPS را در دسترس داشته باشید.
قبل از شروع، موارد زیر را رعایت کنید:
- نشست فعلی SSH را نبندید.
- از فایلهای حساس مانند تنظیمات SSH و Sudo نسخه پشتیبان بگیرید.
- نام کاربری ساده و فاقد فاصله انتخاب کنید.
- از یک رمز طولانی و منحصربهفرد استفاده کنید.
- دسترسی کاربر جدید را قبل از محدودکردن حساب قبلی آزمایش کنید.
- اگر سرور عملیاتی است، تغییرات را در زمان مناسب انجام دهید.
در مثالهای این مقاله از نام فرضی nojenadmin استفاده میشود. آن را با نام کاربری موردنظر خود جایگزین کنید.
[لینک داخلی پیشنهادی: انکرتکست «SSH چیست و چگونه به سرور لینوکس متصل شویم» ← مقاله آموزش SSH با PuTTY و Terminal]
آموزش ساخت User جدید و دادن دسترسی Sudo در Ubuntu
مرحله اول: بررسی کاربر فعلی
برای مشاهده نام کاربری فعلی، دستور زیر را اجرا کنید:
whoami
برای بررسی گروههای حساب فعلی نیز از این دستور استفاده کنید:
groups
اگر کاربر فعلی عضو گروه sudo باشد، معمولاً نام این گروه در خروجی دیده میشود. برای اطمینان میتوانید دستور ساده زیر را آزمایش کنید:
sudo whoami
اگر خروجی root باشد، فرمان با سطح دسترسی مدیریتی اجرا شده است.
مرحله دوم: ساخت کاربر جدید با adduser
برای ساخت حساب جدید، فرمان زیر را اجرا کنید:
sudo adduser nojenadmin
سیستم از شما میخواهد یک رمز برای حساب تعیین کنید. سپس ممکن است اطلاعات اختیاری مانند نام کامل را درخواست کند. اگر به این اطلاعات نیاز ندارید، میتوانید آنها را خالی بگذارید و در پایان صحت اطلاعات را تأیید کنید.
فرمان adduser یک رابط سادهتر برای ابزارهای سطح پایین مدیریت کاربران است. این ابزار بهطور معمول پوشه Home و گروه متناظر کاربر را نیز بر اساس سیاستهای سیستم ایجاد میکند. add or manipulate users or groups
پوشه خانگی حساب ایجادشده معمولاً در این مسیر قرار میگیرد:
/home/nojenadmin
برای اطمینان از ساختهشدن حساب میتوانید اجرا کنید:
id nojenadmin
این دستور شناسه کاربر، گروه اصلی و گروههای تکمیلی او را نمایش میدهد.
مرحله سوم: افزودن کاربر به گروه sudo
برای دادن دسترسی مدیریتی به حساب جدید، آن را به گروه sudo اضافه کنید:
sudo usermod -aG sudo nojenadmin
در این دستور:
- گزینه
-Gگروههای تکمیلی را مشخص میکند. - گزینه
-aکاربر را به گروه جدید اضافه میکند، بدون اینکه عضویت قبلی او در سایر گروهها حذف شود. sudoنام گروه مدیریتی است.nojenadminنام کاربر جدید است.
استفاده از -G بدون -a ممکن است فهرست گروههای تکمیلی کاربر را جایگزین کند. راهنمای رسمی usermod نیز توضیح میدهد که -a باید همراه -G برای افزودن گروه جدید و حفظ عضویتهای موجود استفاده شود. modify a user account
روش جایگزین در Ubuntu و Debian این است:
sudo adduser nojenadmin sudo
اجرای یکی از این دو روش کافی است. نیازی نیست هر دو دستور را پشت سر هم اجرا کنید.
مرحله چهارم: بررسی عضویت کاربر در گروه sudo
برای مشاهده گروههای کاربر اجرا کنید:
groups nojenadmin
یا از دستور زیر استفاده کنید:
id nojenadmin
نام sudo باید در فهرست گروههای حساب دیده شود. توجه داشته باشید که نشستهای قبلی کاربر ممکن است عضویت جدید را فوراً دریافت نکنند؛ بهتر است از حساب خارج شده و نشست تازهای باز کنید.
آزمایش دسترسی Sudo کاربر جدید
پیش از بستن نشست فعلی، یک پنجره ترمینال جدید باز کنید و با حساب ساختهشده وارد شوید:
ssh nojenadmin@SERVER_IP
مقدار SERVER_IP را با IP یا نام میزبان سرور جایگزین کنید. اگر SSH روی پورت دیگری اجرا میشود، شماره پورت را نیز مشخص کنید:
ssh -p SSH_PORT nojenadmin@SERVER_IP
پس از ورود، این دستور را اجرا کنید:
sudo whoami
رمز کاربر جدید را وارد کنید. اگر خروجی زیر نمایش داده شود، دسترسی Sudo برقرار است:
root
برای مشاهده مجوزهای Sudo حساب نیز میتوانید اجرا کنید:
sudo -l
تا زمانی که ورود و اجرای Sudo با حساب جدید تأیید نشده است، نشست مدیریتی قبلی را نبندید و ورود Root را غیرفعال نکنید.
انتقال کلید SSH به کاربر جدید
ورود با کلید SSH معمولاً از استفاده مستقیم رمز عبور امنتر و قابلکنترلتر است. بهترین روش آن است که هر مدیر کلید اختصاصی خود را داشته باشد؛ نه اینکه یک کلید خصوصی میان چند نفر به اشتراک گذاشته شود.
روش پیشنهادی با ssh-copy-id
از رایانه خود، کلید عمومی را به حساب جدید منتقل کنید:
ssh-copy-id nojenadmin@SERVER_IP
اگر SSH روی پورت سفارشی قرار دارد:
ssh-copy-id -p SSH_PORT nojenadmin@SERVER_IP
سپس ورود را در یک نشست جدید آزمایش کنید:
ssh nojenadmin@SERVER_IP
روش دستی انتقال کلید
در صورت نیاز، پوشه مربوط به SSH را برای کاربر ایجاد کنید:
sudo install -d -m 700 -o nojenadmin -g nojenadmin /home/nojenadmin/.ssh
سپس کلید عمومی مورد اعتماد را در فایل زیر قرار دهید:
/home/nojenadmin/.ssh/authorized_keys
مالکیت و مجوز فایل را تنظیم کنید:
sudo chown nojenadmin:nojenadmin /home/nojenadmin/.ssh/authorized_keys
sudo chmod 600 /home/nojenadmin/.ssh/authorized_keys
کلید خصوصی را روی سرور کپی نکنید. فقط محتوای کلید عمومی باید در authorized_keys قرار بگیرد.
[لینک داخلی پیشنهادی: انکرتکست «افزایش امنیت ورود سرور با SSH Key» ← مقاله تغییر رمز لینوکس و ورود با کلید SSH]
آیا باید دسترسی Root را غیرفعال کنیم؟
کاهش استفاده مستقیم از Root میتواند بخشی از ایمنسازی SSH باشد، اما این تغییر باید بعد از آزمایش کامل کاربر جدید انجام شود. اگر تنظیمات اشتباه باشد، ممکن است تمام راههای ورود مدیریتی به سرور را از دست بدهید.
قبل از هر محدودیت، این موارد را تأیید کنید:
- کاربر جدید میتواند از طریق SSH وارد شود.
- اجرای
sudo whoamiبا موفقیت انجام میشود. - ورود با کلید SSH آزمایش شده است.
- پورت SSH در فایروال مجاز است.
- کنسول اضطراری سرور در دسترس است.
- حداقل یک نشست مدیریتی فعال باقی مانده است.
غیرفعالکردن Root یا ورود با رمز، موضوعی جداگانه است و باید پس از بررسی نسخه OpenSSH، تنظیمات سرویس و روش دسترسی جایگزین انجام شود.
[لینک داخلی پیشنهادی: انکرتکست «چکلیست امنیت سرور لینوکس» ← مقاله اقدامات ضروری بعد از راهاندازی سرور]
دادن دسترسی محدود بهجای Sudo کامل
همه کاربران به دسترسی کامل مدیریتی نیاز ندارند. برای مثال، ممکن است یک توسعهدهنده فقط به راهاندازی مجدد یک سرویس مشخص یا مشاهده گزارشهای همان برنامه نیاز داشته باشد.
در چنین شرایطی، افزودن مستقیم کاربر به گروه sudo بیش از نیاز او دسترسی ایجاد میکند. میتوان برای حساب، قانون محدود در پوشه زیر تعریف کرد:
/etc/sudoers.d/
فایل Sudoers را با ویرایشگر عادی تغییر ندهید. برای ساخت یا ویرایش امن یک فایل اختصاصی از visudo استفاده کنید:
sudo visudo -f /etc/sudoers.d/nojenadmin
visudo فایل را قفل کرده و پیش از ذخیره، خطاهای نگارشی مهم را بررسی میکند. این قابلیت احتمال خرابشدن تنظیمات Sudo بر اثر یک اشتباه نحوی را کاهش میدهد. edit the sudoers file
قانون محدود باید دقیقاً بر اساس وظیفه کاربر و مسیر واقعی فرمان روی همان سرور نوشته شود. از دادن دسترسی به ویرایشگرها، Shellها یا فرمانهایی که امکان اجرای دستورهای دیگر را فراهم میکنند، بدون ارزیابی امنیتی خودداری کنید.
پس از تغییر، صحت تمام تنظیمات Sudo را بررسی کنید:
sudo visudo -c
سپس با حساب هدف اجرا کنید:
sudo -l
این فرمان مشخص میکند کاربر اجازه اجرای چه دستورهایی را دارد.
خطر NOPASSWD چیست؟
در تنظیمات Sudo میتوان اجرای برخی فرمانها را بدون درخواست رمز مجاز کرد. این قابلیت برای اتوماسیون کاربرد دارد، اما استفاده گسترده از NOPASSWD ریسک دسترسی غیرمجاز را افزایش میدهد.
برای حساب انسانی، حذف درخواست رمز فقط بهدلیل راحتی توصیه نمیشود. اگر یک حساب اتوماسیون به چنین قابلیتی نیاز دارد، مجوز را به فرمانهای کاملاً مشخص محدود کنید و از اعطای NOPASSWD: ALL بدون ضرورت فنی خودداری کنید.
حذف دسترسی Sudo از کاربر
برای حذف حساب از گروه sudo میتوانید اجرا کنید:
sudo gpasswd -d nojenadmin sudo
سپس نتیجه را بررسی کنید:
groups nojenadmin
نشستهای فعال کاربر ممکن است تا زمان خروج همچنان اطلاعات قبلی را نگه دارند. بعد از تغییر سطح دسترسی، نشستهای فعال و فرایندهای مرتبط را نیز بررسی کنید.
برای تأیید نهایی، با همان کاربر وارد شوید و اجرا کنید:
sudo -l
اگر برای کاربر فایلی در /etc/sudoers.d/ ساختهاید، عضویتنداشتن در گروه sudo الزاماً تمام مجوزهای اختصاصی او را حذف نمیکند. فایلهای اختصاصی Sudoers را نیز بررسی کنید.
قفلکردن یا حذف حساب کاربری
اگر میخواهید دسترسی یک کاربر را موقتاً متوقف کنید، میتوانید رمز حساب را قفل کنید:
sudo passwd -l nojenadmin
قفلکردن رمز الزاماً تمام روشهای ورود، مانند کلید SSH یا نشستهای فعال، را متوقف نمیکند. فایل authorized_keys، فرایندهای فعال، Cron Jobها و مجوزهای Sudo نیز باید بررسی شوند.
برای بازکردن قفل رمز:
sudo passwd -u nojenadmin
برای حذف کامل حساب، ابتدا از دادههای موردنیاز نسخه پشتیبان تهیه کنید. سپس میتوان حساب را حذف کرد:
sudo deluser nojenadmin
اگر قصد حذف پوشه Home را دارید، ابتدا محتوای آن را بررسی کنید. حذف حساب همراه با دادههای شخصی عملی برگشتپذیر نیست مگر نسخه پشتیبان معتبری وجود داشته باشد.
خطاهای رایج هنگام ساخت کاربر Sudo
خطای user is not in the sudoers file
این خطا یعنی کاربر مجوز اجرای Sudo ندارد. با حساب مدیریتی دیگر وارد شوید و عضویت او را بررسی کنید:
id nojenadmin
اگر گروه sudo دیده نمیشود، کاربر را به آن اضافه کرده و نشست تازهای ایجاد کنید:
sudo usermod -aG sudo nojenadmin
کاربر عضو گروه sudo است اما دسترسی ندارد
ممکن است نشست کاربر قبل از تغییر گروه ایجاد شده باشد. از حساب خارج شوید و دوباره وارد شوید. همچنین نتیجه دستورهای زیر را بررسی کنید:
groups
sudo -l
خطای Permission denied هنگام ورود با کلید SSH
مالکیت و مجوزهای پوشه و فایل کلید را بررسی کنید:
sudo chown -R nojenadmin:nojenadmin /home/nojenadmin/.ssh
sudo chmod 700 /home/nojenadmin/.ssh
sudo chmod 600 /home/nojenadmin/.ssh/authorized_keys
همچنین مطمئن شوید کلید عمومی صحیح در فایل قرار گرفته و کلید خصوصی متناظر روی رایانه کاربر موجود است.
اجرای usermod باعث حذف گروههای قبلی شده است
این مشکل معمولاً زمانی رخ میدهد که از -G بدون -a استفاده شود. فهرست گروههای موردنیاز کاربر را بررسی و عضویتهای لازم را دوباره اضافه کنید.
فرم صحیح برای افزودن کاربر به گروه جدید و حفظ گروههای قبلی چنین است:
sudo usermod -aG sudo nojenadmin
فایل sudoers دچار خطا شده است
از ویرایش مستقیم /etc/sudoers خودداری کنید. اگر هنوز یک نشست مدیریتی فعال دارید، فایل را با visudo اصلاح و سپس اعتبار تنظیمات را بررسی کنید:
sudo visudo -c
سناریوی عملی مدیریت تیم فنی
فرض کنید یک مدیر زیرساخت و دو توسعهدهنده روی سرور فعالیت میکنند. دادن یک حساب مشترک به هر سه نفر، امکان تفکیک دسترسی و پیگیری فعالیتها را کاهش میدهد.
ساختار مناسبتر میتواند چنین باشد:
| نقش | نوع حساب | سطح دسترسی پیشنهادی |
|---|---|---|
| مدیر زیرساخت | حساب شخصی | Sudo کامل در صورت نیاز واقعی |
| توسعهدهنده | حساب شخصی | دسترسی به پروژه و فرمانهای محدود |
| سامانه استقرار | حساب سرویس | کلید مستقل و دسترسی حداقلی |
| نیروی موقت | حساب زماندار | دسترسی محدود و قابل لغو |
هر فرد باید کلید SSH اختصاصی داشته باشد. با پایان همکاری نیز فقط همان حساب یا کلید حذف میشود و نیازی به تغییر اطلاعات ورود تمام اعضای تیم نیست.
چکلیست امنیت User جدید در Ubuntu
- نام کاربری جدید و غیرمشترک انتخاب شده است.
- برای حساب رمز طولانی و منحصربهفرد تعیین شده است.
- کلید SSH اختصاصی کاربر نصب و آزمایش شده است.
- کلید خصوصی روی سرور ذخیره نشده است.
- عضویت در گروه
sudoفقط در صورت نیاز اعطا شده است. - دسترسی Sudo با
sudo -lبررسی شده است. - ورود در یک نشست جدید آزمایش شده است.
- نشست مدیریتی قبلی تا پایان آزمایش باز مانده است.
- دسترسی کنسول اضطراری سرور موجود است.
- برای کاربران محدود از قوانین دقیق Sudoers استفاده شده است.
- حسابهای بلااستفاده قفل یا حذف شدهاند.
- فعالیتها و گزارشهای ورود بهصورت دورهای بازبینی میشوند.
[لینک داخلی پیشنهادی: انکرتکست «نصب و تنظیم Fail2ban برای محافظت از SSH» ← مقاله آموزش Fail2ban]
جمع بندی
در آموزش ساخت User جدید و دادن دسترسی Sudo در Ubuntu ابتدا با adduser یک حساب مستقل ایجاد کردیم و سپس با usermod -aG sudo آن را به گروه مدیریتی افزودیم. در ادامه نیز عضویت گروه، ورود از طریق SSH و اجرای sudo whoami را آزمایش کردیم.
مهمترین اصل این است که پیش از بستن نشست فعلی یا محدودکردن ورود Root، عملکرد حساب جدید را در یک اتصال جداگانه بررسی کنید. وجود کنسول اضطراری VPS نیز میتواند در صورت بروز اشتباه از قطع کامل دسترسی جلوگیری کند.
همه کاربران به Sudo کامل نیاز ندارند. برای توسعهدهندگان، حسابهای سرویس و نیروهای موقت بهتر است مجوزها بر اساس وظیفه تعریف شوند و فایلهای Sudoers فقط با visudo ویرایش شوند.
اگر برای ایجاد کاربران، تنظیم SSH، محدودکردن دسترسیها یا ایمنسازی VPS به همراهی فنی نیاز دارید، میتوانید با شرکت تجارت الکترونیک نوژن تماس بگیرید و خدمات سرور مجازی، پشتیبانی و زیرساخت را متناسب با نیاز پروژه بررسی کنید.
سؤالات متداول
چگونه در Ubuntu یک کاربر جدید بسازیم؟
با یک حساب مدیریتی دستور sudo adduser USERNAME را اجرا کنید. این فرایند معمولاً رمز، پوشه Home و گروه متناظر کاربر را ایجاد میکند.
چگونه به کاربر جدید دسترسی Sudo بدهیم؟
از دستور sudo usermod -aG sudo USERNAME استفاده کنید. سپس کاربر باید از حساب خارج شود و در یک نشست جدید وارد شود.
چگونه مطمئن شویم دسترسی Sudo فعال شده است؟
با کاربر جدید وارد شوید و دستور sudo whoami را اجرا کنید. نمایش root یعنی فرمان با دسترسی مدیریتی اجرا شده است.
تفاوت useradd و adduser چیست؟
useradd ابزار سطح پایینتری برای ساخت حساب است. adduser در Ubuntu و Debian رابط سادهتری ارائه میکند و بهطور معمول مراحل ایجاد Home و تنظیم اطلاعات اولیه را نیز مدیریت میکند.
چرا باید در usermod از گزینه a استفاده کنیم؟
گزینه -a باعث میشود گروه جدید به فهرست گروههای تکمیلی اضافه شود. استفاده از -G بدون -a ممکن است عضویتهای قبلی کاربر را جایگزین کند.
چگونه دسترسی Sudo یک کاربر را حذف کنیم؟
میتوانید دستور sudo gpasswd -d USERNAME sudo را اجرا کنید. فایلهای اختصاصی موجود در /etc/sudoers.d/ نیز باید بررسی شوند.
آیا باید ورود Root را بعد از ساخت کاربر غیرفعال کنیم؟
این تصمیم به ساختار سرور بستگی دارد. ابتدا ورود کاربر جدید، کلید SSH، Sudo، فایروال و کنسول اضطراری را آزمایش کنید؛ سپس درباره محدودکردن Root تصمیم بگیرید.
