تفاوت بین su و sudo + آموزش پیکربندی پیشرفته sudo در لینوکس پرینت


 

 

## 🔐 تفاوت بین `su` و `sudo` + آموزش پیکربندی پیشرفته `sudo` در لینوکس

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

---

## 🆚 تفاوت بین `su` و `sudo`

| ویژگی | `su` | `sudo` |
|-------|------|--------|
| نوع دسترسی | ورود کامل به حساب root | اجرای یک دستور با دسترسی root |
| نیاز به رمز عبور | رمز عبور **root** | رمز عبور **کاربر فعلی** |
| سطح دسترسی | سشن root کامل | محدود به همان دستور |
| لاگ‌گیری | خیر (پیش‌فرض) | بله (در `/var/log/auth.log`) |
| امنیت | کمتر (چون کل سیستم تحت کنترل می‌ره) | بیشتر (محدود و قابل کنترل) |
| مناسب برای | کاربر حرفه‌ای یا در محیط‌های تک‌کاربره | محیط‌های چندکاربره، سرورها، شرکت‌ها |

---

## 🧪 مثال ساده:

### با `su`:

```bash
su
# وارد کردن رمز root
apt update
exit
```

### با `sudo`:

```bash
sudo apt update
```

---

## ⚙️ پیکربندی حرفه‌ای `sudo`

فایل اصلی تنظیمات `sudo` در لینوکس:
```
/etc/sudoers
```

اما هیچ‌وقت اون رو مستقیم با ویرایشگر باز نکن! استفاده از این دستور اجباریه:

```bash
sudo visudo
```

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

---

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

```text
user ALL=(ALL:ALL) ALL
```

- user: نام کاربر
- `ALL`: تمام میزبان‌ها
- `(ALL:ALL)`: به‌عنوان تمام کاربران و گروه‌ها
- دستور آخر: همه دستورها قابل اجرا هستن

---

### ✅ تعریف مجوز برای کاربر خاص:

```bash
ali ALL=(ALL) NOPASSWD: /usr/bin/apt
```

🔹 این دستور به کاربر `ali` اجازه می‌ده بدون نیاز به رمز عبور، فقط دستور `apt` رو اجرا کنه.

---

### ✅ تعریف مجوز برای گروه:

```bash
%devs ALL=(ALL:ALL) /bin/systemctl restart apache2
```

🔹 اعضای گروه `devs` می‌تونن فقط سرویس Apache رو ریستارت کنن.

---

### ✅ ایجاد فایل sudoers.d برای مدیریت آسان‌تر

به جای دستکاری مستقیم `/etc/sudoers`، بهتره فایل‌های مستقل بسازی:

```bash
sudo visudo -f /etc/sudoers.d/webteam
```

مثال محتوا:
```text
%web ALL=(ALL) /usr/bin/systemctl restart nginx
```

---

## 🔍 بررسی اعضای sudo

```bash
getent group sudo
```

یا

```bash
id username
```

---

## 🔒 افزایش امنیت `sudo`

- محدود کردن زمان معتبر بودن پس از وارد کردن رمز:
```bash
Defaults timestamp_timeout=2
```

- غیرفعال‌سازی sudo بدون رمز:
```bash
Defaults !authenticate
```

- لاگ گرفتن از دستورات sudo:
پیش‌فرض در اکثر توزیع‌ها فعاله و در این فایل لاگ می‌شه:
```bash
/var/log/auth.log
```

---

## 🧠 نکات حرفه‌ای

- استفاده از `sudo` در اسکریپت‌ها بهتر از `su` هست چون قابل کنترل‌تر و امن‌تره.
- `su` خطرناک‌تره چون کل نشست شما root می‌شه و اشتباهات خطرناک‌تری ممکنه رخ بده.
- با استفاده از sudoers.d برای هر تیم یا پروژه، می‌تونی مدیریت بسیار حرفه‌ای و تمیزی داشته باشی.

---

## ✍️ جمع‌بندی

| مورد | پیشنهاد حرفه‌ای |
|------|------------------|
| اجرای یک دستور با دسترسی root | `sudo` ✅ |
| ورود کامل به root برای کار خاص | `su` (با دقت!) |
| مدیریت دسترسی‌ها در محیط‌های تیمی | `sudo` با پیکربندی sudoers.d ✅ |
| امنیت، لاگ، کنترل | فقط با `sudo` ✅ |

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت