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