লিনাক্সের নির্দিষ্ট ডিরেক্টরিতে কোনও ব্যবহারকারীর পড়ার/লেখার অ্যাক্সেস নির্ধারণ করুন


পূর্ববর্তী নিবন্ধে, আমরা আপনাকে লিনাক্সে কীভাবে একটি ভাগ করে নেওয়া ডিরেক্টরি তৈরি করতে দেখিয়েছি। এখানে, আমরা লিনাক্সের কোনও নির্দিষ্ট ডিরেক্টরিতে কোনও ব্যবহারকারীকে কীভাবে পড়ার/লেখার অ্যাক্সেস দিতে হবে তা বর্ণনা করব।

এটি করার দুটি সম্ভাব্য পদ্ধতি রয়েছে: প্রথমটি ফাইল অনুমতিগুলি পরিচালনা করতে ব্যবহারকারী গ্রুপ তৈরি করা হচ্ছে, নীচে বর্ণিত।

এই টিউটোরিয়ালটির উদ্দেশ্যে, আমরা নিম্নলিখিত সেটআপটি ব্যবহার করব।

Operating system: CentOS 7
Test directory: /shares/project1/reports 
Test user: tecmint
Filesystem type: Ext4

নিশ্চিত হয়ে নিন যে সমস্ত কমান্ডগুলি রুট ব্যবহারকারী হিসাবে কার্যকর হয়েছে বা sudo কমান্ডটি সমান সুযোগ-সুবিধা সহ ব্যবহার করবে।

আসুন mkdir কমান্ডটি ব্যবহার করে রিপোর্টগুলি নামে একটি ডিরেক্টরি তৈরি করে শুরু করুন:

# mkdir -p /shares/project1/reports   				

ডিরেক্টরিতে ব্যবহারকারীর কাছে পড়ার/লেখার অ্যাক্সেস দেওয়ার জন্য এসিএল ব্যবহার করা

গুরুত্বপূর্ণ: এই পদ্ধতিটি ব্যবহার করার জন্য, নিশ্চিত করুন যে আপনার লিনাক্স ফাইল সিস্টেমের ধরণ (যেমন Ext3 এবং Ext4, এনটিএফএস, বিটিআরএফএস) ACL সমর্থন করে।

১. প্রথমে, আপনার সিস্টেমে বর্তমান ফাইল সিস্টেমের ধরণটি দেখুন এবং কার্নেলটি ACL সমর্থন করে কিনা তা পরীক্ষা করে নিন:

# df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
# grep -i acl /boot/config*

নীচের স্ক্রিনশট থেকে, ফাইল সিস্টেম প্রকারটি Ext4 এবং CONFIG_EXT4_FS_POSIX_ACL = y বিকল্প হিসাবে নির্দেশিত হিসাবে কার্নেলটি POSIX ACL গুলি সমর্থন করে।

২. এরপরে, ফাইল সিস্টেম (পার্টিশন) ACL বিকল্পের সাথে মাউন্ট করা আছে কিনা তা পরীক্ষা করুন:

# tune2fs -l /dev/sda1 | grep acl

উপরের আউটপুট থেকে, আমরা দেখতে পাচ্ছি যে ডিফল্ট মাউন্ট বিকল্পটিতে ইতিমধ্যে এসিএল সমর্থন রয়েছে। যদি এটি সক্ষম না থাকে তবে আপনি নির্দিষ্ট পার্টিশনের জন্য এটি সক্ষম করতে পারেন (এই ক্ষেত্রে/dev/sda3):

# mount -o remount,acl /
# tune2fs -o acl /dev/sda3

৩. এখন, নীচের কমান্ডগুলি চালিত করে রিপোর্টগুলি নামে একটি নির্দিষ্ট ডিরেক্টরিতে কোনও ব্যবহারকারীর টেকমিন্ট পড়ার/লেখার অ্যাক্সেস নির্ধারণের সময়।

# getfacl /shares/project1/reports       		  # Check the default ACL settings for the directory 
# setfacl -m user:tecmint:rw /shares/project1/reports     # Give rw access to user tecmint 
# getfacl /shares/project1/reports    			  # Check new ACL settings for the directory

উপরের স্ক্রিনশটে ব্যবহারকারী টেকমিন্ট এখন দ্বিতীয় getfacl কমান্ডের আউটপুট থেকে প্রদর্শিত ডিরেক্টরি/শেয়ার/প্রজেক্ট 1/প্রতিবেদনে পড়ার/লেখার (rw) অনুমতিগুলি পড়েছে।

এসিএল তালিকাগুলি সম্পর্কে আরও তথ্যের জন্য আমাদের নিম্নলিখিত গাইডগুলি পরীক্ষা করে দেখুন।

  1. ব্যবহারকারী/গোষ্ঠীগুলির জন্য ডিস্ক কোটা সেটআপ করতে কীভাবে ACLs (অ্যাক্সেস কন্ট্রোলের তালিকা) ব্যবহার করবেন
  2. নেটওয়ার্ক শেয়ারগুলি মাংসে এসিএল (অ্যাক্সেস কন্ট্রোলের তালিকা) কীভাবে ব্যবহার করবেন

এখন একটি ডিরেক্টরিতে পঠন/লেখার অ্যাক্সেস নির্ধারণের দ্বিতীয় পদ্ধতিটি দেখি।

ডিরেক্টরিতে ব্যবহারকারীর পড়তে/লেখার অ্যাক্সেস দিতে গ্রুপগুলি ব্যবহার করে

১. যদি ব্যবহারকারীটির মধ্যে ইতিমধ্যে একটি ডিফল্ট ব্যবহারকারী গোষ্ঠী থাকে (সাধারণত ব্যবহারকারী নাম হিসাবে একই নামের সাথে থাকে) তবে কেবল ডিরেক্টরিটির গ্রুপের মালিককে পরিবর্তন করুন।

# chgrp tecmint /shares/project1/reports

বিকল্পভাবে, একাধিক ব্যবহারকারীর জন্য একটি নতুন গোষ্ঠী তৈরি করুন (যাঁকে নির্দিষ্ট ডিরেক্টরিতে পড়ার/লেখার অনুমতি দেওয়া হবে), নিম্নলিখিত হিসাবে। তবে এটি একটি ভাগ করা ডিরেক্টরি তৈরি করবে:

# groupadd projects

2. তারপরে টেকমিন্ট ব্যবহারকারী প্রকল্পগুলিতে যুক্ত করুন:

# usermod -aG projects tecmint	    # add user to projects
# groups tecmint	            # check users groups

৩. ডিরেক্টরিতে থাকা গ্রুপের মালিককে প্রকল্পগুলিতে পরিবর্তন করুন:

# chgrp	projects /shares/project1/reports

৪. এখন গ্রুপের সদস্যদের জন্য পঠন/লেখার অ্যাক্সেস সেট করুন:

# chmod -R 0760 /shares/projects/reports
# ls  -l /shares/projects/	    #check new permissions

এটাই! এই টিউটোরিয়ালে, আমরা আপনাকে লিনাক্সের একটি নির্দিষ্ট ডিরেক্টরিতে কোনও ব্যবহারকারীর পড়ার/লেখার অ্যাক্সেস দেওয়ার উপায় দেখিয়েছি। যদি কোনও সমস্যা থাকে তবে নীচের মন্তব্য বিভাগের মাধ্যমে জিজ্ঞাসা করুন।