মালিক, গ্রুপ এবং অন্যান্যদের জন্য read, write এবং execute টিক দিন, অক্টাল chmod সংখ্যা, সিম্বলিক rwx স্ট্রিং এবং একটি কমান্ড পেতে যা সরাসরি টার্মিনালে পেস্ট করা যায়।
সংখ্যা পেতে বক্সগুলো টিক দিন, বা এটি আসলে কী অনুমতি দেয় তা দেখতে সংখ্যাটি টাইপ করুন। অনুমতি তিনটি পক্ষের জন্য প্রযোজ্য - ফাইল মালিক, মালিকানা গ্রুপ এবং বাকি সবাই - এবং প্রতিটি পক্ষ স্বাধীনভাবে read, write এবং execute পায়। গ্রিড টগল করুন বা অক্টাল মান টাইপ করুন; দুটি সামঞ্জস্যপূর্ণ থাকে।
কে
Read (4)
Write (2)
Execute (1)
মালিক (u)
গ্রুপ (g)
অন্যান্য (o)
–
ইউনিক্স অনুমতি বিট পড়া ও লেখা
তিনটি ট্রায়াড, প্রতিটিতে তিনটি বিট
প্রতিটি ইউনিক্স ফাইলে তিনটি গ্রুপে সাজানো নয়টি অনুমতি বিট থাকে। প্রথম ট্রায়াড ফাইল মালিকের, দ্বিতীয়টি ফাইলের গ্রুপের, এবং তৃতীয়টি সিস্টেমের বাকি সবার। প্রতিটি ট্রায়াডের মধ্যে বিটগুলো read, write এবং execute বোঝায় এবং যথাক্রমে 4, 2 এবং 1 মূল্যবান। আপনি চাওয়া বিটের মান যোগ করলে 0 থেকে 7 পর্যন্ত একটি সংখ্যা পাওয়া যায়, তাই অনুমতি ঐতিহ্যগতভাবে তিনটি অক্টাল সংখ্যা হিসেবে লেখা হয়।
755-এর মতো সংখ্যার পেছনের পুরো কৌশল এটাই। মালিক সংখ্যা 7, বা 4 + 2 + 1, তাই মালিক read, write এবং execute করতে পারে। গ্রুপ এবং অন্যান্য সংখ্যা দুটিই 5, বা 4 + 1, তাই তারা read এবং execute করতে পারে কিন্তু পরিবর্তন নয়। সিম্বলিকভাবে একই মান লেখা হয় rwxr-xr-x, যা ls -l প্রিন্ট করে ফাইলের ধরন অক্ষরের পরে।
তিনটি ক্রিয়া ডিরেক্টরিতে সামান্য ভিন্ন অর্থ বহন করে। Read আপনাকে এর ভেতরের নাম তালিকাভুক্ত করতে দেয়, write আপনাকে এন্ট্রি তৈরি ও মুছতে দেয়, এবং execute আপনাকে পরিচিত একটি পাথে পৌঁছাতে এর ভেতরে প্রবেশ করতে দেয়। read আছে কিন্তু execute নেই এমন একটি ডিরেক্টরি প্রায় অকেজো: আপনি নাম দেখতে পারেন কিন্তু পেছনের কিছু খুলতে পারেন না।
আপনি আসলে যে মানগুলো টাইপ করবেন
কয়েকটি সমন্বয় বেশিরভাগ বাস্তব কাজ কভার করে। 644 (rw-r--r--) ডকুমেন্ট বা সোর্স ফাইলের স্বাভাবিক মোড: মালিক সম্পাদনা করে, বাকি সবাই পড়ে। 755 (rwxr-xr-x) ডিরেক্টরি বা এক্সিকিউটেবল স্ক্রিপ্টের স্বাভাবিক মোড, কারণ উভয়েরই ব্যবহারযোগ্য হতে execute বিট প্রয়োজন। 600 (rw-------) একটি ফাইল মালিকের কাছে ব্যক্তিগত রাখে, যা OpenSSH প্রাইভেট কীগুলোর জন্য জোর দেয়, এবং 700 ডিরেক্টরির জন্য একই কাজ করে।
অন্যদের কাছে লেখার অ্যাক্সেস দেয় এমন মোডগুলো দ্বিতীয়বার দেখার মতো। 777 মেশিনের প্রতিটি অ্যাকাউন্টকে ফাইলটি ওভাররাইট বা মুছতে দেয়, এবং এটি প্রায় কখনোই সঠিক উত্তর নয় - এটি অনুমতি ত্রুটি বোঝা ছাড়াই অদৃশ্য করার দ্রুততম উপায়। ওয়েব সার্ভার আপলোড ডিরেক্টরিতে লিখতে না পারলে, আসল সমাধান সাধারণত chown দিয়ে মালিকানা ব্যবহারকারী বা গ্রুপ পরিবর্তন করা, ফাইলটি সবার কাছে খুলে দেওয়া নয়।
অনুমতি umask-এর সাথেও যোগাযোগ করে। নতুন ফাইল umask মান দ্বারা কমানো একটি ডিফল্ট মোডে তৈরি হয়, সাধারণত 022, তাই সদ্য তৈরি ফাইলটি 666-এর বদলে 644 হিসেবে আসে।
Setuid, setgid এবং স্টিকি বিট
পরিচিত তিনটি সংখ্যার সামনে একটি চতুর্থ সংখ্যা বসতে পারে, এবং এটি তিনটি বিশেষ বিট বহন করে: setuid (4), setgid (2) এবং স্টিকি বিট (1)। এগুলো প্রোগ্রামটি কে হিসেবে চলে এবং ডিরেক্টরি ভেতরে তৈরি ফাইলগুলোকে কীভাবে ব্যবহার করে তা পরিবর্তন করে।
একটি এক্সিকিউটেবলে setuid এটি লঞ্চকারী ব্যবহারকারীর বদলে ফাইল মালিকের বিশেষাধিকার নিয়ে চালায়। এভাবেই passwd একটি অননুমোদিত ব্যবহারকারী চালানোর সময়ও সিস্টেম-ব্যাপী ফাইল আপডেট করতে পারে, এবং এ কারণেই setuid বাইনারিগুলো এত যত্ন সহকারে অডিট করা হয় - একটি বাগ মালিকের বিশেষাধিকারের সরাসরি পথ। Setgid গ্রুপের জন্য একই কাজ করে। ডিরেক্টরিতে, setgid-এর একটি বন্ধুত্বপূর্ণ অর্থ আছে: ভেতরে তৈরি নতুন ফাইল ডিরেক্টরির গ্রুপ উত্তরাধিকার সূত্রে পায়, যা একটি শেয়ার্ড প্রজেক্ট ফোল্ডারকে সামঞ্জস্যপূর্ণ রাখে যে কেউ এতে লিখুক না কেন।
স্টিকি বিট /tmp-এ সবচেয়ে পরিচিত, সাধারণত 1777 লেখা হয়। এটি যেকোনোকে ডিরেক্টরিতে ফাইল তৈরি করতে দেয়, তবে মুছে ফেলা প্রতিটি ফাইলের নিজস্ব মালিকের মধ্যে সীমাবদ্ধ রাখে, তাই ব্যবহারকারীরা একে অপরের সাময়িক ফাইল সরাতে পারে না। দীর্ঘ তালিকায় এই বিটগুলো execute অক্ষরটি প্রতিস্থাপন করে: x-এর জায়গায় s মানে setuid বা setgid সেট করা আছে, বড় হাতের S মানে বিট সেট আছে কিন্তু execute নেই, এবং t স্টিকি বিট চিহ্নিত করে।
FAQ
755 আসলে কী বোঝায়?
মালিক read, write এবং execute করতে পারে; গ্রুপ এবং বাকি সবাই read এবং execute করতে পারে কিন্তু পরিবর্তন নয়। এটি ডিরেক্টরি এবং অন্যান্য ব্যবহারকারীরা চালাতে পারে এমন স্ক্রিপ্টের স্বাভাবিক মোড।
আমার স্ক্রিপ্ট পাঠযোগ্য কিন্তু permission denied দেখায়। কেন?
ফাইল পড়া এবং চালানো আলাদা বিট। চালানোর চেষ্টা করা ব্যবহারকারীর জন্য স্ক্রিপ্টের execute বিট দরকার, তাই 644 যথেষ্ট নয় - 755 ব্যবহার করুন, বা স্পষ্টভাবে এর ইন্টারপ্রেটার দিয়ে চালান।
777 কি কখনো সঠিক পছন্দ?
শেয়ার্ড বা ইন্টারনেট-মুখী মেশিনে প্রায় কখনোই না, কারণ এটি যেকোনো স্থানীয় অ্যাকাউন্টকে ফাইলটি পরিবর্তন বা মুছতে দেয়। একটি সার্ভিস কোথাও লিখতে না পারলে, মোড প্রশস্ত করার বদলে মালিক বা গ্রুপ পরিবর্তন করুন।
644 এবং 0644-এর মধ্যে পার্থক্য কী?
নয়টি স্ট্যান্ডার্ড বিটের জন্য কিছুই না। অগ্রণী শূন্য হলো বিশেষ-বিট সংখ্যা এবং এটি 0 সেট করলে setuid, setgid এবং স্টিকি বিট পরিষ্কার হয়। অনেকে অভ্যাসবশত চারটি সংখ্যা লেখেন।
SSH আমার প্রাইভেট কী ব্যবহার করতে অস্বীকার করে কেন?
OpenSSH একটি প্রাইভেট কী প্রত্যাখ্যান করে যা অন্য ব্যবহারকারীরা পড়তে পারে। কীটি 600 এবং অন্তর্ভুক্ত .ssh ডিরেক্টরিটি 700 সেট করুন, সতর্কতা চলে যাবে।
chmod কি macOS এবং Linux-এ একই আচরণ করে?
সংখ্যাগত মোডগুলো অভিন্ন। পার্থক্যগুলো এক্সটেন্ডেড অ্যাট্রিবিউট ও ACL-এর আশেপাশে দেখা যায়, যা macOS অনুমতি স্ট্রিংয়ের পরে `+` দিয়ে রিপোর্ট করে এবং যা একা chmod পরিচালনা করে না।