PAM_UNIX(8) راهنمای Linux-PAM PAM_UNIX(8)

pam_unix - ماژول سنتی PAM برای احراز هویت با گذرواژه

pam_unix.so [...]

این ماژول استاندارد احراز هویت یونیکس است. این ماژول از فراخوانی‌های استاندارد کتابخانه‌های سیستم برای دریافت و تنظیم اطلاعات حساب کاربری و همچنین احراز هویت استفاده می‌کند. معمولاً این اطلاعات از پرونده /etc/passwd و همچنین در صورت فعال بودن shadow، از پرونده /etc/shadow به دست می‌آید.

مؤلفه account وظیفه تعیین وضعیت حساب و گذرواژه کاربر را بر اساس عناصر shadow زیر انجام می‌دهد: expire، last_change، max_change، min_change، warn_change. در مورد مورد آخر، ممکن است توصیه‌هایی برای تغییر گذرواژه به کاربر ارائه دهد یا از طریق مقدار بازگشتی PAM_AUTHTOKEN_REQD ، ارائه خدمات به کاربر را تا زمانی که گذرواژه جدیدی تعیین نکرده باشد به تعویق بیندازد. مدخل‌های فهرست‌شده در بالا در صفحه راهنمای shadow(5) مستند شده‌اند. در صورتی که رکورد کاربر شامل یک یا چند مورد از این مدخل‌ها نباشد، بررسی shadow مربوطه انجام نمی‌شود.

مؤلفه authentication وظیفه بررسی اعتبارنامه‌های (گذرواژه) کاربران را انجام می‌دهد. اقدام پیش‌فرض این ماژول این است که در صورت خالی بودن گذرواژه رسمی کاربر، اجازه دسترسی به سرویس را به او ندهد.

یک باینری کمکی به نام unix_chkpwd(8) برای بررسی گذرواژه کاربر در زمانی که در یک پایگاه داده محافظت‌شده در برابر خواندن ذخیره شده است، ارائه شده است. این باینری بسیار ساده است و تنها گذرواژه کاربری که آن را فراخوانی کرده بررسی می‌کند. این باینری به صورت شفاف از طرف کاربر توسط مؤلفه احراز هویت این ماژول فراخوانی می‌شود. به این ترتیب برنامه‌هایی مانند xlock(1) می‌توانند بدون نیاز به setuid-root کار کنند. این ماژول به طور پیش‌فرض، به طور موقت مدیریت SIGCHLD را در طول مدت اجرای باینری کمکی غیرفعال می‌کند. این کار به طور کلی اقدام درستی است، زیرا بسیاری از برنامه‌ها برای مدیریت این سیگنال از یک فرزند که نمی‌دانستند fork() شده است، آماده نیستند. آرگومان noreap ماژول می‌تواند برای جلوگیری از این محافظت موقت استفاده شود و ممکن است برای استفاده با برنامه‌های خاصی لازم باشد.

حداکثر طول گذرواژه پشتیبانی‌شده توسط ماژول pam_unix از طریق باینری کمکی، PAM_MAX_RESP_SIZE است - در حال حاضر ۵۱۲ بایت. بقیه گذرواژه ارائه‌شده توسط تابع گفتگو (conversation) به ماژول نادیده گرفته خواهد شد.

مؤلفه password این ماژول وظیفه به‌روزرسانی گذرواژه کاربر را انجام می‌دهد. هش رمزنگاری پیش‌فرض از متغیر ENCRYPT_METHOD در /etc/login.defs گرفته می‌شود.

مؤلفه session این ماژول زمان ورود کاربر به سیستم یا خروج از آن را ثبت می‌کند.

سایر آرگومان‌های پشتیبانی‌شده توسط دیگر توابع این ماژول، بدون اعلام نادیده گرفته می‌شوند. سایر آرگومان‌ها به عنوان خطا از طریق syslog(3) ثبت می‌شوند.

debug

اشکال‌زدایی را از طریق syslog(3) فعال می‌کند.

audit

کمی دقیق‌تر و سخت‌گیرانه‌تر از debug است.

quiet

پیام‌های اطلاعاتی، به‌ویژه پیام‌های مربوط به باز و بسته شدن نشست را از طریق syslog(3) غیرفعال می‌کند.

nullok

اقدام پیش‌فرض این ماژول این است که در صورت خالی بودن گذرواژه رسمی کاربر، اجازه دسترسی به سرویس را ندهد. آرگومان nullok این رفتار پیش‌فرض را لغو می‌کند.

nullresetok

به کاربران اجازه می‌دهد در صورت اجباری بودن بازنشانی گذرواژه، با گذرواژه خالی احراز هویت شوند حتی اگر nullok تنظیم نشده باشد. اگر بازنشانی گذرواژه الزامی نباشد و nullok تنظیم نشده باشد، احراز هویت با گذرواژه خالی رد خواهد شد.

try_first_pass

پیش از درخواست گذرواژه از کاربر، ماژول ابتدا گذرواژه ماژول پشته‌شده قبلی را امتحان می‌کند تا در صورتی که این ماژول را نیز برآورده کند، از آن استفاده شود.

use_first_pass

