PAM(8) دستورات مدیریت سیستم PAM(8)

pam - مروری بر چارچوب ماژولهای احراز هویت لینوکس

بخش pam اصول عملکرد، انواع ماژولها (auth, account, session, password) و جریانهای کنترلی چارچوب احراز هویت لینوکس را شرح میدهد.

این راهنما به منظور ارائه یک مقدمه سریع برای Linux-PAM فراهم شده است. برای اطلاعات بیشتر، خواننده به Linux-PAM system administrators' guide ارجاع داده می‌شود.

Linux-PAM مجموعه‌ای از کتابخانه‌ها است که وظایف احراز هویت برنامه‌های کاربردی (سرویس‌ها) را در سیستم بر عهده دارد. این کتابخانه یک رابط عمومی پایدار (رابط برنامه‌نویسی کاربردی - API) فراهم می‌کند که برنامه‌های اعطاکننده امتیاز (مانند login(1) و su(1)) برای انجام وظایف استاندارد احراز هویت به آن متوسل می‌شوند.

ویژگی اصلی رویکرد PAM این است که ماهیت احراز هویت به صورت پویا قابل پیکربندی است. به عبارت دیگر، مدیر سیستم آزاد است تا تعیین کند برنامه‌های ارائه‌دهنده سرویس چگونه کاربران را احراز هویت کنند. این پیکربندی پویا توسط محتوای تک‌فایل پیکربندی Linux-PAM به نام /etc/pam.conf تنظیم می‌شود. به عنوان یک جایگزین و به صورت ارجح، پیکربندی می‌تواند توسط فایل‌های پیکربندی جداگانه واقع در پوشه pam.d تنظیم گردد. وجود این دایرکتوری باعث می‌شود که Linux-PAM فایل /etc/pam.conf را نادیده بگیرد.

فایل‌های پیکربندی PAM ارائه‌شده توسط توزیع ممکن است در دایرکتوری سیستمی /usr/lib/pam.d/ یا یک دایرکتوری خاص توزیع به جای دایرکتوری پیکربندی دستگاه /etc/pam.d/ نصب شده باشند. اگر فایل پیکربندی دستگاه یافت نشود، از فایل ارائه‌شده توسط توزیع استفاده می‌شود. تمام فایل‌های موجود در /etc/pam.d/ فایل‌های هم‌نام در سایر دایرکتوری‌ها را بازنویسی (override) می‌کنند.

از دیدگاه مدیر سیستم که این راهنما برای او ارائه شده است، درک رفتار داخلی کتابخانه Linux-PAM اهمیت اولیه‌ای ندارد. نکته مهمی که باید بدانید این است که فایل(های) پیکربندی ارتباط میان برنامه‌ها (سرویس‌ها) و ماژول‌های قابل اتصال احراز هویت (PAMها) که وظایف واقعی احراز هویت را انجام می‌دهند را تعریف می‌کنند.

Linux-PAM وظایف احراز هویت را به چهار گروه مدیریتی مستقل تفکیک می‌کند: مدیریت account (حساب)؛ مدیریت authentication (احراز هویت)؛ مدیریت password (گذرواژه)؛ و مدیریت session (نشست). (مخفف‌های استفاده شده برای این گروه‌ها در فایل پیکربندی مشخص شده‌اند.)

به بیان ساده، این گروه‌ها جنبه‌های مختلف درخواست معمول یک کاربر برای یک سرویس محدود شده را مدیریت می‌کنند:

account - انواع سرویس‌های تایید حساب را ارائه می‌دهد: آیا اعتبار گذرواژه کاربر منقضی شده است؟؛ آیا این کاربر مجاز به دسترسی به سرویس درخواستی هست؟

authentication - احراز هویت کاربر و تنظیم گواهی‌های اعتباری کاربر. معمولاً این کار از طریق درخواست چالش-پاسخ صورت می‌گیرد که کاربر باید به آن پاسخ دهد: «اگر همان کسی هستید که ادعا می‌کنید، لطفاً گذرواژه خود را وارد کنید». همه احراز هویت‌ها از این نوع نیستند؛ طرح‌های احراز هویت مبتنی بر سخت‌افزار (مانند استفاده از کارت‌های هوشمند و دستگاه‌های بیومتریک) نیز وجود دارند که با ماژول‌های مناسب، می‌توانند بدون مشکل جایگزین رویکردهای استانداردتر شوند - این نشان‌دهنده انعطاف‌پذیری بالای Linux-PAM است.

password - مسئولیت این گروه، به‌روزرسانی سازوکارهای احراز هویت است. به طور معمول، چنین سرویس‌هایی با گروه auth پیوند محکمی دارند. برخی سازوکارهای احراز هویت به خوبی با چنین قابلیتی به‌روزرسانی می‌شوند. دسترسی مبتنی بر گذرواژه استاندارد یونیکس یک مثال بارز است: «لطفاً یک گذرواژه جایگزین وارد کنید».

session - این گروه از وظایف اموری را پوشش می‌دهد که باید قبل از ارائه یک سرویس و پس از خروج از آن انجام شوند. چنین وظایفی شامل نگهداری ردپای حسابرسی (audit trails) و سوار کردن (mount) دایرکتوری خانگی کاربر است. گروه مدیریتی session اهمیت زیادی دارد زیرا هم قلاب (hook) آغازین و هم پایانی را برای ماژول‌ها فراهم می‌کند تا بر سرویس‌های در دسترس کاربر تاثیر بگذارند.

/etc/pam.conf

فایل پیکربندی اصلی

/etc/pam.d

دایرکتوری پیکربندی Linux-PAM. به طور کلی، اگر این دایرکتوری وجود داشته باشد، فایل /etc/pam.conf نادیده گرفته می‌شود.

/usr/lib/pam.d

دایرکتوری پیکربندی ارائه‌دهنده (توزیع) Linux-PAM. فایل‌های موجود در /etc/pam.d بر فایل‌های هم‌نام در این دایرکتوری اولویت دارند و آن‌ها را بازنویسی می‌کنند.

به طور معمول خطاهای ایجاد شده توسط مجموعه کتابخانه‌های Linux-PAM در syslog(3) ثبت می‌شوند.

استاندارد DCE-RFC 86.0، اکتبر ۱۹۹۵. شامل ویژگی‌های اضافی است، اما سازگاری رو به عقب با این RFC را حفظ می‌کند.

pam(3), pam_authenticate(3), pam_sm_setcred(3), pam_strerror(3), PAM(8)

مه ۲۰۲۵ Linux-PAM