How to use Access control list (ACL) in linux

طرح سناریو ۱

  • فرض کنید یک پرونده در اختیار دارید که متعلق به کاربر و گروه 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 بگیرد)

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *