دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
لینوکس
  • Folder icon closed Folder open iconآشنایی با لینوکس (Linux Fundamentals)
  • Folder icon closed Folder open iconتوزیع‌های مختلف لینوکس (Linux Distributions)
  • Folder icon closed Folder open iconFHS؛ آشنایی با ساختار فایل‌ و پوشه‌های لینوکسی
  • Folder icon closed Folder open iconمهم‌ترین دستورات پایه‌ای برای هر sysadmin
  • Folder icon closed Folder open iconمدیریت فایل و پوشه (file & directory management) در لینوکس
  • Folder icon closed Folder open iconآموزش ویرایش فایل‌های متنی در لینوکس با Nano و Vim
  • Folder icon closed Folder open iconآشنایی با users، groups و ساختار مدیریت کاربران در لینوکس
  • Folder icon closed Folder open iconآموزش Permission و Ownership در لینوکس
  • Folder icon closed Folder open iconآشنایی با Root و sudo
  • Folder icon closed Folder open iconآشنایی با Processها در لینوکس
  • Folder icon closed Folder open iconتغییر Hostname در لینوکس
  • Folder icon closed Folder open iconتنظیم Timezone در لینوکس
  • Folder icon closed Folder open iconتنظیم NTP در لینوکس
  • Folder icon closed Folder open iconبروزرسانی سیستم در لینوکس
  • Folder icon closed Folder open iconساخت کاربر جدید در لینوکس
  • Folder icon closed Folder open iconایجاد کاربران و گروه ها در لینوکس
  • Folder icon closed Folder open iconآموزش ACL در لینوکس؛ مدیریت سطح دسترسی پیشرفته برای کاربران و گروه‌ها
  • Folder icon closed Folder open iconآموزش umask در لینوکس؛ تعیین مجوز پیش‌فرض فایل‌ها و پوشه‌های جدید
  • Folder icon closed Folder open iconآموزش فایل sudoers؛ مدیریت دسترسی کاربران به دستورات مدیریتی در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chown در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chmod در لینوکس
  • Folder icon closed Folder open iconSticky Bit در لینوکس چیست؟ آموزش افزایش امنیت پوشه‌های اشتراکی
  • Folder icon closed Folder open iconآموزش SUID در لینوکس؛ اجرای برنامه‌ها با دسترسی مالک فایل
  • Folder icon closed Folder open iconآموزش SGID در لینوکس؛ مدیریت دسترسی گروه‌ها و اجرای برنامه‌ها
لینوکس

آشنایی با Root و sudo

sudo and root in linux

آشنایی با sudo، دسترسی مدیریتی و تفاوت Root با کاربران عادی

مقدمه

در هر سیستم لینوکسی، یک کاربر با دسترسی نامحدود به نام Root وجود دارد که می‌تواند هر فایلی را بخواند، هر تنظیماتی را تغییر دهد و هر سرویسی را متوقف یا اجرا کند. این سطح از قدرت اگر بی‌احتیاط استفاده شود، می‌تواند به راحتی یک سرور را از کار بیندازد یا آسیب‌پذیر کند.

در مقاله‌ی Users و Groups به‌طور مختصر با Root آشنا شدید؛ در این مقاله عمیق‌تر می‌بینیم که Root دقیقاً چیست، چرا کار مستقیم با آن توصیه نمی‌شود، و چطور با دو دستور su و sudo می‌توان به‌صورت امن‌تر به دسترسی مدیریتی رسید.


Root کیست؟

Root، کاربری با UID برابر با 0 است که در لینوکس هیچ محدودیت Permissionای ندارد — نه Ownership، نه سطح دسترسی فایل، هیچ‌کدام برای Root معنا ندارند. هر دستوری که Root اجرا کند، بدون بررسی Permission انجام می‌شود.

چرا کار مستقیم با Root توصیه نمی‌شود؟

  • بدون هیچ محافظتی: یک دستور اشتباه (مثلاً rm -rf در مسیر غلط) می‌تواند کل سیستم را نابود کند.
  • عدم ردیابی (Accountability): وقتی همه با اکانت مشترک root کار می‌کنند، مشخص نیست چه کسی چه تغییری داده است.
  • ریسک امنیتی بالاتر: اگر اکانت root نفوذ شود، مهاجم دسترسی کامل به کل سرور خواهد داشت.

به همین دلیل، به‌جای لاگین مستقیم با root، از دو ابزار su و sudo استفاده می‌شود.

