</>

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

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

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

Command Palette

Search for a command to run...

sudo در Debian

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

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

sudo به کاربران عادی اجازه می‌دهد دستوراتی را با دسترسی کاربر دیگر (معمولاً root) اجرا کنند، بدون آنکه رمز root را بدانند. در این آموزش با نصب، پیکربندی و امن‌سازی sudo در Debian آشنا می‌شوید.

sudo چیست؟#

sudo (SuperUser DO) ابزاری است که به مدیر سیستم اجازه می‌دهد دسترسی‌های مدیریتی را به‌صورت دقیق و کنترل‌شده به کاربران عادی بدهد. مزایای sudo نسبت به ورود مستقیم با root:

  • ردیابی: تمام دستورات sudo در لاگ ثبت می‌شوند
  • کنترل دقیق: می‌توان دستورات مجاز را محدود کرد
  • امنیت: نیازی به اشتراک رمز root نیست
  • محدودیت زمانی: رمز پس از مدتی منقضی می‌شود

sudo در برابر su

su به شما اجازه می‌دهد به‌طور کامل به کاربر root تبدیل شوید (با تایپ رمز root). sudo فقط یک دستور را با root اجرا می‌کند (با تایپ رمز خود کاربر). sudo امن‌تر و قابل ردیابی‌تر است.

نصب sudo#

در Debian، sudo همیشه به‌طور پیش‌فرض نصب نیست (مثلاً در نصب حداقلی سرور). برای نصب:

# ابتدا با su به root تبدیل شوید
su -
 
# نصب sudo
apt install sudo
 
# خروج از root
exit

افزودن کاربر به گروه sudo#

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

# افزودن کاربر به گروه sudo
sudo usermod -aG sudo maryam
 
# یا با adduser
sudo adduser maryam sudo

پس از این کار، کاربر باید خارج و دوباره وارد شود.

نصب‌گر Debian این کار را خودکار می‌کند

در نصب‌گر Debian 12، اگر رمز root را خالی بگذارید، اولین کاربر ساخته‌شده به‌صورت خودکار به گروه sudo اضافه می‌شود. این روش پیشنهادی است؛ زیرا حساب root غیرفعال می‌شود و امنیت سیستم افزایش می‌یابد.

استفادهٔ پایه از sudo#

# اجرای یک دستور با دسترسی root
sudo apt update
 
# اجرای شل تعاملی با root
sudo -i
 
# اجرای دستور به‌عنوان کاربر دیگر
sudo -u www-data ls /var/www
 
# اجرای شل به‌عنوان کاربر دیگر
sudo -iu postgres
 
# مشاهدهٔ دسترسی‌های sudo خود
sudo -l
 
# تمدید زمان sudo (بدون پرسش مجدد رمز)
sudo -v

فایل sudoers#

فایل /etc/sudoers پیکربندی اصلی sudo است. هرگز آن را مستقیم با ویرایشگر باز نکنید؛ همیشه از visudo استفاده کنید:

# ویرایش امن فایل sudoers
sudo visudo

هرگز sudoers را مستقیم ویرایش نکنید

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

ساختار فایل sudoers#

خط اصلی فایل sudoers به این شکل است:

user  host=(runas)  command
فیلدتوضیح
userنام کاربر یا گروه (با %)
hostنام میزبان (معمولاً ALL)
runasکاربری که دستور به‌عنوان او اجرا می‌شود
commandدستور مجاز (ALL یعنی همه)

مثال‌های رایج#

# کاربر maryam می‌تواند همهٔ دستورات را اجرا کند
maryam  ALL=(ALL:ALL) ALL
 
# اعضای گروه sudo می‌توانند همهٔ دستورات را اجرا کنند
%sudo   ALL=(ALL:ALL) ALL
 
# کاربر ali فقط می‌تواند apt را اجرا کند
ali     ALL=(root) /usr/bin/apt
 
# کاربر ali می‌تواند apt را بدون رمز اجرا کند
ali     ALL=(root) NOPASSWD: /usr/bin/apt
 
# گروه webadmin می‌تواند سرویس apache را مدیریت کند
%webadmin  ALL=(root) /bin/systemctl restart apache2

فایل‌های sudoers.d#

برای پیکربندی‌های اضافی، بهتر است از فایل‌های جداگانه در /etc/sudoers.d/ استفاده کنید:

# ساخت فایل برای یک کاربر یا گروه
sudo visudo -f /etc/sudoers.d/developers
 
# محتوا:
# گروه developers می‌تواند docker را اجرا کند
%developers  ALL=(root) /usr/bin/docker, /usr/bin/docker-compose
# فایل اصلی sudoers این خط را دارد که فایل‌های sudoers.d را شامل می‌شود:
# @includedir /etc/sudoers.d

هر کاربر یک فایل

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

امن‌سازی sudo#

محدودکردن دستورات#

# کاربر deploy فقط می‌تواند systemctl و journalctl را اجرا کند
deploy  ALL=(root) /bin/systemctl, /bin/journalctl

رمز بعد از مدت زمان خاص منقضی شود#

# پیش‌فرض: 5 دقیقه
Defaults  timestamp_timeout=5
 
# برای ایمنی بیشتر: 2 دقیقه
Defaults  timestamp_timeout=2
 
# برای همیشه پرسیدن رمز در هر دستور
Defaults  timestamp_timeout=0

نمایش پیام هشدار#

# نمایش پیام در هر بار اجرای sudo
Defaults  lecture=always
Defaults  lecture_file=/etc/sudo.lecture
echo "این سیستم تحت نظارت است. تمام دستورات ثبت می‌شوند." | sudo tee /etc/sudo.lecture

لاگ‌گذاری sudo#

تمام دستورات sudo به‌طور پیش‌فرض در /var/log/auth.log ثبت می‌شوند:

# مشاهدهٔ تمام دستورات sudo
sudo grep sudo /var/log/auth.log
 
# یا با journalctl
journalctl -t sudo
 
# یا
journalctl -g sudo

خطاهای رایج#

۱. "user is not in the sudoers file"#

sudo apt update
[sudo] password for maryam:
maryam is not in the sudoers file. This incident will be reported.

راه‌حل: کاربر را به گروه sudo اضافه کنید. اما برای این کار، باید به‌نوعی به root دسترسی داشته باشید:

# اگر رمز root را دارید
su -
usermod -aG sudo maryam
exit
 
# اگر نه، باید از طریق recovery mode یا live USB بوت کنید
# و در chroot، کاربر را به گروه sudo اضافه کنید

۲. "sudo: unable to resolve host"#

sudo: unable to resolve host debian-pc: Name or service not known

راه‌حل: نام میزبان را به /etc/hosts اضافه کنید:

echo "127.0.1.1 $(hostname)" | sudo tee -a /etc/hosts

۳. "sudo: no tty present and no askpass program specified"#

این خطا معمولاً در اسکریپت‌های cron یا SSH بدون tty رخ می‌دهد. راه‌حل: در فایل sudoers، برای آن کاربر گزینهٔ NOPASSWD را تنظیم کنید:

# /etc/sudoers.d/backup
backup  ALL=(root) NOPASSWD: /usr/local/bin/backup.sh

۴. sudo قفل شده است#

اگر اشتباهاً کاربر خود را از گروه sudo حذف کردید و رمز root هم ندارید:

# بوت به recovery mode از منوی GRUB
# انتخاب "root - Drop to root shell prompt"
mount -o remount,rw /
usermod -aG sudo your-username
reboot

همیشه رمز root یا یک کاربر sudo دیگر داشته باشید

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

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

sudo ابزار قدرتمندی برای دادن دسترسی‌های مدیریتی محدود و قابل ردیابی به کاربران است. در Debian، اضافه‌کردن کاربر به گروه sudo ساده‌ترین راه است. برای کنترل دقیق‌تر، از فایل‌های /etc/sudoers.d/ با visudo استفاده کنید.

به‌عنوان گام بعدی:

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

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