What is acl?

Linux မှာရှိတဲ့ file တွေ directories တွေကို ACL(Access Control Lists)ကိုအသုံးပြုပြီး secure ဖြစ်အောင်ဘယ်လိုလုပ်မလဲ။

ပုံမှန်သုံးနေကျ read,write,execute permission တွေကို chmod, chown နဲ့တွဲသုံးတာက အလုပ်တော့ဖြစ်ပေမဲ့ file တစ်ခုထဲကို user အများကြီးအတွက် Permission တွေပေးချင်တဲ့အခါမှာအဲ့ဒါတွေနဲ့အလုပ်မဖြစ်တော့ဘူးဗျ။ ဒါပေမဲ့ acl ကတော့ကောင်းကောင်းလုပ်ပေးနိုင်ပါတယ်။ acl ကိုအသုံးပြုမယ်ဆိုရင်တော့ သူ့အတွက်လိုအပ်တဲ့ packages တွေကို

 sudo apt-get install nfs4-acl-tools acl

ဆိုပြီးအရင် install လုပ်ပေးရပါမယ်။ acl မှာ default acl နဲ့ access acl ဆိုပြီးနှစ်မျိုးရှိပါတယ်။Default acl ကတော့ directory level မှာပဲအသုံးပြုလို့ရပါတယ်။ default acl permission ပေးထားတဲ့ directory(example Musics) ထဲမှာ file ဒါမှမဟုတ် directory တွေထပ်ဆောက်မယ်ဆိုရင်
parent directory(Musics) ရဲ့ permission အတိုင်း Sub directory , file တွေကိုသက်ရောက်မှုရှိမှာပါ။ Access acl ကတော့ directory ရော file ပေါ်မှာပါအသုံးပြုလို့ရပါတယ်။ File or Directory တွေမှာ acl permission ရှိမရှိကို getfacl <file or directory name> နဲ့ကြည့်လို့ရပါတယ်။

ဒီပုံအရဆိုရင် Documents ဆိုတဲ့ directory မှာရှိတဲ့ acl permission ကိုမြင်ရမှာပါ။ ဒီ directory မှာ default acl မရှိသေးပါဘူး။အဲ့တော့ကျနော်တို့ default acl ထားကြည့်ရအောင်။

ဒီပုံမှာဆိုရင် Documents အတွက် default acl ကိုသတ်မှတ်လိုက်တာပါ။ အောက်က default အရဆိုရင် Document ထဲမှာ file တစ်ခု create လုပ်မယ်ဆိုရင် create လုပ်တဲ့ user က rwx, full permission ကိုရရှိမှာဖြစ်ပြီး Group နဲ့ other ကတော့ read နဲ့ execute permission ကိုရမှာဖြစ်ပါတယ်။
ပေးပြီးသား acl permission တွေကိုပြန်ဖျက်ချင်ရင်တော့

setfacl -b  file/directory         #removing all ACL from file/direcoty

နဲ့ပြန်ဖျက်လို့ရပါတယ်။ကျနော်တို့ပိုပြီးတော့ရှင်းသွားအောင် example scenario လေးတစ်ခုနဲ့ကြည့်ကြည့်ရအောင်။

Stpe1:   ပထမဆုံး user1 နဲ့ user2 ဆိုတဲ့ user နှစ်ယောက်ကို create လုပ်မယ်။

Step2:   acl ဆိုတဲ့ group တစ်ခုလုပ်ပြီးတော့ user1 နဲ့ user2 ကို acl group ထဲထည့်မယ်။

Step3:   user1 ဆိုတဲ့ directory တစ်ခု create လုပ်ပြီး owner ကို user1 အဖြစ်ထားမယ်။

Step4:   user1 အနေနဲ့ login ဝင်ပြီး user1 ဆိုတဲ့ directory ထဲမှာ example ဆိုတဲ့ directory တစ်ခု create လုပ်မယ်။

Step5:   အခု acl ကိုသုံးပြီးတော့ example ဆိုတဲ့ directory မှာ user1 က rwx permissions, user2 က read only permission နဲ့ other မှာ no permission ထားပြီးစမ်းကြည့်ရအောင်။

-m က ရှိပြီးသား permission ကို modify လုပ်ဖို့အတွက်အသုံးပြုတာပါ။

Step7:   အခုကျနော်တို့ user2 အနေနဲ့ login ဝင်ပြီးတော့ ပေးထားတဲ့ permission မှန်၊ မမှန် ကြည့်ည့်ရအောင်။

user2 အနေနဲ့ example ထဲကိုဝင်ကြည့်တဲ့အခါမှာ Permission denied ဖြစ်နေတာကိုမြင်ရမှာပါ။ ဘာလို့လဲဆိုတော့ ကျနော်တု့ိ user2 အတွက်ကို read permission ဘဲထားခဲ့တာဖြစ်တဲ့အတွက် user2 က example ထဲကိုဝင်ကြည်တဲ့အခါမှာ ဝင်လို့မရတာဖြစ်ပါတယ်။( directory ထဲကိုဝင်တဲ့အခါမှာ execute permission ရှိမှဝင်လို့ရတဲ့အတွက်ပါ။) အဲ့တော့ user2 အတွက်ကို execute permission ပေးကြည့်ရအောင်။

user1@admin:/home/server/user1$ setfacl -m u:user2:r-x example/

example directory ထဲကိုဝင်လို့ရသွားပါပြီ။ read နဲ့ execute ပဲပေးထားတဲ့အတွက် write ကိုရမရစမ်းကြည့်ရအောင်။

permission denied!!!!

Reference Link

ACL’s Documentation

******Thanks******

 

 

 
Back To Top