## 🛡️ مدیریت پیشرفته کاربران، گروهها و مجوزهای فایل در لینوکس
مدیریت کاربران، گروهها و سطح دسترسی فایلها از مهمترین وظایف یک مدیر سیستم (SysAdmin) در لینوکس است. اگر میخوای سطح کارت رو از ابتدایی به حرفهای ارتقا بدی، این مقاله مخصوص توئه!
ما در این آموزش، مباحث پیشرفتهای رو بررسی میکنیم:
- مدیریت حرفهای کاربران و گروهها
- درک عمیق از مجوزهای فایل (Permissions)
- مفهوم مالکیت و تغییر آن
- صفات فایلها (File Attributes) و امنیت بیشتر با `chattr` و `lsattr`
---
## 👥 مدیریت پیشرفته کاربران و گروهها
### 📌 نمایش تمام کاربران:
```bash
cut -d: -f1 /etc/passwd
```
### 📌 نمایش تمام گروهها:
```bash
cut -d: -f1 /etc/group
```
### ✅ ساخت گروه جدید:
```bash
sudo groupadd devs
```
### ✅ اضافه کردن کاربر به چند گروه:
```bash
sudo usermod -aG devs,ftp username
```
### 🗑️ حذف کاربر و دایرکتوری خانگی:
```bash
sudo userdel -r username
```
---
## 📂 مجوزهای فایل در سطح حرفهای
### 🧠 ساختار مجوزها:
```
-rwxr-xr--
```
- حرف اول: نوع فایل
- سه حرف بعدی: مالک (user)
- بعدی: گروه (group)
- آخری: دیگران (others)
### 🔁 تغییر مجوز با `chmod`
#### روش عددی:
```bash
chmod 755 filename
```
توضیح:
- 7 = rwx
- 5 = r-x
- 5 = r-x
#### روش نمادین:
```bash
chmod u+x,g-w,o= filename
```
---
### 👑 مالکیت فایل با `chown`
```bash
sudo chown user:group filename
```
مثال:
```bash
sudo chown ali:devs /var/www/html/index.html
```
---
## 🧷 File Attributes (ویژگیهای امنیتی فایلها)
### 🔍 نمایش صفات فایل:
```bash
lsattr filename
```
### 🔐 قفل کردن فایل با `chattr` (غیرقابل حذف/ویرایش)
```bash
sudo chattr +i filename
```
🔒 این دستور باعث میشه فایل غیرقابل حذف یا تغییر بشه، حتی توسط root!
### 🔓 باز کردن قفل:
```bash
sudo chattr -i filename
```
---
## ⚙️ دسترسی به صورت پیشرفته با ACL
اگر بخواید مجوزهای دقیقتری به کاربران خاص بدید:
### ✅ فعالسازی ACL (در اکثر سیستمها فعاله)
### 🎯 دادن مجوز خاص:
```bash
sudo setfacl -m u:username:rwx filename
```
### 🔎 مشاهده مجوزها:
```bash
getfacl filename
```
---
## 🧪 مثال واقعی: سناریو حرفهای
**سناریو:** میخوایم کاربری به نام `amir` فقط بتونه یک فایل خاص در `/home/projects` رو بخونه، ولی نتونه تغییری بده یا پاکش کنه.
مراحل:
```bash
sudo useradd amir
sudo setfacl -m u:amir:r-- /home/projects/report.txt
sudo chattr +i /home/projects/report.txt
```
🔐 نتیجه: کاربر فقط مجاز به خوندن فایل خواهد بود و حتی root هم بدون حذف `+i` نمیتونه تغییرش بده!
---
## 🧠 نکات نهایی برای حرفهایها
- از `usermod` و `groupmod` برای تغییرات ساختاری کاربران و گروهها استفاده کن.
- قبل از اجرای `chmod/chown` روی دایرکتوریهای سیستمی، دقت کن که باعث اختلال در عملکرد سرویسها نشی.
- صفات فایلها (immutable, append-only) میتونن نقش بسیار مهمی در جلوگیری از خرابکاری یا حذف ناخواسته ایفا کنن.
- با ACL میتونی مجوزهای دقیقتری به کاربران خاص بدی بدون نیاز به تغییر گروه یا مالک فایل.