ساخت کاربر جدید با دسترسی sudo در اوبونتو (بدون ویرایش sudoers)

ساخت کاربر جدید با دسترسی sudo در اوبونتو (بدون ویرایش sudoers)

در این مقاله یاد میگیرید چگونه در اوبونتو یک کاربر جدید با دسترسی sudo بسازید، بدون نیاز به ویرایش مستقیم فایل sudoers. گامبهگام نحوهی ایجاد کاربر، افزودن او به گروه sudo، تست دسترسیها و همچنین ساخت حسابهای سیستمی بدون شل برای سرویسها توضیح داده شده است. در پایان، بهترین روشهای امنیتی برای مدیریت مجوز کاربران و محدودسازی دستورات sudo معرفی میشود تا سیستم شما امنتر و حرفهایتر مدیریت شود.

تاریخ انتشار:۱۸ آبان ۱۴۰۴
زمان مطالعه:5 دقیقه

فهرست مطالب

مقدمه

در هنگام مدیریت یک سرور، گاهی لازم است به کاربران اجازه دهید دستورات را با سطح دسترسی مدیر (root) اجرا کنند. دستور sudo ابزاری است که به مدیر سیستم امکان میدهد برخی کاربران معمولی را مجاز کند تا دستورات خاصی را با سطح دسترسی مدیر اجرا کنند، بدون اینکه نیازی به ورود مستقیم به حساب root باشد.

در این آموزش، یاد میگیرید چگونه یک کاربر جدید با دسترسی sudo در اوبونتو ایجاد کنید، بدون آنکه نیازی به ویرایش فایل /etc/sudoers داشته باشید.

نکته: اگر قصد دارید به کاربر فعلی خود دسترسی sudo بدهید، از مرحله ۳ شروع کنید.


مراحل ایجاد کاربر جدید با دسترسی sudo

  1. ورود به سرور
  2. افزودن کاربر جدید به سیستم
  3. افزودن کاربر به گروه sudo
  4. آزمایش دسترسی sudo

مرحله ۱ورود به سرور

با استفاده از SSH به عنوان کاربر root وارد سرور شوید:

code
ssh root@your_server_ip_address

مرحله ۲افزودن کاربر جدید به سیستم

برای افزودن یک کاربر جدید از دستور زیر استفاده کنید:

code
adduser sammy

به جای sammy، نام کاربر مورد نظر خود را بنویسید. سیستم از شما میخواهد رمز عبور کاربر جدید را تعیین و تأیید کنید:

code
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

سپس میتوانید اطلاعات تکمیلی وارد کنید یا برای عبور از هر گزینه، کلید Enter را بزنید:

code
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

مرحله ۳افزودن کاربر به گروه sudo

برای اعطای دسترسی مدیریتی، کاربر را به گروه sudo اضافه کنید:

code
usermod -aG sudo sammy

تمام اعضای گروه sudo در اوبونتو به صورت پیشفرض اجازه اجرای دستورات مدیریتی را دارند.


مرحله ۴آزمایش دسترسی sudo

برای بررسی فعال بودن دسترسی sudo، ابتدا با کاربر جدید وارد شوید:

code
su - sammy

سپس یک دستور مدیریتی را با sudo اجرا کنید، برای مثال:

code
sudo ls -la /root

در اولین اجرای sudo، سیستم رمز عبور کاربر جدید را درخواست میکند:

