'\" t .\" Title: pam.conf .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets v1.79.2 .\" Date: 06/29/2025 .\" Manual: Linux-PAM Manual .\" Source: Linux-PAM .\" Language: Persian .\" .TH "PAM\&.CONF" "5" "06/29/2025" "Linux\-PAM" "راهنمای Linux\-PAM" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" pam.conf, pam.d \- فایلها و دایرکتوریهای پیکربندی ماژولهای احراز هویت لینوکس (PAM) .SH "توضیحات (DESCRIPTION)" .PP هنگامی که یک برنامهٔ اعطاکنندهٔ دسترسی و آگاه از \fIPAM\fR شروع به کار می‌کند، اتصال خود را به رابط برنامه‌نویسی PAM (یا همان PAM\-API) فعال می‌سازد. این فعال‌سازی چندین کار را انجام می‌دهد که مهم‌ترین آن‌ها خواندن فایل(های) پیکربندی است: /etc/pam\&.conf\&. به عنوان روشی جایگزین و ترجیح داده شده، پیکربندی می‌تواند توسط فایل‌های پیکربندی مجزا در دایرکتوری pam\&.d تنظیم شود. وجود این دایرکتوری باعث می‌شود \fBLinux\-PAM\fR فایل /etc/pam\&.conf را نادیده بگیرد (\fIignore\fR). .PP این فایل‌ها فهرست \fIPAM\fRهایی را مشخص می‌کنند که وظایف احراز هویت مورد نیاز این سرویس را انجام خواهند داد، و همچنین رفتار مناسب PAM\-API را در صورتی که هر یک از \fIPAM\fRها با شکست مواجه شوند، تعیین می‌نمایند. .PP نحو (Syntax) فایل پیکربندی /etc/pam\&.conf به شرح زیر است. این فایل از فهرستی از قواعد تشکیل شده است؛ هر قاعده معمولاً در یک خط قرار می‌گیرد، اما می‌تواند با یک پایان خط گریز داده شده (Escaped) به صورت `\e\*(Aq ادامه یابد. کامنت‌ها با نویسهٔ `#\*(Aq مشخص می‌شوند و تا انتهای خط امتداد دارند. .PP قالب هر قاعده، مجموعه‌ای از نشانه‌ها (Tokens) است که با فاصله از هم جدا شده‌اند، و سه تای اول نسبت به بزرگی و کوچکی حروف حساس نیستند (Case\-insensitive): .PP \fB service type control module\-path module\-arguments\fR .PP نحو فایل‌های موجود در دایرکتوری /etc/pam\&.d/ دقیقاً یکسان است، به جز عدم وجود فیلد \fIservice\fR\&. در این حالت، \fIservice\fR همان نام فایل در دایرکتوری /etc/pam\&.d/ است. این نام فایل باید با حروف کوچک باشد. .PP یک ویژگی مهم \fIPAM\fR این است که تعدادی از قواعد می‌توانند به صورت پشته‌ای (\fIstacked\fR) روی هم قرار گیرند تا سرویس‌های چندین PAM را برای یک وظیفهٔ احراز هویت مشخص ترکیب کنند. .PP فیلد \fIservice\fR معمولاً همان نام آشنای برنامهٔ مربوطه است: \fIlogin\fR و \fIsu\fR نمونه‌های خوبی هستند. نام سرویس \fIother\fR برای ارائهٔ قواعد پیش‌فرض (\fIdefault\fR) رزرو شده است. تنها خطوطی که به سرویس فعلی اشاره دارند (یا در صورت عدم وجود آن، ورودی‌های \fIother\fR) به برنامهٔ سرویس مورد نظر مرتبط خواهند شد. .PP فیلد \fItype\fR گروه مدیریتی است که قاعده به آن مربوط می‌شود. این فیلد برای تعیین اینکه ماژول بعدی با کدام یک از گروه‌های مدیریتی مرتبط است به کار می‌رود. مقادیر معتبر عبارتند از: .PP account .RS 4 این نوع ماژول مدیریت حساب بدون نیاز به احراز هویت را انجام می‌دهد. معمولاً برای محدود کردن/مجاز ساختن دسترسی به یک سرویس بر اساس زمان روز، منابع در دسترس فعلی سیستم (حداکثر تعداد کاربران) یا شاید مکان کاربر متقاضی -- مانند ورود \*(Aqroot\*(Aq فقط از روی کنسول -- استفاده می‌شود. .RE .PP auth .RS 4 این نوع ماژول دو جنبه از احراز هویت کاربر را فراهم می‌کند. اولاً، با هدایت برنامه به درخواست گذرواژه یا سایر روش‌های شناسایی از کاربر، مشخص می‌کند که کاربر همان فردی است که ادعا می‌کند. ثانیاً، ماژول می‌تواند از طریق ویژگی‌های اعطای اعتبارنامهٔ خود، عضویت در گروه یا سایر دسترسی‌ها را اعطا نماید. .RE .PP password .RS 4 این نوع ماژول برای به‌روزرسانی نشانهٔ احراز هویت مرتبط با کاربر مورد نیاز است. معمولاً برای هر نوع احراز هویت مبتنی بر \*(Aqchallenge/response\*(Aq (auth) یک ماژول وجود دارد. .RE .PP session .RS 4 این نوع ماژول با انجام کارهایی مرتبط است که باید قبل یا بعد از ارائهٔ سرویس به کاربر انجام شوند. چنین مواردی شامل ثبت گزارش اطلاعات مربوط به باز کردن/بستن تبادل داده با یک کاربر، سوار کردن دایرکتوری‌ها (Mount) و غیره است. .RE .PP اگر مقدار \fItype\fR از لیست بالا با یک نویسهٔ \fI\-\fR آغاز شود، در صورتی که بارگذاری ماژول به دلیل موجود نبودن در سیستم امکان‌پذیر نباشد، کتابخانهٔ PAM خطایی در گزارش‌های سیستم ثبت نخواهد کرد. این ویژگی می‌تواند به ویژه برای ماژول‌هایی مفید باشد که همیشه روی سیستم نصب نیستند و برای احراز هویت و مجوزدهی صحیح نشست ورود به سیستم ضروری نمی‌باشند. .PP فیلد سوم، \fIcontrol\fR، رفتار PAM\-API را در صورتی که ماژول در وظیفهٔ احراز هویت خود با شکست مواجه شود، مشخص می‌کند. دو نوع نحو برای این فیلد کنترل وجود دارد: نحو ساده دارای یک کلمهٔ کلیدی منفرد است؛ نحو پیچیده‌تر شامل انتخابی از جفت‌های \fIvalue=action\fR درون کروشه است. .PP برای نحو ساده (سنتی)، مقادیر معتبر \fIcontrol\fR عبارتند از: .PP required .RS 4 شکست چنین PAMی در نهایت منجر به بازگرداندن شکست توسط PAM\-API خواهد شد، اما فقط پس از اینکه باقی ماژول‌های پشته‌بندی‌شده (\fIstacked\fR) برای این \fIservice\fR و \fItype\fR فراخوانی شدند. .RE .PP requisite .RS 4 مانند \fIrequired\fR است؛ با این حال، در صورتی که چنین ماژولی شکست بازگرداند، کنترل بلافاصله به برنامه یا به پشتهٔ مافوق PAM بازگردانده می‌شود. مقدار بازگشتی همان مقداری است که به اولین ماژول required یا requisite که شکست خورده مربوط می‌شود. توجه داشته باشید که این پرچم می‌تواند برای جلوگیری از این احتمال استفاده شود که کاربر فرصت ورود گذرواژه را از طریق یک بستر ناامن پیدا کند. قابل تصور است که چنین رفتاری ممکن است یک مهاجم را از حساب‌های کاربری معتبر در سیستم آگاه سازد. این احتمال باید در برابر نگرانی‌های نه چندان ناچیز افشای یک گذرواژهٔ حساس در یک محیط خصمانه سنجیده شود. .RE .PP sufficient .RS 4 اگر چنین ماژولی موفق شود و هیچ ماژول قبلی \fIrequired\fR شکست نخورده باشد، چارچوب PAM بلافاصله و بدون فراخوانی ماژول‌های بعدی در پشته، موفقیت را به برنامه یا پشتهٔ مافوق PAM برمی‌گرداند. شکست یک ماژول \fIsufficient\fR نادیده گرفته می‌شود و پردازش پشتهٔ ماژول‌های PAM بدون تأثیر ادامه می‌یابد. .RE .PP optional .RS 4 موفقیت یا شکست این ماژول تنها در صورتی اهمیت دارد که تنها ماژول موجود در پشتهٔ مرتبط با این \fIservice\fR+\fItype\fR باشد. .RE .PP include .RS 4 شامل کردن تمام خطوط از نوع داده‌شده از فایل پیکربندی که به عنوان آرگومان برای این کنترل مشخص شده است. .RE .PP substack .RS 4 شامل کردن تمام خطوط از نوع داده‌شده از فایل پیکربندی که به عنوان آرگومان برای این کنترل مشخص شده است. این مورد با \fIinclude\fR متفاوت است، زیرا ارزیابی عملیات‌های \fIdone\fR و \fIdie\fR در یک زیرپشته (Substack) باعث رد شدن از بقیهٔ کل پشتهٔ ماژول نمی‌شود، بلکه تنها از آن زیرپشته رد می‌شود. همچنین پرش‌ها در یک زیرپشته نمی‌توانند ارزیابی را به خارج از آن هدایت کنند، و کل زیرپشته هنگام انجام پرش در پشتهٔ والد به عنوان یک ماژول محاسبه می‌شود. عملیات \fIreset\fR وضعیت پشتهٔ ماژول را به وضعیتی که در ابتدای ارزیابی زیرپشته داشت بازنشانی می‌کند. .RE .PP برای نحو پیچیده‌تر، مقادیر معتبر \fIcontrol\fR دارای قالب زیر هستند: .sp .if n \{\ .RS 4 .\} .nf [value1=action1 value2=action2 \&.\&.\&.] .fi .if n \{\ .RE .\} .PP جایی که \fIvalueN\fR مربوط به کد بازگشتی از تابع فراخوانی‌شده در ماژولی است که خط برای آن تعریف شده است. این مقدار از میان یکی از موارد زیر انتخاب می‌شود: \fIsuccess\fR، \fIopen_err\fR، \fIsymbol_err\fR، \fIservice_err\fR، \fIsystem_err\fR، \fIbuf_err\fR، \fIperm_denied\fR، \fIauth_err\fR، \fIcred_insufficient\fR، \fIauthinfo_unavail\fR، \fIuser_unknown\fR، \fImaxtries\fR، \fInew_authtok_reqd\fR، \fIacct_expired\fR، \fIsession_err\fR، \fIcred_unavail\fR، \fIcred_expired\fR، \fIcred_err\fR، \fIno_module_data\fR، \fIconv_err\fR، \fIauthtok_err\fR، \fIauthtok_recover_err\fR، \fIauthtok_lock_busy\fR، \fIauthtok_disable_aging\fR، \fItry_again\fR، \fIignore\fR، \fIabort\fR، \fIauthtok_expired\fR، \fImodule_unknown\fR، \fIbad_item\fR، \fIconv_again\fR، \fIincomplete\fR و \fIdefault\fR\&. .PP آخرین مورد از این‌ها، \fIdefault\fR، بیانگر «تمام \fIvalueN\fRهای ذکر نشده به صورت صریح» است. توجه داشته باشید که فهرست کامل خطاهای PAM در /usr/include/security/_pam_types\&.h موجود است. \fIactionN\fR می‌تواند یکی از قالب‌های زیر را داشته باشد: .PP ignore .RS 4 هنگامی که با پشته‌ای از ماژول‌ها استفاده می‌شود، وضعیت بازگشتی ماژول در کد بازگشتی دریافتی توسط برنامه نقشی نخواهد داشت. .RE .PP bad .RS 4 این اقدام نشان می‌دهد که کد بازگشتی باید به عنوان نشانه‌ای از شکست ماژول در نظر گرفته شود. اگر این ماژول اولین ماژول شکست‌خورده در پشته باشد، مقدار وضعیت آن برای کل پشته استفاده خواهد شد. این اقدام پیش‌فرض برای تمام کدهای بازگشتی است. .RE .PP die .RS 4 معادل \fIbad\fR است همراه با این اثر جانبی که پشتهٔ ماژول را خاتمه می‌دهد و PAM بلافاصله به برنامه بازمی‌گردد. .RE .PP ok .RS 4 این به PAM می‌گوید که مدیر سیستم معتقد است این کد بازگشتی باید مستقیماً در کد بازگشتی کل پشتهٔ ماژول‌ها سهم داشته باشد. به عبارت دیگر، اگر وضعیت قبلی پشته منجر به بازگرداندن \fIPAM_SUCCESS\fR می‌شد، کد بازگشتی این ماژول این مقدار را بازنویسی (Override) خواهد کرد. توجه داشته باشید اگر وضعیت قبلی پشته حاوی مقداری باشد که نشان‌دهندهٔ شکست ماژول است، این مقدار \*(Aqok\*(Aq برای بازنویسی آن مقدار استفاده نخواهد شد. .RE .PP done .RS 4 معادل \fIok\fR است با این اثر جانبی که پشتهٔ ماژول خاتمه می‌یابد و PAM بلافاصله به برنامه بازمی‌گردد، مگر اینکه قبلاً شکست ماژولی رخ داده باشد که نادیده گرفته نشده است. .RE .PP N (یک عدد صحیح بدون علامت) .RS 4 پرش از روی N ماژول بعدی در پشته. توجه داشته باشید که N برابر با 0 مجاز نیست و در چنین حالتی به عنوان \fIignore\fR در نظر گرفته می‌شود. اثر جانبی بستگی به فراخوانی تابع PAM دارد: برای \fIpam_authenticate\fR، \fIpam_acct_mgmt\fR، \fIpam_chauthtok\fR و \fIpam_open_session\fR به صورت \fIignore\fR است؛ برای \fIpam_setcred\fR و \fIpam_close_session\fR بسته به مقدار بازگشتی ماژول، یکی از موارد \fIignore\fR، \fIok\fR یا \fIbad\fR خواهد بود. .RE .PP reset .RS 4 پاک کردن تمام حافظهٔ مربوط به وضعیت پشتهٔ ماژول و شروع دوباره با ماژول پشته‌بندی‌شدهٔ بعدی. .RE .PP اگر اقدام مربوط به یک کد بازگشتی به طور مشخص از طریق نشانهٔ \fIvalueN\fR تعریف نشده باشد و مقدار \fIdefault\fR نیز تعیین نشده باشد، اقدام آن کد بازگشتی به طور پیش‌فرض \fIbad\fR خواهد بود. .PP هر یک از چهار کلمهٔ کلیدی: required؛ requisite؛ sufficient؛ و optional، یک عبارت معادل در قالب نحو [\&.\&.\&.] دارند که به شرح زیر است: .PP required .RS 4 [success=ok new_authtok_reqd=ok ignore=ignore default=bad] .RE .PP requisite .RS 4 [success=ok new_authtok_reqd=ok ignore=ignore default=die] .RE .PP sufficient .RS 4 [success=done new_authtok_reqd=done default=ignore] .RE .PP optional .RS 4 [success=ok new_authtok_reqd=ok default=ignore] .RE .PP \fImodule\-path\fR یا نام کامل فایل PAM است که باید توسط برنامه استفاده شود (با یک \*(Aq/\*(Aq شروع می‌شود)، یا یک مسیر نسبی از محل پیش‌فرض ماژول‌ها: /lib/security/ یا /lib64/security/ بسته به معماری سیستم. .PP \fImodule\-arguments\fR فهرستی از نشانه‌ها هستند که با فاصله از هم جدا شده‌اند و می‌توانند برای اصلاح رفتار خاص PAM مورد نظر استفاده شوند. این آرگومان‌ها برای هر ماژول به صورت جداگانه مستندسازی می‌شوند. توجه داشته باشید که اگر می‌خواهید فاصله‌ها را در یک آرگومان بگنجانید، باید آن آرگومان را در کروشه قرار دهید. .sp .if n \{\ .RS 4 .\} .nf squid auth required pam_mysql\&.so user=passwd_query passwd=mada \e db=eminence [query=select user_name from internet_service \e where user_name=\*(Aq%u\*(Aq and password=PASSWORD(\*(Aq%p\*(Aq) and \e service=\*(Aqweb_proxy\*(Aq] .fi .if n \{\ .RE .\} .PP هنگام استفاده از این قاعده، می‌توانید نویسه‌های `[\*(Aq را در داخل رشته بگنجانید، و اگر می‌خواهید نویسهٔ `]\*(Aq را در داخل رشته بگنجانید به طوری که در فرآیند تجزیهٔ آرگومان حفظ شود، باید از `\e]\*(Aq استفاده کنید. به عبارت دیگر: .sp .if n \{\ .RS 4 .\} .nf [\&.\&.[\&.\&.\e]\&.\&.] \-\-> \&.\&.[\&.\&.]\&.\&. .fi .if n \{\ .RE .\} .PP هر خطی در (یکی از) فایل(های) پیکربندی که به درستی قالب‌بندی نشده باشد، به طور کلی (با احتیاط بیشتر) منجر به شکست فرآیند احراز هویت خواهد شد. خطای متناظر با فراخوانی \fBsyslog\fR(3) در فایل‌های گزارش سیستم نوشته می‌شود. .PP انعطاف‌پذیرتر از فایل پیکربندی واحد، پیکربندی libpam از طریق محتویات دایرکتوری‌های pam\&.d است. در این حالت، دایرکتوری‌ها با فایل‌هایی پر می‌شوند که نام هر یک از آن‌ها برابر با نام یک سرویس (با حروف کوچک) است: این فایل، فایل پیکربندی اختصاصی برای سرویس نام‌برده است. .PP فایل‌های پیکربندی PAM ارائه‌شده توسط توزیع‌کننده (Vendor) ممکن است به جای دایرکتوری پیکربندی ماشین /etc/pam\&.d/\&، در دایرکتوری سیستم /usr/lib/pam\&.d/ یا دایرکتوری خاص توزیع‌کننده که قابل پیکربندی است نصب شوند. اگر فایل پیکربندی ماشین یافت نشود، از فایل ارائه‌شده توسط توزیع‌کننده استفاده می‌شود. تمام فایل‌های موجود در /etc/pam\&.d/ فایل‌های هم‌نام در سایر دایرکتوری‌ها را بازنویسی (Override) می‌کنند. .PP نحو هر فایل در pam\&.d مشابه فایل /etc/pam\&.conf است و از خطوطی با قالب زیر تشکیل شده است: .sp .if n \{\ .RS 4 .\} .nf type control module\-path module\-arguments .fi .if n \{\ .RE .\} .PP تنها تفاوت این است که نام سرویس (service\-name) وجود ندارد. نام سرویس البته همان نام فایل پیکربندی داده‌شده است. به عنوان مثال، /etc/pam\&.d/login شامل پیکربندی برای سرویس \fBlogin\fR است. .SH "فایل‌ها (FILES)" .PP /etc/pam\&.conf .RS 4 فایل پیکربندی .RE .PP /etc/pam\&.d .RS 4 دایرکتوری پیکربندی \fBLinux\-PAM\fR\&. به طور کلی اگر این دایرکتوری وجود داشته باشد، فایل /etc/pam\&.conf نادیده گرفته می‌شود. .RE .PP /usr/lib/pam\&.d .RS 4 دایرکتوری پیکربندی ارائه‌شده توسط توزیع‌کننده برای \fBLinux\-PAM\fR\&. فایل‌های موجود در /etc/pam\&.d فایل‌های هم‌نام در این دایرکتوری را بازنویسی (Override) می‌کنند. .RE .SH "همچنین ببینید (SEE ALSO)" .PP \fBpam\fR(3), \fBPAM\fR(8), \fBpam_start\fR(3)