| PAM.CONF(5) | راهنمای Linux-PAM | PAM.CONF(5) |
نام (NAME)
pam.conf, pam.d - فایلها و دایرکتوریهای پیکربندی ماژولهای احراز هویت لینوکس (PAM)
توضیحات (DESCRIPTION)
هنگامی که یک برنامهٔ اعطاکنندهٔ دسترسی و آگاه از PAM شروع به کار میکند، اتصال خود را به رابط برنامهنویسی PAM (یا همان PAM-API) فعال میسازد. این فعالسازی چندین کار را انجام میدهد که مهمترین آنها خواندن فایل(های) پیکربندی است: /etc/pam.conf. به عنوان روشی جایگزین و ترجیح داده شده، پیکربندی میتواند توسط فایلهای پیکربندی مجزا در دایرکتوری pam.d تنظیم شود. وجود این دایرکتوری باعث میشود Linux-PAM فایل /etc/pam.conf را نادیده بگیرد (ignore).
این فایلها فهرست PAMهایی را مشخص میکنند که وظایف احراز هویت مورد نیاز این سرویس را انجام خواهند داد، و همچنین رفتار مناسب PAM-API را در صورتی که هر یک از PAMها با شکست مواجه شوند، تعیین مینمایند.
نحو (Syntax) فایل پیکربندی /etc/pam.conf به شرح زیر است. این فایل از فهرستی از قواعد تشکیل شده است؛ هر قاعده معمولاً در یک خط قرار میگیرد، اما میتواند با یک پایان خط گریز داده شده (Escaped) به صورت `\<LF>' ادامه یابد. کامنتها با نویسهٔ `#' مشخص میشوند و تا انتهای خط امتداد دارند.
قالب هر قاعده، مجموعهای از نشانهها (Tokens) است که با فاصله از هم جدا شدهاند، و سه تای اول نسبت به بزرگی و کوچکی حروف حساس نیستند (Case-insensitive):
service type control module-path module-arguments
نحو فایلهای موجود در دایرکتوری /etc/pam.d/ دقیقاً یکسان است، به جز عدم وجود فیلد service. در این حالت، service همان نام فایل در دایرکتوری /etc/pam.d/ است. این نام فایل باید با حروف کوچک باشد.
یک ویژگی مهم PAM این است که تعدادی از قواعد میتوانند به صورت پشتهای (stacked) روی هم قرار گیرند تا سرویسهای چندین PAM را برای یک وظیفهٔ احراز هویت مشخص ترکیب کنند.
فیلد service معمولاً همان نام آشنای برنامهٔ مربوطه است: login و su نمونههای خوبی هستند. نام سرویس other برای ارائهٔ قواعد پیشفرض (default) رزرو شده است. تنها خطوطی که به سرویس فعلی اشاره دارند (یا در صورت عدم وجود آن، ورودیهای other) به برنامهٔ سرویس مورد نظر مرتبط خواهند شد.
فیلد type گروه مدیریتی است که قاعده به آن مربوط میشود. این فیلد برای تعیین اینکه ماژول بعدی با کدام یک از گروههای مدیریتی مرتبط است به کار میرود. مقادیر معتبر عبارتند از:
account
auth
password
session
اگر مقدار type از لیست بالا با یک نویسهٔ - آغاز شود، در صورتی که بارگذاری ماژول به دلیل موجود نبودن در سیستم امکانپذیر نباشد، کتابخانهٔ PAM خطایی در گزارشهای سیستم ثبت نخواهد کرد. این ویژگی میتواند به ویژه برای ماژولهایی مفید باشد که همیشه روی سیستم نصب نیستند و برای احراز هویت و مجوزدهی صحیح نشست ورود به سیستم ضروری نمیباشند.
فیلد سوم، control، رفتار PAM-API را در صورتی که ماژول در وظیفهٔ احراز هویت خود با شکست مواجه شود، مشخص میکند. دو نوع نحو برای این فیلد کنترل وجود دارد: نحو ساده دارای یک کلمهٔ کلیدی منفرد است؛ نحو پیچیدهتر شامل انتخابی از جفتهای value=action درون کروشه است.
برای نحو ساده (سنتی)، مقادیر معتبر control عبارتند از:
required
requisite
sufficient
optional
include
substack
برای نحو پیچیدهتر، مقادیر معتبر control دارای قالب زیر هستند:
[value1=action1 value2=action2 ...]
جایی که valueN مربوط به کد بازگشتی از تابع فراخوانیشده در ماژولی است که خط برای آن تعریف شده است. این مقدار از میان یکی از موارد زیر انتخاب میشود: success، open_err، symbol_err، service_err، system_err، buf_err، perm_denied، auth_err، cred_insufficient، authinfo_unavail، user_unknown، maxtries، new_authtok_reqd، acct_expired، session_err، cred_unavail، cred_expired، cred_err، no_module_data، conv_err، authtok_err، authtok_recover_err، authtok_lock_busy، authtok_disable_aging، try_again، ignore، abort، authtok_expired، module_unknown، bad_item، conv_again، incomplete و default.
آخرین مورد از اینها، default، بیانگر «تمام valueNهای ذکر نشده به صورت صریح» است. توجه داشته باشید که فهرست کامل خطاهای PAM در /usr/include/security/_pam_types.h موجود است. actionN میتواند یکی از قالبهای زیر را داشته باشد:
ignore
bad
die
ok
done
N (یک عدد صحیح بدون علامت)
reset
اگر اقدام مربوط به یک کد بازگشتی به طور مشخص از طریق نشانهٔ valueN تعریف نشده باشد و مقدار default نیز تعیین نشده باشد، اقدام آن کد بازگشتی به طور پیشفرض bad خواهد بود.
هر یک از چهار کلمهٔ کلیدی: required؛ requisite؛ sufficient؛ و optional، یک عبارت معادل در قالب نحو [...] دارند که به شرح زیر است:
required
requisite
sufficient
optional
module-path یا نام کامل فایل PAM است که باید توسط برنامه استفاده شود (با یک '/' شروع میشود)، یا یک مسیر نسبی از محل پیشفرض ماژولها: /lib/security/ یا /lib64/security/ بسته به معماری سیستم.
module-arguments فهرستی از نشانهها هستند که با فاصله از هم جدا شدهاند و میتوانند برای اصلاح رفتار خاص PAM مورد نظر استفاده شوند. این آرگومانها برای هر ماژول به صورت جداگانه مستندسازی میشوند. توجه داشته باشید که اگر میخواهید فاصلهها را در یک آرگومان بگنجانید، باید آن آرگومان را در کروشه قرار دهید.
squid auth required pam_mysql.so user=passwd_query passwd=mada \
db=eminence [query=select user_name from internet_service \
where user_name='%u' and password=PASSWORD('%p') and \
service='web_proxy']
هنگام استفاده از این قاعده، میتوانید نویسههای `[' را در داخل رشته بگنجانید، و اگر میخواهید نویسهٔ `]' را در داخل رشته بگنجانید به طوری که در فرآیند تجزیهٔ آرگومان حفظ شود، باید از `\]' استفاده کنید. به عبارت دیگر:
[..[..\]..] --> ..[..]..
هر خطی در (یکی از) فایل(های) پیکربندی که به درستی قالببندی نشده باشد، به طور کلی (با احتیاط بیشتر) منجر به شکست فرآیند احراز هویت خواهد شد. خطای متناظر با فراخوانی syslog(3) در فایلهای گزارش سیستم نوشته میشود.
انعطافپذیرتر از فایل پیکربندی واحد، پیکربندی libpam از طریق محتویات دایرکتوریهای pam.d است. در این حالت، دایرکتوریها با فایلهایی پر میشوند که نام هر یک از آنها برابر با نام یک سرویس (با حروف کوچک) است: این فایل، فایل پیکربندی اختصاصی برای سرویس نامبرده است.
فایلهای پیکربندی PAM ارائهشده توسط توزیعکننده (Vendor) ممکن است به جای دایرکتوری پیکربندی ماشین /etc/pam.d/، در دایرکتوری سیستم /usr/lib/pam.d/ یا دایرکتوری خاص توزیعکننده که قابل پیکربندی است نصب شوند. اگر فایل پیکربندی ماشین یافت نشود، از فایل ارائهشده توسط توزیعکننده استفاده میشود. تمام فایلهای موجود در /etc/pam.d/ فایلهای همنام در سایر دایرکتوریها را بازنویسی (Override) میکنند.
نحو هر فایل در pam.d مشابه فایل /etc/pam.conf است و از خطوطی با قالب زیر تشکیل شده است:
type control module-path module-arguments
تنها تفاوت این است که نام سرویس (service-name) وجود ندارد. نام سرویس البته همان نام فایل پیکربندی دادهشده است. به عنوان مثال، /etc/pam.d/login شامل پیکربندی برای سرویس login است.
فایلها (FILES)
/etc/pam.conf
/etc/pam.d
/usr/lib/pam.d
همچنین ببینید (SEE ALSO)
| 06/29/2025 | Linux-PAM |