جالب است بدانید که sudo محصول یک نیاز مشابه در دهه ۸۰ میلادی بود. این ابزار برای اولین بار در سال ۱۹۸۰ در دانشگاه SUNY Buffalo نوشته شد، دقیقاً با همین هدف: اینکه چند کاربر بتوانند بدون دانستن رمز عبور root، فقط دستورات مشخصی را با دسترسی مدیریتی اجرا کنند. این ایده‌ی ساده — دسترسی محدود به‌جای دسترسی نامحدود — هنوز هم پایه‌ی اصلی امنیت سرورهای امروزی است. در این لینک می‌توانید بیشتر در رابطه با تاریخچه sudo مطالعه کنید.


su چیست؟

دستور su (Substitute User) برای سوئیچ کردن به کاربر دیگر — معمولاً root — استفاده می‌شود.

سوئیچ به root، اما با محیط (environment) کاربر فعلی.

su

سوئیچ کامل به root همراه با محیط و متغیرهای root (روش صحیح و پیشنهادی).

su -

سوئیچ به یک کاربر دیگر غیر از root (مثلاً برای تست کردن دسترسی یک کاربر خاص).

su - username

اجرای یک دستور توسط یک کاربر دیگر بدون login به فضای آن کاربر.

su - username --command "command"

تغییر کاربر با مشخص کردن یک shell خاص.

su --shell /path/to/shell username

نکته: برای استفاده از su، باید رمز عبور همان کاربر مقصد را بدانید.

به عنوان یک مثال از کاربرد این دستور و مفاهیم کاربر و گروه گفته بودیم هر کاربری فایلی را ایجاد کند owner و گروه مربوط به فایل به تبعیت از کاربر تعیین می‌شود. این مفهوم را با ترکیبی از دسترسی root و دستور su بررسی می‌کنیم.


sudo چیست؟

دستور sudo (SuperUser Do) به کاربران مجاز (در گروه‌های sudo یا wheel بسته به توزیع لینوکس) اجازه می‌دهد فقط یک دستور خاص را با دسترسی root اجرا کنند — بدون آنکه رمز عبور root را بدانند یا کاملاً وارد آن اکانت شوند.

اجرای یک دستور با دسترسی root (با وارد کردن رمز عبور خود کاربر، نه رمز root).

sudo command

ورود به یک Shell کامل با دسترسی root (شبیه su – اما از طریق سیستم sudo).

sudo -i

اجرای یک دستور به‌نمایندگی از کاربر دیگری (نه لزوماً root).

sudo -u username command

اجرای دستور قبلی ولی با استفاده از sudo (فقط در shellهای bash و zsh).

sudo !!

نمایش لیست دستوراتی که کاربر فعلی اجازه‌ی اجرای آن‌ها را با sudo دارد.

sudo -l

به عنوان نمونه خروجی این دستور برای کاربری که هیچ محدودیتی ندارد می‌توانید مشابه خروجی زیر باشد.

❯ sudo -l
[sudo] password for <user>: 
Matching Defaults entries for <user> on <machine>:
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/bin

Runas and Command-specific defaults for <user>:
    Defaults!/usr/bin/visudo env_keep+="SUDO_EDITOR EDITOR VISUAL"

User <user> may run the following commands on <machine>:
    (ALL : ALL) ALL

نکته مهم: اینکه کدام کاربران اجازه‌ی استفاده از sudo را دارند و دقیقاً چه دستوراتی می‌توانند اجرا کنند، در فایل /etc/sudoers تعریف می‌شود — موضوعی که در مقاله‌ی اختصاصی sudoers و دستور visudo به‌طور کامل بررسی خواهد شد.


تفاوت su و sudo

ویژگیsusudo
نیاز به رمزرمز عبور کاربر مقصد (root)رمز عبور خود کاربر
دامنه دسترسیکامل و نامحدود، تا زمان خروجمعمولاً محدود به دستورات تعریف‌شده
ثبت لاگ (Logging)ضعیف‌ترهر اجرا در /var/log/auth.log ثبت می‌شود
مدل امنیتیهمه یا هیچPrinciple of Least Privilege (کمترین دسترسی لازم)
توصیه فعلیکمتر توصیه می‌شودروش استاندارد و امن‌تر در محیط سرور

به همین دلیل، در اکثر توزیع‌های مدرن (از جمله Ubuntu) به‌طور پیش‌فرض حتی رمز عبور root غیرفعال است و همه چیز از طریق sudo انجام می‌شود.


مثال‌های عملی

سناریو ۱: اجرای یک دستور مدیریتی بدون سوئیچ کامل به root

sudo systemctl restart nginx

سناریو ۲: بررسی اینکه کاربر فعلی چه سطح دسترسی sudo دارد

sudo -l

