</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

sudo در Gentoo — اجرای دستورات مدیریتی با امتیاز root

آموزش کامل sudo در Gentoo: نصب، پیکربندی با visudo، گروه wheel، NOPASSWD، sudo timeout، doas جایگزین و خطاهای رایج.

مقدماتی۶ دقیقه مطالعهآخرین بروزرسانی: ۱ تیر ۱۴۰۵ویرایش در گیت‌هاب

دستور sudo (Superuser DO) به یک کاربر عادی اجازه می‌دهد دستوری را با امتیازات root (یا کاربر دیگر) اجرا کند، بدون آنکه رمز root را بداند یا به‌طور دائم به root تبدیل شود. این لایهٔ امنیتی مزایای زیادی دارد: حسابرسی بهتر، کنترل دسترسی دقیق، محدودسازی دستورات مجاز و کاهش خطر اشتباهات تصادفی. در Gentoo، sudo با بستهٔ app-admin/sudo فراهم است و گروه wheel به‌طور پیش‌فرض اجازهٔ استفاده از آن را دارد.

sudo چیست و چرا به‌جای su؟#

دستور قدیمی su به شما اجازه می‌دهد با واردکردن رمز root به‌طور کامل به root تبدیل شوید. این روش چند مشکل دارد: باید رمز root را به همه بدهید، کنترلی روی اینکه چه کسی چه دستوری اجرا می‌کند وجود ندارد و ردپای ضعیفی باقی می‌ماند.

ویژگیsusudo
رمز لازمرمز rootرمز خود کاربر
دامنهکل نشستیک دستور
حسابرسیضعیفقوی (/var/log/auth.log)
کنترل دسترسیهمه‌یا‌هیچدقیق (per-command, per-user)
انقضای رمزدائمیتایم‌اوت قابل تنظیم

نصب sudo#

# نصب بسته sudo
emerge --ask app-admin/sudo
# خروجی:
# [ebuild  N    ] app-admin/sudo-1.9.15_p5  USE="..."
# Would you like to merge these packages? [Yes/No]: y

پس از نصب، فایل پیکربندی در /etc/sudoers قرار دارد. هرگز این فایل را با ویرایشگر معمولی (nano, vim) مستقیماً ویرایش نکنید؛ یک خطای نحوی می‌تواند شما را برای همیشه از sudo محروم کند.

پیکربندی با visudo#

دستور visudo فایل /etc/sudoers را در یک ویرایشگر باز می‌کند و پس از خروج، نحوی فایل را بررسی می‌کند. اگر خطایی باشد، از شما می‌پرسد که آیا می‌خواهید آن را اصلاح کنید:

visudo

ویرایشگر پیش‌فرض vi است. برای تغییر آن به nano:

EDITOR=nano visudo
# یا تنظیم دائمی
echo 'EDITOR="/usr/bin/nano"' >> /etc/env.d/99editor
env-update && source /etc/profile

مهم‌ترین خط در فایل sudoers، خط مربوط به گروه wheel است. این خط به‌طور پیش‌فرض کامنت شده است:

# /etc/sudoers
 
# حذف کامنت از خط زیر تا اعضای wheel بتوانند sudo کنند
%wheel ALL=(ALL:ALL) ALL
 
# یا نسخه بدون رمز عبور (خطرناک‌تر):
# %wheel ALL=(ALL:ALL) NOPASSWD: ALL

معنای این خط:

بخشمعنی
%wheelاعضای گروه wheel
ALLروی همه میزبان‌ها
(ALL:ALL)می‌تواند به‌عنوان همه کاربران/گروه‌ها اجرا شود
ALLهمه دستورات مجاز است

چرا wheel؟

گروه wheel در BSD و Gentoo/RedHat سابقه‌ای طولانی دارد؛ نام آن از اصطلاح Big Wheel (شخص مهم) گرفته شده است. اعضای این گروه به‌طور سنتی دسترسی مدیریتی دارند. در Gentoo، کاربرانی که در wheel هستند می‌توانند هم su و هم sudo کنند (اگر sudoers اجازه دهد).

استفاده از sudo#

# اجرای یک دستور به‌عنوان root
sudo emerge --ask sys-apps/htop
 
# باز کردن shell به‌عنوان root (شبیه su -)
sudo -i
# اعلان به root# تبدیل می‌شود و HOME=/root می‌شود
 
# اجرای دستور به‌عنوان کاربر دیگر
sudo -u ali whoami
# خروجی:
# ali
 
