একসাথে পিএএম মডিউলগুলি শৃঙ্খলাবদ্ধ করে এটি করা সম্ভব। তবে আমি কোনও বিশদে যাওয়ার আগে:
ভুলভাবে PAM কনফিগার করা আপনার সিস্টেমে লগইন করতে বাধা দিতে পারে W
ধন্যবাদ, আপনি সর্বদা একক ব্যবহারকারী মোডে বুট আপ করতে পারেন এবং সমস্যাটি সমাধান করতে পারেন, তবে কেবল সতর্ক হতে হবে যে পিএএম এমন কিছু নয় যা আপনি প্রয়োজনের চেয়ে আরও বেশি ঝামেলা করতে চান।
যাই হোক, এটা পিছনে ধারণা এটি নিশ্চিত করতে যে সারিবদ্ধ পিএএম মডিউল ব্যবহার করা সম্ভব হয় pam-google-authenticator
, pam_unix
(এই চেক আপনার পাসওয়ার্ড) এবং সার্টিফিকেট মডিউল আপনাকে অ্যাক্সেসের মঞ্জুরি দিতে সফল করতে হবে। ডিফল্টরূপে, পিএএম কনফিগার করা হয়েছে যে কোনও প্রমাণীকরণ মডিউল আপনাকে প্রমাণীকরণের অনুমতি দেয়, অন্যদের এড়িয়ে চলে।
/Etc/pam.d/common-auth এ, আপনি উপরের কাছাকাছি একটি লাইন দেখতে পাবেন যা নীচের মত দেখাচ্ছে:
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
এটি পামকে জানিয়েছে যে pam_unix.so
সফল হওয়া উচিত , এটি পরবর্তী দুটি নিয়ম (যা সাধারণত অন্য প্রমাণীকরণ মডিউল এবং তারপরে pam_deny.so
) এড়িয়ে যায় এবং alচ্ছিক মডিউলগুলিতে এগিয়ে যায়। যাইহোক, মডিউলটি যদি ব্যর্থ হয় তবে তা উপেক্ষা করা হবে এবং নিয়ন্ত্রণটি চেইনের পরবর্তী মডিউলে চলে যাবে। এটি প্রতিটি প্রমাণীকরণের মডিউল অবিরত অবিরত অবধি অবধি অবধি অবধি চালু থাকে না যে পর্যন্ত না হয় কন্ট্রোলটি alচ্ছিক ব্লকে চলে যায়, বা PAM পাম_ডেনি.কে আঘাত করে এবং ঠিক সেখানে ব্যর্থ হয়।
এই নিশ্চিত করার leveraged যাবে pam-google-authenticator
, pam_unix.so
এবং আপনার শংসাপত্র পিএএম মডিউল আপনাকে অ্যাক্সেসের মঞ্জুরি দিতে সফল করতে হবে। আমি গুগল প্রমাণীকরণকারী মডিউল বা আপনি যে শংসাপত্রের মডিউলটি ব্যবহার করছেন তার নাম জানি না, তবে আপনার সেগুলি আপনার সাধারণ-প্রমাণীকরণের ফাইলটিতে সন্ধান করতে সক্ষম হওয়া উচিত। সুতরাং শীর্ষে এই জাতীয় কিছু রেখে:
auth requisite pam_unix.so nullok_secure
auth requisite pam_google_authenticator.so
auth requisite pam_certificate_auth.so
auth [success=<n>] pam_permit.so
<n>
এখানে pam_permit.so মডিউল এবং পরবর্তী মডিউলগুলির মধ্যে মডিউলগুলির সংখ্যার সাথে প্রতিস্থাপন করা pam_permit.so
- অন্য কথায় এটি শীর্ষস্থানীয় লেখক মডিউলের [সাফল্য = এন ডিফল্ট = উপেক্ষা করুন] কোড + 1 তে সেট করা উচিত This এই বাক্য গঠনটি খানিকটা মজার , তবে উপরোক্ত মডিউলগুলি সাফল্যের পরে মূলত অ্যাথ মডিউলগুলি এড়িয়ে যায়।
অবশ্যই, আপনি কীভাবে কেবল আপনার ব্যবহারকারী অ্যাকাউন্টে এই তিন-পদক্ষেপের প্রমাণীকরণকে সীমাবদ্ধ করবেন তা ভাবতে পারেন। এটি একটি pam_succeed_if.so
মডিউল দিয়ে সম্পন্ন করা যেতে পারে এবং উপরে বর্ণিত তিন-ধাপের লেখক ব্লকের উপরে সন্নিবেশ করা উচিত:
auth [success=ignore default=4] pam_succeed_if.so user = <username>
যেখানে <username>
আপনার ব্যবহারকারীর নাম দ্বারা প্রতিস্থাপন করা হয়। এই লাইনটি সহজভাবে বলেছে যে পাম_সুসিড_আইফ.সেই সফল হওয়া উচিত (ওরফে আপনার ব্যবহারকারী নামটি সেই লাইনের সাথে ব্যবহারকারীর সাথে মেলে) তবে পামের পরবর্তী মডিউলগুলি নিয়ে এগিয়ে যাওয়া উচিত, যা তিন ধাপের লেখার মডিউল। অন্যথায়, পিএএমের আসল মডিউলগুলিতে ঝাঁপ দেওয়া উচিত, যা এটির থেকে 4 মডিউল দূরে।
একাধিক জিনিস মেলাতে উদাহরণস্বরূপ একটি নির্দিষ্ট ব্যবহারকারীর নাম সহ একটি গোষ্ঠীর সদস্যতার জন্য, একাধিক লাইন অবশ্যই ব্যবহার করা উচিত, উদাহরণস্বরূপ:
auth [success=1 default=ignore] pam_succeed_if.so user = <username>
auth [success=ignore default=4] pam_succeed_if.so user ingroup <group>
এর যে কোনও কাজ করার আগে, আমি সাধারণ-প্রমাণীকরণ ফাইলটি ব্যাকআপ করব এবং একক ব্যবহারকারী মোড এবং জরুরি অবস্থার ক্ষেত্রে কীভাবে পুরাতন ফাইলটি পুনরুদ্ধার করব তার সাথে নিজেকে পরিচিত করব। এই কনফিগারেশনটি আমার দ্বারা পরীক্ষিত হয়নি, তবে এটি কাজ করা উচিত।
প্রথমবার এটি পরীক্ষার জন্য, একটি রুট শেল বা দুটি খোলা পান এবং কেবল তাদের একা রেখে যান। এগুলি কোনও কিছু ভুল হয়ে যাওয়ার ক্ষেত্রে ফ্যালব্যাক হিসাবে কাজ করে, আপনি ব্যাকআপের সাহায্যে সাধারণ-লেখককে সহজেই প্রতিস্থাপন করতে পারেন। তারপরে, এই পরিবর্তনগুলি করুন। এরপরে, su
আপনার ব্যবহারকারীর অ্যাকাউন্টে লগ ইন করার চেষ্টা করুন - আপনার তিন-পদক্ষেপের প্রমাণীকরণ প্রক্রিয়াটি হওয়া উচিত।
pam_succeed_if.so
মডিউলটির সম্পূর্ণ ডকুমেন্টেশনগুলি http://linux.die.net/man/8/pam_succeed_if এ পাওয়া যাবে