طرح سناریو ۱
- فرض کنید یک پرونده در اختیار دارید که متعلق به کاربر و گروه root است.
- همچنین فرض کنید پرمیشن این پرونده به صورت 744 در نظر گرفته شده است.
- یعنی برای گروه other و گروه root تنها پرمیشن خواندن در نظر گرفته شده است.
- حال فرض کنید کاربری با نام user1 در اختیار دارید که عضو گروه root نیست.
- همچنین میخواهید فقط و فقط به کاربر user1 اجازهی نوشتن به فقط و فقط پروندهی مد نظر را بدهید.
- در این شرایط و برای حل این مشکل طبیعتاً نمیتوان از مباحث پایهای پرمیشنها استفاده نمود لذا این سناریو تنها با ACL قابل حل است.
نصب بستهی مربوط به ACL
- نام بستهای که ACL را ارائه میکند ، X میباشد. به منظور نصب به صورت زیر عمل نمایید.
|
1 |
# apt-get install acl |
- به منظور استفاده از ACL از ابزار getfacl باید استفاده نمود.
حل سناریو ۱
- ابتدا یک کاربر با نام user1 ایجاد نمایید.
|
1 |
# adduser user1 |
- یک پرونده با محتوایی دلخواه ایجاد نمایید.
|
1 |
# echo 'test' > /home/file.txt |
- به منظور بررسی پرمیشنها و ACL پروندهی file.txt به صورت زیر عمل نمایید.
|
1 2 3 4 5 6 7 |
# getfacl file.txt <span style="color: #ff0000;"># file: file.txt</span> <span style="color: #ff0000;"># owner: root</span> <span style="color: #ff0000;"># group: root</span> <span style="color: #ff0000;">user::rw-</span> <span style="color: #ff0000;">group::r--</span> <span style="color: #ff0000;">other::r--</span> |
- حال به منظور تخصیص دسترسی نوشتن به کاربر user1 تنها و تنها برای پروندهی root/file.txt/ به شکل زیر عمل نمایید.
|
1 |
# setfacl -m u:user1:rw /root/file.txt |
- حال در صورتی که از پروندهی file.txt یک ls بگیرید ، خواهید دید که یک + به انتهای پرمیشن آن اضافه شده است.
|
1 2 |
# ls -lh /home/file.txt -rw-rw-r--<span style="color: #ff0000;"><strong>+</strong></span> 1 root root 5 Dec 1 17:50 /home/file.txt |
- حال اگر وارد کاربر user1 شوید ، میتوانید داخل پروندهی home/file.txt/ بنویسید.
|
1 2 |
# su - user1 $ echo user >> ../file.txt |
- در صورتی که تمام موارد به درستی انجام شده باشد ، نباید خطایی مبنی بر Permission denied صادر گردد.
- نکته : طبیعتا کاربر باید نسبت به مسیری که درون آن پرونده قرار گرفته است ، دید داشته باشد. یعنی در شرایط عادی (بدون تنظیم ACL) کاربر باید بتواند home/ یا هر مسیر فرضی دیگر را ببیند. (ls بگیرد)