কম্পিউটার টিউটোরিয়াল

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

লিনাক্সে একটি খুব উপযোগী ফিচার হলো "অ্যাক্সেস কন্ট্রোল লিস্ট" (Access Control Lists) যা ফাইল এবং ডিরেক্টরির অ্যাক্সেস নিয়ন্ত্রণ করে। এখানে ব্যাখ্যা করা হলো কীভাবে অ্যাক্সেস কন্ট্রোল লিস্ট ফাইল পারমিশন নিয়ন্ত্রণে কাজ করে।

নোট: অ্যাক্সেস কন্ট্রোল লিস্ট কীভাবে কাজ করে সেটি ভালোভাবে বুঝতে, আমরা প্রথমে কিছু ইউজার এবং গ্রুপ সেট আপ করছি একটি কাজ কর रहे লিনাক্স সিস্টেমে। নিচের এক্সারসাইজটি একটি ভার্চুয়াল মেশিনে করা হয়েছে যা Kali অপারেটিং সিস্টেম চালাচ্ছে। রুট ইউজার한테 সিস্টেমে নতুন ইউজার যোগ করার এবং তাদের গ্রুপে नियোগ করার ক্ষমতা রয়েছে।

ইউজার এবং গ্রুপ তৈরি করা

প্রথমে, আমরা রুট হিসেবে লগ ইন করব, ইউজার তৈরি করব এবং টেবিল অনুযায়ী তাদের সংশ্লিষ্ট গ্রুপে রাখব। ইউজারদের সিম্পল নাম দেওয়া হয়েছে কনসেপ্ট ভালোভাবে বুঝতে 돕তে।

ইউজার গ্রুপ
john1
john2
john3
johns
jane1
jane2
janes

নতুন ইউজার সিস্টেমে যোগ করতে adduser কমান্ড ব্যবহার করব।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

id কমান্ড নতুন তৈরি ইউজারের ডিটেইলস দেখাবে। এটা ইউজার আইডি (uid), গ্রুপ আইডি (gid) এবং গ্রুপ নাম (groups) দেখাবে। ইউজার, তৈরি হওয়ার সাথে সাথে, স্বয়ংক্রিয়ভাবে একটি গ্রুপে যোগ হয় যার নাম ইউজার নামের সাথে মিলে। সেই ইউজার সেই গ্রুপের একমাত্র সদস্য হয়।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

একইভাবে "john2" এবং "john3" ইউজারগুলো তৈরি করা হয়।

adduser john2
adduser john3

তিনজন ইউজার তৈরি হলে, id কমান্ড ব্যবহার করে তাদের ইউজার এবং গ্রুপ আইডি দেখুন।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

দেখা যাচ্ছে তিনজন ইউজার তাদের নিজস্ব গ্রুপে — 1000, 1001 এবং 1002। আগে দেখানো টেবিল অনুযায়ী, আমরা তিনজন ইউজারকে একই গ্রুপে চাই: johns। যেহেতু এখনো সিস্টেমে এমন কোনো গ্রুপ নেই, groupadd কমান্ড দিয়ে তৈরি করব:

groupadd -g <new_group_ID> <group_name>

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

নতুন গ্রুপ আইডি 5000 হিসেবে নির্দিষ্ট করা হয়েছে। -g সুইচ না দিলে সিস্টেম অটোমেটিক্যালি গ্রুপ আইডি বেছে নেবে। নতুন গ্রুপের নাম "johns"। এখন তিনজন ইউজার — "john1", "john2" এবং "john3" — এই গ্রুপের সদস্য হিসেবে যোগ করতে হবে। এজন্য usermod কমান্ড ব্যবহার করব।

usermod -g <group_name> <user_name>

usermod "user_name" ইউজারকে "group_name" গ্রুপে যোগ করে। নিচের ফিগারটি প্রথমে "john1"-এর uid এবং gid দেখাচ্ছে গ্রুপ পরিবর্তনের আগে। usermod কমান্ড সফলভাবে রান হলে, "john1" "johns" গ্রুপে gid 5000 সহ যোগ হয়।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

একই প্রক্রিয়া "john2" এবং "john3"-এর জন্যও করা হয়।

usermod -g johns john2
usermod -g johns john3

শেষে, "johns" গ্রুপের তিনজন ইউজারের ডিটেইলস id কমান্ড দিয়ে দেখুন।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

আমরা সফলভাবে তিনজন ইউজার তৈরি করলাম এবং একই গ্রুপে যোগ করলাম।

একইভাবে "jane1" এবং "jane2" ইউজারগুলো তৈরি করা হয় এবং "janes" গ্রুপে gid 6000 সহ যোগ করা হয়। তাদের ডিটেইলস id কমান্ড দিয়ে নিচে দেখানো হয়েছে।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

অ্যাক্সেস কন্ট্রোল লিস্টের প্রয়োজন কেন?

ধরুন ইউজার "john1" লগ ইন করে,

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

হোম ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করে,

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

এবং সেখানে কিছু কন্টেন্ট যোগ করে।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

ls কমান্ড দিয়ে ফাইলটির মেটাডেটা দেখি।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

আউটপুটের প্রথম কয়েকটি ক্যারেক্টার, - rw - r - - r - - পারমিশন স্ট্রিং এর হিসাব দেয়। এটিকে বিশ্লেষণ করি।