# مشاهده دستورات مجاز برای کاربر فعلی
sudo -l
# خروجی:
# User ali may run the following commands on gentoo:
#     (ALL : ALL) ALL
 
# تمدید تایم‌اوت بدون اجرای دستور
sudo -v
 
# مشاهده دستورات قبلی sudo
sudo -k  # پاک کردن تایم‌اوت

تنظیمات پیشرفته sudoers#

مثال‌های کاربردی برای فایل /etc/sudoers یا /etc/sudoers.d/:

# دستور خاص بدون رمز عبور (برای اسکریپت‌ها)
ali ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
 
# مجاز بودن فقط چند دستور
bob ALL=(root) /usr/bin/emerge, /usr/bin/eix-sync
 
# محدودیت به میزبان خاص
%admin gentoo-server=(ALL) ALL
 
# تایم‌اوت کوتاه‌تر (دقیقه)
Defaults timestamp_timeout=5
 
# اجرای sudo از همان ترمینال فقط (نه piped)
Defaults !tty_tickets
 
# اضافه‌کردن لاگ سفارشی
Defaults logfile="/var/log/sudo.log"

بهتر است تنظیمات سفارشی را در فایل‌های جداگانه‌ای در /etc/sudoers.d/ قرار دهید:

mkdir -p /etc/sudoers.d
echo "ali ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx" > /etc/sudoers.d/ali
chmod 440 /etc/sudoers.d/ali
visudo -c   # بررسی نحوی همه فایل‌ها

NOPASSWD خطرناک است

استفاده از NOPASSWD: ALL به‌شدت خطرناک است: اگر حساب کاربری هک شود، مهاجم بدون نیاز به رمز دوم به دسترسی کامل root می‌رسد. فقط برای دستورات خاص و در محیط‌های کنترل‌شده استفاده کنید. برای سرورهای تولیدی همیشه رمز عبور لازم است.

doas — جایگزین سبک sudo#

بستهٔ doas (OpenBSD's doas) جایگزین سبک‌تری برای sudo است که در Gentoo نیز موجود است:

emerge --ask app-admin/doas

پیکربندی در /etc/doas.conf:

# /etc/doas.conf
permit :wheel
permit nopass ali cmd /usr/bin/systemctl args restart nginx
chmod 0400 /etc/doas.conf
doas emerge --ask htop

چه زمانی doas؟

اگر فقط قابلیت پایهٔ sudo را نیاز دارید و گرامر پیچیدهٔ آن را دوست ندارید، doas سبک‌تر و ساده‌تر است. اما sudo ویژگی‌های پیشرفته‌تری مانند حسابرسی دقیق، logging مرکزی و مدیریت پیچیدهٔ دسترسی دارد.

خطاهای رایج#

۱. user is not in the sudoers file#

ali is not in the sudoers file.  This incident will be reported.

دلیل: کاربر در گروه wheel نیست یا خط wheel در sudoers کامنت شده است. راه‌حل:

# (به‌عنوان root)
gpasswd -a ali wheel
 
# بررسی sudoers
visudo
# این خط باید از کامنت خارج باشد:
# %wheel ALL=(ALL:ALL) ALL

۲. parse error در visudo#

>>> /etc/sudoers: syntax error near line 42 <<<
What now?  Options are:
  (e)dit again
  (x)it without saving
  (Q)uit and save changes despite fatal error

دلیل: خطای نحوی. هرگز Q را انتخاب نکنید. همیشه e بزنید و خطا را اصلاح کنید، وگرنه sudo کاملاً غیرقابل استفاده می‌شود.

۳. sudo کند است (تأخیر چند ثانیه‌ای)#

دلیل: ناتوانی در حل hostname. راه‌حل:

# بررسی hostname
hostname
 
# افزودن به /etc/hosts
nano /etc/hosts
# 127.0.1.1   your-hostname

خلاصه و مرحله بعد#

sudo لایهٔ امنیتی مهمی است که اجازه می‌دهد کاربران عادی دستورات مدیریتی را با حسابرسی و کنترل دقیق اجرا کنند. در Gentoo، نصب app-admin/sudo، فعال‌کردن خط %wheel در visudo و افزودن کاربر به گروه wheel کافی است. برای کاربردهای ساده‌تر، doas جایگزین سبک‌تری است.

برای ایجاد کاربران و گروه‌ها به آموزش Users و برای دسترسی از راه دور به آموزش SSH مراجعه کنید.

اشتراک‌گذاری:

این صفحه در تاریخ ۱ تیر ۱۴۰۵ به‌روزرسانی شده است.