آرگومان use_first_pass ماژول را وادار می‌کند تا از گذرواژه ماژول‌های پشته‌شده قبلی استفاده کند و هرگز از کاربر درخواست گذرواژه نکند - اگر گذرواژه‌ای در دسترس نباشد یا گذرواژه مناسب نباشد، دسترسی کاربر رد خواهد شد.

nodelay

این آرگومان را می‌توان برای جلوگیری از درخواست تاخیر توسط مؤلفه احراز هویت در صورت شکست کلی احراز هویت استفاده کرد. اقدام پیش‌فرض این است که ماژول در صورت شکست، تاخیری در حدود دو ثانیه درخواست کند.

use_authtok

هنگام تغییر گذرواژه، ماژول را وادار می‌کند تا گذرواژه جدید را برابر با گذرواژه ارائه‌شده توسط یک ماژول password پشته‌شده قبلی قرار دهد (این مورد در مثال پشته‌بندی ماژول pam_passwdqc که در زیر مستند شده استفاده می‌شود).

authtok_type=type

این آرگومان را می‌توان برای اصلاح اعلان گذرواژه هنگام تغییر گذرواژه‌ها به منظور گنجاندن نوع گذرواژه استفاده کرد. به طور پیش‌فرض خالی است.

nis

از NIS RPC برای تنظیم گذرواژه‌های جدید استفاده می‌شود.

remember=n

تعداد n گذرواژه آخر برای هر کاربر در /etc/security/opasswd ذخیره می‌شوند تا تاریخچه تغییر گذرواژه اعمال شود و از جابجایی مکرر کاربر میان همان گذرواژه‌ها جلوگیری شود. الگوریتم هش گذرواژه MD5 برای ذخیره گذرواژه‌های قدیمی استفاده می‌شود. به جای این گزینه باید از ماژول pam_pwhistory استفاده شود.

shadow

سعی در نگهداری و استفاده از یک سیستم مبتنی بر shadow می‌کند.

md5

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم MD5 رمزگذاری می‌کند.

bigcrypt

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم DEC C2 رمزگذاری می‌کند.

sha256

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم SHA256 رمزگذاری می‌کند. الگوریتم SHA256 باید توسط تابع crypt(3) پشتیبانی شود.

sha512

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم SHA512 رمزگذاری می‌کند. الگوریتم SHA512 باید توسط تابع crypt(3) پشتیبانی شود.

blowfish

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم blowfish رمزگذاری می‌کند. الگوریتم blowfish باید توسط تابع crypt(3) پشتیبانی شود.

gost_yescrypt

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم gost-yescrypt رمزگذاری می‌کند. الگوریتم gost-yescrypt باید توسط تابع crypt(3) پشتیبانی شود.

yescrypt

هنگامی که کاربر در نوبت بعدی گذرواژه خود را تغییر می‌دهد، آن را با الگوریتم yescrypt رمزگذاری می‌کند. الگوریتم yescrypt باید توسط تابع crypt(3) پشتیبانی شود.

rounds=n

تعداد دورهای اختیاری الگوریتم‌های درهم‌سازی گذرواژه SHA256، SHA512، blowfish، gost-yescrypt و yescrypt را به n تنظیم می‌کند.

broken_shadow

خطاهای خواندن اطلاعات shadow برای کاربران را در ماژول مدیریت حساب (account) نادیده می‌گیرد.

minlen=n

حداقل طول گذرواژه را به n نویسه تنظیم می‌کند. حداکثر طول برای گذرواژه‌های مبتنی بر DES crypt برابر با ۸ نویسه است.

no_pass_expiry

در صورت تنظیم، انقضای گذرواژه را همان‌طور که توسط مدخل shadow کاربر تعریف شده است، نادیده می‌گیرد. این گزینه تنها در صورتی اثر دارد که pam_unix برای احراز هویت استفاده نشده باشد یا شکست در احراز هویت را بازگردانده باشد، به این معنی که منبع یا روش احراز هویت دیگری موفق شده است. به عنوان مثال می‌توان به احراز هویت کلید عمومی در sshd اشاره کرد. ماژول به جای PAM_NEW_AUTHTOK_REQD یا PAM_AUTHTOK_EXPIRED احتمالی، PAM_SUCCESS را بازمی‌گرداند.

آرگومان‌های نامعتبر با syslog(3) ثبت می‌شوند.

همه انواع ماژول (account، auth، password و session) ارائه می‌شوند.

PAM_IGNORE

این ماژول نادیده گرفته شود.

یک نمونه استفاده برای /etc/pam.d/login به این صورت خواهد بود:

# احراز هویت کاربر
auth       required   pam_unix.so
# اطمینان از فعال بودن حساب کاربر و گذرواژه
account    required   pam_unix.so
# تغییر گذرواژه کاربر، اما ابتدا بررسی استحکام
# با pam_passwdqc(8)
password   required   pam_passwdqc.so config=/etc/passwdqc.conf
password   required   pam_unix.so use_authtok nullok yescrypt
session    required   pam_unix.so

login.defs(5)، pam.conf(5)، pam.d(5)، pam(8)

pam_unix توسط افراد مختلفی نوشته شده است.

01/26/2026 Linux-PAM