– rw – r – – r – –
ফাইল টাইপ john1-এর ফাইল üzerindeki পারমিশন johns গ্রুপের সদস্যদের ফাইল上的 পারমিশন johns গ্রুপে না থাকা অন্যদের দেওয়া পারমিশন

এই আর্টিকেলটি ফাইল পারমিশনের উপর একটি ভালো প্রাইমার।

কী হয় যদি "john1", ফাইল অোনার হলে, শুধু "john2" এবং "jane1"-কে রাইট পারমিশন দিতে চায় কিন্তু "john3" এবং "jane2"-এর জন্য রিড পারমিশন রাখতে চায়?

rw – r – –
john1
john2
jane1
john3
jane2

একটি অপশন হয় একটি নতুন গ্রুপ তৈরি করা রিড, রাইট পারমিশন সহ "john1", "john2" এবং "jane1"-র জন্য এবং আরেকটি গ্রুপ শুধু রিড পারমিশন সহ "john3" এবং "jane2"-র জন্য। যদি john1 কোনো গ্রুপ মেম্বারের পারমিশন আরও মডিফাই করতে চায়, তবে আরও গ্রুপ তৈরি করতে হবে। একাধিক গ্রুপ তৈরি ও ম্যানেজ করা সিস্টেম অ্যাডমিনিস্ট্রেটরের জন্য একটি ভার।

বদলে, একটি ফাইলের জন্য "অ্যাক্সেস কন্ট্রোল লিস্ট" তৈরি করা যায় যা স্পষ্টভাবে বলে দেবে কোন ইউজার उस ফাইল trên কী অপারেশন পারফর্ম করতে পারবে।

ফাইলের জন্য অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) কীভাবে তৈরি করবেন?

প্রতিটি ফাইল তৈরির সাথে সাথে একটি ACL অ্যাসাইন থাকে। এটিকে কার্যকরভাবে ব্যবহার করা শুধু এটিকে মডিফাই করার বিষয়। শুধু ফাইল অোনার এবং রুট ইউজার ফাইলের ACL মডিফাই করতে পারেন।

মوجود ACL দেখতে getfacl কমান্ড ব্যবহার করতে পারি:

getfacl <file_name>

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

# দিয়ে শুরু হওয়া লাইনগুলো কমেন্ট লাইন। আসল ইনফরমেশন আউটপুটের শেষ তিন লাইনে থাকে, যা আগে পাওয়া পারমিশন স্ট্রিংএর মতো। "user" লাইনটি ফাইল অোনার "john1"-এর জন্য অ্যাসাইন করা পারমিশন বোঝায়। "group" লাইনটি "johns" গ্রুপের অন্যান্য সদস্যদের জন্য অ্যাসাইন করা পারমিশন বোঝায়। আপনি حدس করলেন, "other" লাইনটি গ্রুপের বাইরে যেকোনো কেউকে বোঝায়।

ফাইলের الموجود ACL মডিফাই করতে setfacl কমান্ড ব্যবহার করি।

setfacl -m entity:name:permissions <file_name>
entity name permissions
এখানে মান নির্দেশ করে ACL এন্ট্রিটি কার জন্য:
user (u) অথবা group(g) অথবা others(o)
ইউজার বা গ্রুপের নাম, যার জন্য ACL এন্ট্রিটি প্রাসঙ্গিক রিড, রাইট, এক্সিকিউট পারমিশন r, w, x অক্ষর দিয়ে নির্দেশিত

"john2"-কে প্রথমে ফাইলে রিড, রাইট অ্যাক্সেস দেওয়া হয়,

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

তারপর "jane1"-কে।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

আপডেট করা "secretfile"-এর ACL দেখি।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

দেখা যাচ্ছে "john2" এবং "jane1"-কে রিড এবং রাইট পারমিশন অ্যাসাইন করা হয়েছে।

ACL-এর প্রামাণিকতা যাচাই

দেখা যাচ্ছে "john2" ফাইল পড়তে এবং এতে লিখতে পারছে।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

"john2"-এর যোগ করা নতুন ইনফরমেশন ফাইলে অ্যাপেন্ড হয়েছে।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

একইভাবে "jane1"-কেও একই সুবিধা — রিড অ্যাক্সেস এবং রাইট অ্যাক্সেস।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

কিন্তু একই গ্রুপের "john3" ফাইলে লিখতে পারছে না।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

"jane2", যিনি অন্য ক্যাটাগরিতে আছেন, সেও ফাইলে লিখতে পারছেন না।

লিনাক্সে ফাইল পারমিশন নিয়ন্ত্রণে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) ব্যবহার

উপসংহার

এই প্রক্রিয়াটি ডিরেক্টরির জন্যও প্রসারিত করা যায়। অ্যাক্সেস কন্ট্রোল লিস্ট সিস্টেম অ্যাডমিনিস্ট্রেটরকে ফাইল এবং ডিরেক্টরি অ্যাক্সেস দক্ষতার সাথে হ্যান্ডল করতে সক্ষম করে।

  1. লিনাক্স টার্মিনাল ক্যালকুলেটর হিসেবে ব্যবহার করুন

  2. লিনাক্সে tee কমান্ড ব্যবহার করুন

  3. লিনাক্সে জিপ ফাইল এক্সট্র্যাক্ট করার পদ্ধতি

  4. লিনাক্সে Zsync ব্যবহার করে ফাইলের অংশ ট্রান্সফার করার পদ্ধতি