code
[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

code
sudo adduser --system --no-create-home --shell /usr/sbin/nologin serviceuser

توضیح گزینهها:

  • --system: کاربر سیستمی ایجاد میکند (با UID کمتر از ۱۰۰۰)
  • --no-create-home: از ساخت دایرکتوری خانگی جلوگیری میکند
  • --shell /usr/sbin/nologin: مانع ورود کاربر به شل میشود

نمونه:

code
sudo adduser --system --no-create-home --shell /usr/sbin/nologin ftpuser

استفاده از useradd

code
sudo useradd -r -s /usr/sbin/nologin db_reader

توضیح گزینهها:

  • -r: ایجاد حساب سیستمی
  • -s: تعیین شل غیرفعال
  • عدم استفاده از -m باعث میشود دایرکتوری خانگی ساخته نشود

بررسی دسترسی sudo با دستور sudo -l

برای مشاهده دستورات مجاز یک کاربر در sudo، میتوانید بنویسید:

code
sudo -l

یا برای بررسی دسترسی کاربر دیگر:

code
sudo -U username -l

این روش برای مدیران مفید است تا بتوانند مجوزهای هر کاربر را بدون مشاهده مستقیم فایل sudoers بررسی کنند.


بهترین شیوهها برای مدیریت دسترسیها و محدودسازی sudo

رعایت اصول امنیتی در سطح دسترسی کاربران بسیار مهم است. اصل اساسی این است که هر کاربر فقط به آنچه نیاز دارد دسترسی داشته باشد (اصل کمترین دسترسی).

نکات کلیدی:

  • اعطای حداقل دسترسی ممکن: فقط دستورات یا فایلهایی را مجاز کنید که واقعاً لازم است.
  • مدیریت گروهی کاربران: به جای دادن مجوزهای جداگانه، گروه بسازید و کاربران مرتبط را در آن قرار دهید.
  • استفاده از مسیر کامل دستورات در sudoers: مثلاً /usr/sbin/service بهجای service.
  • پرهیز از استفاده از NOPASSWD مگر در موارد خاص و امن.
  • عدم استفاده از wildcardها در فایل sudoers برای جلوگیری از اشتباهات امنیتی.

پرسشهای متداول (FAQ)

۱. تفاوت adduser و useradd چیست؟

adduser یک اسکریپت سطح بالا و کاربرپسند است که مراحل ایجاد کاربر، ساخت دایرکتوری، تنظیم شل و کپی فایلهای اولیه را خودکار انجام میدهد.

useradd ابزار سطح پایینتری است که کنترل دقیقتری ارائه میدهد اما به صورت پیشفرض دایرکتوری خانگی نمیسازد مگر اینکه گزینه -m استفاده شود.


۲. چگونه بررسی کنم که کاربر دسترسی sudo دارد؟

با دستور زیر:

code
getent group sudo

اگر نام کاربر در خروجی بود، او به گروه sudo تعلق دارد.

یا از دستور آزمایشی:

code
sudo ls /root

اگر اجرا شد، کاربر sudo دارد.


۳. آیا میتوان حساب root را غیرفعال کرد؟

بله، این کار از نظر امنیتی توصیه میشود:

code
sudo passwd -l root

برای فعالسازی مجدد:

code
sudo passwd -u root

۴. چطور میتوان دسترسی sudo را محدود کرد؟

فایل /etc/sudoers را با visudo باز کنید:

code
sudo visudo

مثلاً برای اینکه کاربر webadmin فقط بتواند Apache را ریاستارت کند:

code
webadmin ALL=(ALL:ALL) /usr/sbin/service apache2 restart

⚠️ هرگز فایل sudoers را بدون visudo ویرایش نکنید؛ اشتباه در این فایل ممکن است کل دسترسی مدیریتی سیستم را از بین ببرد.


نتیجهگیری

در این راهنما یاد گرفتیم چگونه یک کاربر جدید با دسترسی sudo در اوبونتو ایجاد کنیم، تفاوت بین sudo و su را درک کنیم، و کاربران سرویس را بدون شل تعاملی بسازیم. همچنین با بهترین روشهای امنیتی برای مدیریت دسترسیها و محدود کردن دستورات sudo آشنا شدیم.

برای راهنماییهای بیشتر در مورد راهاندازی سرور اوبونتو، میتوانید به مقالات زیر مراجعه کنید:

دسته‌بندی‌ها:

لینوکس

بیشتر مطالعه کنید

راهنمای کامل فرایند OCEAN در پرامپتنویسی برای دریافت بهترین خروجی از مدلهای زبانی

این مطلب یک راهنمای جامع برای استفاده از فرایند OCEAN در پرامپتنویسی است؛ روشی پنجمرحلهای شامل هدفگذاری، ارائه زمینه، استفاده از مثال، ارزیابی خروجی و مذاکره برای بهبود نتیجه. این فرآیند کمک میکند از مدلهای زبانی مانند ChatGPT بهترین خروجی را دریافت کنید. در پایان نیز دو ابزار ایرانیپلتفرم چت «اکوان» و گیتوی API خاتشبهعنوان گزینههای مناسب برای اجرای این روش معرفی شدهاند.

۲۳ آبان ۱۴۰۴
3 دقیقه

Grok 4 Fast با کانتکست ۲ میلیونی؛ بررسی واقعی و روش استفاده از طریق خاتش

مدل Grok 4 Fast از xAI با پنجرهی کانتکست ۲ میلیون توکنی معرفی شده است. در این مقاله بررسی میکنیم آیا این پیشرفت واقعاً کاربردی است یا صرفاً عددی تبلیغاتی، و در ادامه روش استفاده از این مدل از طریق API خاتش با پرداخت ریالی و پلتفرم Akvan.chat را توضیح میدهیم.

۲۰ آبان ۱۴۰۴
2 دقیقه

تفاوت زیرساخت هایبرید و سرور ابریکدام گزینه برای کسبوکار شما بهتر است؟

در این مقاله از بلاگ خاتش، تفاوت میان زیرساخت ابری (Cloud Infrastructure) و زیرساخت هایبرید (Hybrid Infrastructure) را بهصورت شفاف و کاربردی بررسی میکنیم. میخوانید که هر مدل دقیقاً چیست، در چه شرایطی مناسبتر است، و چرا بسیاری از سازمانها ترکیبی از هر دو را انتخاب میکنند.

۱۹ آبان ۱۴۰۴
4 دقیقه

اکوان؛ هوش مصنوعی گفتگو محور بدون مرز

اکوان پلتفرمی ایرانی برای گفتوگو با مدلهای مختلف هوش مصنوعی مانند GPT-5، Claude و Gemini است. بدون تحریم، با رابط فارسی، قیمت عالی و سرعت بالاگفتوگو با هوش مصنوعی، به زبان خودت.

۱۸ آبان ۱۴۰۴
2 دقیقه