سناریو ۳: ورود موقت به یک Shell با دسترسی کامل root برای انجام چند کار پشت‌سرهم

sudo -i
# multiple commands
exit

سناریو ۴: بررسی اینکه چه کسی و چه زمانی از sudo استفاده کرده (عیب‌یابی امنیتی)

sudo grep sudo /var/log/auth.log

محل قرار گیری فایل auth.log به توزیع بستگی دارد و ممکن است در /var/log/security/ قرار داشته باشد.


اشتباهات رایج و عیب‌یابی

۱. لاگین دائمی و کار روزمره با root
حتی اگر دسترسی root دارید، بهتر است با یک کاربر عادی کار کنید و فقط هنگام نیاز از sudo استفاده کنید. کار مداوم با root ریسک اشتباهات جبران‌ناپذیر را بالا می‌برد.

۲. خطای “user is not in the sudoers file”
این خطا یعنی کاربر فعلی هنوز در فایل /etc/sudoers یا گروه wheel/sudo تعریف نشده است. جزئیات رفع این خطا و نحوه‌ی افزودن صحیح کاربران به sudoers در مقاله‌ی اختصاصی sudoers و visudo پوشش داده شده است.

۳. استفاده از su به‌جای su –
اجرای su بدون خط تیره، محیط (environment) کاربر فعلی را حفظ می‌کند که می‌تواند باعث رفتار غیرمنتظره برخی دستورات شود. همیشه از su - استفاده کنید مگر دلیل خاصی برای غیر آن داشته باشید.

۴. فراموش کردن اینکه sudo هم ریسک دارد
دسترسی sudo نامحدود (ALL=(ALL) ALL) عملاً معادل دسترسی کامل root است. تنظیم دقیق و محدود دستورات مجاز در sudoers، بخش مهمی از امنیت سرور است.


مطالعه بیشتر

برای دیدن دقیق اینکه چه کسی اجازه‌ی استفاده از sudo دارد و چطور آن را با visudo تنظیم کنیم، مقاله‌ی آموزش فایل sudoers را ببینید.

اگر با خطاهای Permission در فایل‌ها سروکار دارید نه در اجرای دستورات مدیریتی، به مقاله‌ی Ownership و Permission در لینوکس مراجعه کنید.

برای مستندات رسمی و کامل:

  • sudo(8) — man7.org
  • su(1) — man7.org
  • صفحه رسمی sudo

جمع‌بندی

در این مقاله با مفهوم Root، دلایل پرهیز از کار مستقیم با آن، و دو ابزار اصلی برای رسیدن به دسترسی مدیریتی — su و sudo — آشنا شدید. برای اکثر کارهای روزمره در محیط سرور، sudo انتخاب امن‌تر و استانداردتر است.

در مقالات بعدی، به سراغ فایل sudoers و دستور visudo می‌رویم تا ببینیم چطور دقیقاً کنترل کنیم چه کسی به چه دستوراتی دسترسی دارد.


چیت شیت Root و sudo

دستورکاربرد
su -سوئیچ کامل به root
su - usernameسوئیچ به یک کاربر دیگر
sudo commandاجرای یک دستور با دسترسی root
sudo -iورود به Shell کامل root
sudo -u username commandاجرای دستور به‌نمایندگی کاربر دیگر
sudo -lنمایش دستورات مجاز کاربر فعلی

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

مطالب اخیراً بازدیدشده

  • تفاوت DevOps با برنامه‌نویسی و مدیریت سیستم
  • آموزش نصب Chkrootkit در لینوکس
  • آموزش کامل dig
  • آموزش کامل nmap
  • آموزش تغییر Hostname سرور در لینوکس
  • آموزش نصب و راه‌اندازی SSH Key Authentication در لینوکس
  • آموزش نصب، پیکربندی و استفاده از Auditd در لینوکس
  • بعد از خرید سرور مجازی لینوکس(VPS)، اولین کارهایی که باید انجام دهید
  • آموزش کامل UFW در لینوکس؛ راه‌اندازی، مدیریت و ایمن‌سازی فایروال سرور
  • آموزش محدود کردن کاربران مجاز SSH در لینوکس
  • آموزش تنظیم MaxAuthTries در SSH؛ محدود کردن تعداد تلاش‌های ورود ناموفق
  • آموزش نصب Nextcloud با Docker Compose
  • عیب‌یابی تفاوت نتیجه DNS بین سرور و کامپیوتر شخصی
  • مشاهده بیشتر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

آشنایی با Root و sudo

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

آگوست 2026
شیدسچپج
1234567
891011121314
15161718192021
22232425262728
293031 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام