টুল
গাইড

chmod অনুমতি ক্যালকুলেটর

ডেভ

chmod অক্টাল, প্রতীকী এবং 3×3 অনুমতি ম্যাট্রিক্সের মধ্যে রূপান্তর করুন — লাইভ, ত্রিমুখী সিঙ্ক.

100% ক্লায়েন্ট-সাইড কোনো ব্যাকএন্ড নেই

দূরবর্তী URL আনা হয় না; আপনার JSON সরাসরি পেস্ট করুন।

অনুমতি বিট
পড়া (4) লেখা (2) সম্পাদন (1) অঙ্ক
মালিক
0
গ্রুপ
0
অন্যান্য
0
বিশেষ বিট (উপসর্গ)
$ chmod 0000 file
প্রতীকী: a=
এই পৃষ্ঠায়

chmod ক্যালকুলেটার কী?#

chmod হলো Unix কমান্ড যা একটি ফাইল বা ডিরেক্টরিতে পড়া, লেখা এবং সম্পাদনের অনুমতি সেট করে। এর অনুমতি মডেল হলো তিনটি গ্রুপ — মালিক, গ্রুপ, অন্যান্য — প্রতিটিতে তিনটি চালু/বন্ধ বিট: পড়া (4), লেখা (2), সম্পাদন (1), যা 0 থেকে 7 পর্যন্ত একটি একক অঙ্কে যোগ হয়। তিনটি অঙ্ক স্ট্যাক করুন এবং আপনি কমান্ড লাইনে যে অক্টাল মোডটি টাইপ করেন তা পান: 755 মানে “মালিক পড়া+লেখা+সম্পাদন (7), গ্রুপ পড়া+সম্পাদন (5), অন্যান্য পড়া+সম্পাদন (5)”। এছাড়াও একটি ঐচ্ছিক চতুর্থ বিশেষ প্রিফিক্স অঙ্ক আছে setuid, setgid এবং sticky বিটের জন্য।

একটি ক্যালকুলেটর এখানে সত্যিই কার্যকর হওয়ার কারণ হলো অনুমতি ম্যাট্রিক্স (আপনি একটি ফাইল ম্যানেজারে যে চেকবক্সগুলো টিক দেন), অক্টাল সংখ্যা (755), এবং প্রতীকী স্ট্রিংয়ের (rwxr-xr-x, যা ls -l প্রিন্ট করে) মধ্যে ত্রিমুখী সমতুল্যতা। বেশিরভাগ মানুষ এই উপস্থাপনাগুলোর একটি ভালোভাবে শেখে এবং বাকি দুটিতে হোঁচট খায়। এই পৃষ্ঠাটি তিনটিকেই সিঙ্কে রাখে: যেকোনো একটি পরিবর্তন করুন এবং বাকি দুটি তাৎক্ষণিকভাবে আপডেট হয়, এবং মেলানো chmod কমান্ড লাইনটি আপনার জন্য একত্রিত করা হয়।

এটি গুরুত্বপূর্ণ কারণ একটি ভুল অনুমতি বিট হলো একটি ডিপ্লয়মেন্ট ভাঙার সবচেয়ে সাধারণ উপায়গুলোর একটি — এমন একটি ডিরেক্টরি যা ওয়েব সার্ভার পড়তে পারে না, একটি প্রাইভেট কী যা খুব খোলা এবং SSH দ্বারা প্রত্যাখ্যাত হয়, একটি এক্সিকিউটেবল যা তার x বিট হারিয়েছে। 755 পড়া এবং জানা যে এটি “world-readable, গ্রুপ এবং অন্যান্য লেখা ছাড়া ট্রাভার্স করতে পারে” বোঝায় এমন একটি দক্ষতা এই টুলটি অনুবাদ লাইভ দেখানোর মাধ্যমে প্রশিক্ষণ দেয়।

কীভাবে ব্যবহার করবেন#

  1. আপনার আগে থেকে যে উপস্থাপনা আছে সেখান থেকে কাজ করুন:
    • অনুমতি ম্যাট্রিক্স-এ চেকবক্সগুলো টিক দিন (3 সারি: মালিক/গ্রুপ/অন্যান্য, 3 কলাম: পড়া/লেখা/সম্পাদন)। প্রতিটি সারির ডানদিকের অঙ্ক কলামটি আপনি টিক দিলে সেই গ্রুপের 0–7 মান দেখায়।
    • অথবা একটি অক্টাল মান টাইপ করুন (1–4 অঙ্ক, 0o প্রিফিক্স গৃহীত, যেমন 755, 0644, 0o600)।
    • অথবা একটি প্রতীকী মান টাইপ করুন (rwxr-xr-x, কমা ফর্ম rwx,r-x,r-x, বা একটি chmod ক্লজ যেমন u=rw,go=r)।
  2. আপনার যদি বিশেষ বিট প্রয়োজন হয়, বিশেষ বিট ফিল্ডসেটে setuid, setgid, বা sticky টিক দিন। এগুলো প্রতীকী ফর্মে তাদের মালিকের সম্পাদন স্লট দখল করে: setuid/setgid-এর জন্য s/S, sticky-এর জন্য t/T
  3. ফলাফল কার্ড পড়ুন:
    • একত্রিত কমান্ড লাইন, $ chmod <octal> file, কপি করার জন্য প্রস্তুত।
    • প্রতীকী ফর্ম, যেমন u=rwx,go=rx
    • প্রতি-গ্রুপ বিশ্লেষণ যা প্রতিটি কার অঙ্ক এবং তাদের পড়া/লেখা/সম্পাদন অনুদান দেখায়।
  4. কমান্ড লাইনটি ধরতে কপি ক্লিক করুন।
  5. স্ট্যাটাস লাইন পার্সটি নিশ্চিত করে বা একটি অক্টাল বা প্রতীকী ইনপুট অবৈধ ছিল কি না তা রিপোর্ট করে।

প্রধান বৈশিষ্ট্য#

  • ত্রিমুখী লাইভ সিঙ্ক। ম্যাট্রিক্স, অক্টাল এবং প্রতীকী সবগুলো একে অপরকে আপডেট করে, তাই আপনি যা জানেন তা লিখুন এবং যা প্রয়োজন তা পড়ুন।
  • বিশেষ বিট সঠিকভাবে সম্পন্ন। setuid, setgid এবং sticky বিটটি ক্ষতিহীনভাবে পরিচালিত হয়, ls যে ছোট হাতের/বড় হাতের সম্পাদন-স্লট সংকেত (s বনাম S, t বনাম T) ব্যবহার করে তা সহ।
  • ক্যানোনিকাল ৪-অঙ্কের অক্টাল। আউটপুট সর্বদা ৪ অঙ্ক (0755, 4755, 0000), chmod এবং stat যেভাবে মোড প্রদর্শন করে তার সাথে মিলে — বিশেষ বিট সেট থাকলে কখনো একটি অস্পষ্ট ৩-অঙ্কের ফর্ম নয়।
  • ক্লজ-ফর্ম প্রতীকী। একটি shell গ্রহণ করে এমন পরম-অ্যাসাইনমেন্ট ফর্ম নির্গত করে (u=rw,go=rx), সংক্ষিপ্ততার জন্য অভিন্ন সন্নিহিত গ্রুপগুলোকে একত্রিত করে, এবং বিশেষ বিটগুলোকে u+s / g+s / +t হিসেবে যোগ করে।
  • সহনশীল ইনপুট পার্সিং। 755, 0644, 0o600, ৯-অক্ষরের ছবি, কমা-বিভাজিত ভেরিয়েন্ট, এবং chmod ক্লজগুলো (u=rwx,go=rx, u+rwx,go-w) গ্রহণ করে।

ব্যবহারের উদাহরণ#

একটি ডিপ্লয়ড ওয়েব ডিরেক্টরিতে সবচেয়ে সাধারণ মোড। অক্টাল ফিল্ডে 755 টাইপ করুন। ম্যাট্রিক্স মালিক পড়া+লেখা+সম্পাদন, গ্রুপ পড়া+সম্পাদন, অন্যান্য পড়া+সম্পাদন টিক দেয়; প্রতীকী ফিল্ড rwxr-xr-x দেখায়; এবং ফলাফল কার্ড পড়ে:

$ chmod 755 file
Symbolic: u=rwx,go=rx

বিশ্লেষণে মালিক 7 (পড়া, লেখা, সম্পাদন), গ্রুপ 5 (পড়া, সম্পাদন), অন্যান্য 5 (পড়া, সম্পাদন) তালিকাভুক্ত। এটি ডিরেক্টরি এবং এক্সিকিউটেবল স্ক্রিপ্টের জন্য প্রমিল মোড: মালিক সবকিছু করতে পারে, বাকি সবাই পড়তে এবং ট্রাভারস করতে পারে কিন্তু পরিবর্তন করতে পারে না।

এখন এটিকে 644-এর সাথে তুলনা করুন — একটি সাধারণ পরিবেশিত ফাইলের জন্য নিরাপদ মোড। প্রতীকীটি rw-r--r-- হয়ে যায়, এবং কমান্ড হলো $ chmod 644 file: মালিক পড়তে এবং লিখতে পারে, গ্রুপ এবং অন্যান্য কেবল পড়তে পারে, এবং গুরুত্বপূর্ণভাবে কারোরই সম্পাদন নেই (তাই একটি ডাউনলোড করা ফাইল দুর্ঘটনাক্রমে চলবে না)। একটি প্রাইভেট SSH কী-এর জন্য, আপনি 600 (rw-------) টাইপ করবেন, একমাত্র মোড ssh গ্রহণ করবে।

একটি বিশেষ-বিট উদাহরণ: একটি বাইনারি যা অবশ্যই তার মালিকের সুযোগ-সুবিধার সাথে চলতে হবে। 4755 টাইপ করুন এবং প্রতীকী স্লট rwsr-xr-x হয়ে যায় — মালিকের সম্পাদন অবস্থানে s লক্ষ্য করুন, setuid চিহ্নিত করে। কমান্ড লাইন $ chmod 4755 file পড়ে, এবং শীর্ষস্থ 4 হলো বিশেষ প্রিফিক্স অঙ্ক (setuid = 4) যা ৩-অঙ্কের ফর্ম প্রকাশ করতে পারে না — যা ঠিক কারণ এই টুলটি সর্বদা চারটি অঙ্ক নির্গত করে।

প্রশ্নোত্তর#

755 এবং 0755-এর মধ্যে পার্থক্য কী?#

কমান্ড লাইনে সেগুলো সমতুল্য — chmod 755 এবং chmod 0755 একই মোড তৈরি করে, কারণ শীর্ষস্থ 0 সহজভাবে বোঝায় “কোনো বিশেষ বিট নেই”। এই টুলটি সর্বদা চারটি অঙ্ক (0755) প্রদর্শন করে যাতে বিশেষ-বিট অবস্থানটি দৃশ্যমান এবং stat এবং ls যেভাবে মোড রিপোর্ট করে তার সাথে সামঞ্জস্যপূর্ণ। আপনি যখন কমান্ড লাইন কপি করেন, প্রচলিত $ chmod 755 file ফর্মটি ব্যবহার করা হয় কারণ মানুষ তাই টাইপ করে।

প্রতীকী আউটপুটে s, S, t, এবং T কী বোঝায়?#

সেগুলো হলো একটি সম্পাদন স্লট দখলকারী বিশেষ বিট। ছোট হাতের s (মালিক বা গ্রুপ অবস্থানে) মানে setuid/setgid এবং সম্পাদন চালু; বড় হাতের S মানে বিটটি সেট কিন্তু সম্পাদন বন্ধ। ছোট হাতের t (অন্যান্য অবস্থানে) মানে sticky এবং সম্পাদন চালু; বড় হাতের T মানে sticky সেট, সম্পাদন বন্ধ। এই বড়-হাতের-মানে-কোনো-সম্পাদন-নয় রীতিটি হলো কীভাবে ls একটি অতিরিক্ত কলাম ছাড়াই দুটি অবস্থা আলাদা করে।

আমি যখন আসলে chmod চালাই তখন আমার অক্টাল নাকি প্রতীকী ব্যবহার করা উচিত?#

উভয়ই কাজ করে, কিন্তু ভিন্নভাবে আচরণ করে। অক্টাল (chmod 755 file) মোডটিকে পরমভাবে সেট করে — প্রতিটি বিট ঠিক আপনি যা টাইপ করেছেন তাতে সেট করা হয়। প্রতীকী (chmod u+x file) বর্তমান মোড সম্পাদনা করে — এটি কেবল আপনার উল্লেখ করা বিটগুলো পরিবর্তন করে এবং বাকিগুলো একা ছেড়ে দেয়। একটি পরিচিত চূড়ান্ত অবস্থা চাইলে অক্টাল ব্যবহার করুন (ডিপ্লয় স্ক্রিপ্ট, Dockerfiles); অন্যগুলোকে বিরক্ত না করে একটি অনুমতি টানতে চাইলে প্রতীকী ব্যবহার করুন।

SSH কেন আমার প্রাইভেট কী-কে একটি “bad permissions” ত্রুটি দিয়ে প্রত্যাখ্যান করে?#

কারণ ssh-এর প্রয়োজন প্রাইভেট কীগুলোর মোড 0600 (কেবল মালিক পড়া/লেখা) এবং এটি আরও খোলা কিছুকে অনিরাপদ হিসেবে প্রত্যাখ্যান করবে। আপনার কী যদি 0644 হয় বা গ্রুপ/অন্যান্য লেখা থাকে, ssh এটিকে ট্যাম্পারযোগ্য হিসেবে বিবেচনা করে এবং এটি ব্যবহার করতে অস্বীকার করে। $ chmod 600 id_ed25519 দিয়ে সেট করুন এবং ত্রুটিটি চলে যায়। আপনি কমান্ড চালানোর আগে এখানে নির্দিষ্ট মোডটি যাচাই করতে পারেন।