## 🔐 ایمنسازی فایلها و دایرکتوریها با استفاده از ACL در لینوکس
در سیستمعامل لینوکس، مجوزهای استاندارد (Read, Write, Execute) برای مالک، گروه و سایر کاربران کافی هستند، اما در برخی مواقع نیاز به کنترل دقیقتر دسترسی داریم. در چنین شرایطی، از **ACL (Access Control List)** استفاده میکنیم.
---
## ✅ ACL چیست؟
**ACL (Access Control List)** به شما امکان میدهد **برای هر فایل یا دایرکتوری، مجوزهای جداگانهای به چندین کاربر یا گروه خاص اختصاص دهید**. این روش پیشرفتهتر و انعطافپذیرتر از مدل سنتی مجوزهاست.
---
## 🧰 فعالسازی و بررسی پشتیبانی از ACL
اکثر توزیعهای مدرن لینوکس بهصورت پیشفرض از ACL پشتیبانی میکنند. برای اطمینان:
```bash
mount | grep acl
```
اگر فایلسیستم با گزینه `acl` مونت نشده، میتوانید آن را به شکل زیر فعال کنید:
### مثال:
در فایل `/etc/fstab`:
```
/dev/sda1 / ext4 defaults,acl 0 1
```
سپس ریمونت کنید:
```bash
sudo mount -o remount,acl /
```
---
## 🛠 دستورات مهم ACL
### 1. **اختصاص دسترسی به کاربر خاص**
```bash
sudo setfacl -m u:username:r-- file.txt
```
🔸 این دستور به کاربر `username` مجوز فقط خواندن میدهد.
---
### 2. **اختصاص دسترسی به گروه خاص**
```bash
sudo setfacl -m g:groupname:rw- file.txt
```
---
### 3. **مشاهده مجوزهای ACL**
```bash
getfacl file.txt
```
---
### 4. **حذف ACL یک فایل**
```bash
setfacl -b file.txt
```
---
### 5. **تنظیم ACL پیشفرض برای یک دایرکتوری**
برای اینکه تمام فایلهایی که داخل یک دایرکتوری ایجاد میشوند بهطور پیشفرض ACL خاصی داشته باشند:
```bash
setfacl -d -m u:username:rwX /mydir
```
---
## 📌 نکات مهم
* ACL به مجوزهای سنتی اولویت ندارد، بلکه آنها را تکمیل میکند.
* برای پشتیبانگیری یا انتقال فایلها همراه ACL، از `tar --acls` استفاده کنید.
* استفاده زیاد از ACL میتواند پیچیدگی مدیریت دسترسی را بالا ببرد؛ مستندسازی توصیه میشود.
---
## ✅ نتیجهگیری
ACLها ابزار قدرتمندی برای کنترل دقیق دسترسی به فایلها و دایرکتوریها در لینوکس هستند. آنها مخصوصاً در محیطهایی با چند کاربر یا گروه مختلف بسیار کاربرد دارند.