pam_mount(8) pam_mount 2.22 pam_mount(8)

pam_mount - ماژول PAM برای سوار کردن حجم‌های ذخیره‌سازی در نشست کاربر

این ماژول برای محیط‌هایی با کارسازهای فایل مرکزی طراحی شده است که در آن‌ها کاربر تمایل دارد هنگام ورود به سیستم حجم‌ها سوار (mount) و هنگام خروج پیاده (unmount) شوند؛ مانند ایستگاه‌های کاری (نیمه‌)بدون‌دیسک که کاربران متعددی به آن‌ها وارد می‌شوند و سوار کردن سراسری و ایستای کل دایرکتوری /home از یک کارساز خطری امنیتی به شمار می‌رود، یا فهرست کردن همهٔ حجم‌های ممکن در /etc/fstab امکان‌پذیر نیست.

  • کاربران می‌توانند فهرست حجم‌های خود را بدون نیاز به تغییر فایل‌های پیکربندی سراسری سیستم (که ممکن است غیرقابل‌نوشتن باشند) تعریف کنند.
  • ویژگی ورود یکپارچه (Single sign-on) - کاربر نیاز دارد گذرواژه را فقط یک‌بار (هنگام ورود) وارد کند.
  • فرایند سوار کردن شفاف و خودکار
  • عدم ذخیره‌سازی گذرواژه‌ها
  • حجم‌ها هنگام خروج از سیستم پیاده می‌شوند، که موجب آزادسازی منابع سیستم شده و داده‌ها را در معرض دسترسی باز نمی‌گذارد.

این ماژول همچنین از سوار کردن انواع سیستم‌های فایل محلی که ابزار معمول mount پشتیبانی می‌کند حمایت می‌کند، همراه با کدهای اضافی برای اطمینان از راه‌اندازی درست حجم‌های خاصی که اغلب به چیزی بیش از یک فراخوانی سادهٔ mount نیاز دارند، مانند حجم‌های رمزنگاری‌شده. این موارد شامل SMB/CIFS، FUSE، dm-crypt و LUKS می‌شود.

اگر قصد دارید از pam_mount برای محافظت از حجم‌ها روی رایانهٔ خود با استفاده از یک سیستم‌فایل رمزنگاری‌شده استفاده کنید، لطفاً توجه داشته باشید مسائل متعدد دیگری نیز وجود دارند که باید برای محافظت از داده‌هایتان مد نظر قرار دهید. برای نمونه، احتمالاً می‌خواهید پارتیشن حافظهٔ مجازی (swap) خود را غیرفعال یا رمزنگاری کنید (ابزار cryptoswap می‌تواند در این زمینه به شما کمک کند). بدون بررسی دقیق تهدیدهای بالقوه، سیستم را امن فرض نکنید.

فایل پیکربندی اصلی برای ماژول pam_mount فایل pam_mount.conf.xml است. در بیشتر بسترها این فایل از مسیر /etc/security/pam_mount.conf.xml خوانده می‌شود. در OpenBSD ماژول pam_mount فایل پیکربندی خود را از /etc/pam_mount.conf.xml می‌خواند. برای مستندات نحوهٔ استفاده از آن، pam_mount.conf(5) را ببینید.

کاربران به‌صورت جداگانه در صورت مجاز بودن در pam_mount.conf.xml می‌توانند حجم‌های بیشتری را برای سوار شدن تعریف کنند (معمولاً در ~/.pam_mount.conf.xml). کلمهٔ کلیدی volume تنها کلمهٔ کلیدی معتبر در این فایل‌های پیکربندی مختص به هر کاربر است. اگر پارامتر luserconf در pam_mount.conf.xml تنظیم شده باشد و حجم‌های تعریف‌شده توسط کاربر را مجاز بداند، کاربران می‌توانند هر حجمی را که مالک آن هستند در هر نقطهٔ سوار شدنی (mount point) که متعلق به خودشان است سوار و پیاده کنند. در برخی پیکربندی‌های سیستم‌فایل ممکن است این مورد یک نقص امنیتی باشد، بنابراین در فایل نمونهٔ pam_mount.conf.xml که همراه با pam_mount توزیع می‌شود، حجم‌های تعریف‌شده توسط کاربر مجاز نیستند.

علاوه بر این، باید دو مدخل در فایل‌های پیکربندی مربوطه در مسیر /etc/pam.d/service سیستم قرار دهید، همان‌طور که در مثال زیر نشان داده شده است:

    auth     required  pam_securetty.so
    auth     required  pam_pwdb.so shadow nullok
    auth     required  pam_nologin.so
+++ auth     optional  pam_mount.so
    account  required  pam_pwdb.so
    password required  pam_cracklib.so
    password required  pam_pwdb.so shadow nullok use_authtok
    session  required  pam_pwdb.so
    session  optional  pam_console.so
+++ session  optional  pam_mount.so

هنگامی که عبارت "sufficient" در ستون دوم استفاده می‌شود، باید مطمئن شوید که pam_mount پیش از این مدخل اضافه شده است. در غیر این صورت، در صورت موفقیت یک ماژول PAM قبلی، pam_mount اجرا نخواهد شد. همچنین به دستورات "include" توجه داشته باشید. این دستورات باعث می‌شوند PAM به فایل مشخص‌شده مراجعه کند. اگر عبارت "sufficient" وجود داشته باشد، مدخل pam_mount باید یا در فایل گنجانده‌شده (included) قبل از عبارت "sufficient" قرار گیرد، یا قبل از دستور "include".

اگر از pam_ldap، pam_winbind یا هر سرویس احراز هویت دیگری استفاده می‌کنید که از کلمهٔ کلیدی sufficient در PAM بهره می‌برند، پیکربندی خود را بر اساس ترتیب زیر الگوبرداری کنید:

•••
account sufficient  pam_ldap.so
auth    required    pam_mount.so
auth    sufficient  pam_ldap.so use_first_pass
auth    required    pam_unix.so use_first_pass
session optional    pam_mount.so
•••

این ترتیب موارد زیر را ممکن می‌سازد:

1.
ماژول pam_mount، به‌عنوان نخستین ماژول "auth"، درخواست گذرواژه کرده و آن را به سیستم PAM صادر (export) می‌کند.
2.
ماژول pam_ldap از گذرواژهٔ موجود در سیستم PAM برای احراز هویت کاربر استفاده خواهد کرد. در صورت موفقیت، هویت کاربر تأیید می‌شود. در صورت شکست، pam_unix برای احراز هویت تلاش خواهد کرد.
3.
اگر pam_ldap شکست بخورد، pam_unix برای احراز هویت کاربر تلاش می‌کند. اگر pam_unix نیز شکست بخورد، احراز هویت رد خواهد شد (به دلیل وجود "required").

همچنین، روش زیر نیز امکان‌پذیر است (با تشکر از Andrew Morgan برای این نکته!):

auth [success=2 default=ignore] pam_unix2.so
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth optional pam_mount.so

ممکن است عجیب به نظر برسد، اما سه خط نخست طوری عمل می‌کنند که حداقل یکی از ماژول‌های pam_unix2 یا pam_ldap باید موفق شود. همان‌طور که مشاهده می‌کنید، pam_mount پس از احراز هویت موفق با این زیرسیستم‌ها اجرا خواهد شد.

ماژول pam_mount از چند نوع رمزنگاری پشتیبانی می‌کند. رایج‌ترین آن‌ها encfs، dm-crypt و dm-crypt+LUKS هستند.

مورد نخست از لایهٔ FUSE استفاده می‌کند؛ فایل‌های درون ظرف encfs به‌عنوان تک‌فایل‌های رمزنگاری‌شده روی میزبان در یک دایرکتوری از پیش موجود ذخیره می‌شوند. اگر فایل‌های زیادی ذخیره می‌کنید، توصیه می‌شود از یک سیستم‌فایل زیرین استفاده کنید که در این زمینه عملکرد خوبی دارد (مانند xfs)، اما ممکن است برخی نرم‌افزارها یا تصمیمات پارتیشن‌بندی شما را مجبور به استفاده از یک سیستم‌فایل دیگر کنند. همچنین نگاشت یک‌به‌یک (1:1) فایل‌ها اجازه می‌دهد فایل‌های رمزنگاری‌شده مثلاً بدون نیاز به باز کردن ظرف رمزنگاری‌شده، با کارایی قابل قبولی با rsync همگام‌سازی شوند. ایجاد این ظرف از طریق ابزار encfs(1) انجام می‌شود.

ماژول dm-crypt رمزنگاری کل سیستم‌فایل یا تمام پارتیشن را فراهم می‌کند. همچنین می‌توانید یک فایل ظرف ایجاد کنید، اما نکته این است که این ظرف به‌عنوان یک دستگاه بلوکی (block device) نمایش داده می‌شود که هنوز باید روی آن یک سیستم‌فایل بسازید. در واقع، از این طریق می‌توانید سیستم‌فایل دلخواه خود را انتخاب کنید. نکتهٔ منفی این است که کاهش اندازه (shrinking) اغلب امکان‌پذیر نیست (چنین مشکلی در encfs وجود ندارد زیرا از سیستم‌فایل زیرین استفاده می‌کند). ظروف مناسب dm-crypt (و فایل‌های کمکی)، با استفاده از دستگاه‌های بلوکی یا فایل‌های عادی، می‌توانند با ابزار pmt-ehd(8) ساخته شوند.

ابزار pmt-ehd داده‌های کلید سیستم‌فایل را ایجاد می‌کند که مجموعه‌ای از بایت‌های تصادفی برای رمزنگاری و رمزگشایی حجم هستند. این داده‌ها خود با گذرواژهٔ شما رمزنگاری می‌شوند - این کار به این منظور انجام می‌شود تا بتوانید بدون نیاز به رمزنگاری مجدد کل داده‌هایتان، گذرواژه را تغییر دهید.

افزونهٔ LUKS برای dm-crypt جهت پشتیبانی از ظروف چندگذرواژه‌ای است. توصیه می‌شود از دو راهکار بالا استفاده کنید مگر آنکه صریحاً به این ویژگی نیاز داشته باشید.

نکته: فایل کلیدی که pmt-ehd(8) ایجاد می‌کند حاوی داده‌های کلید سیستم‌فایل است که با گذرواژهٔ شما رمزنگاری شده است؛ بنابراین ذخیره کردن آن روی یک سیستم‌فایل غیرامن بی‌خطر است.

برای اطمینان از اینکه سیستم شما و احتمالاً کارساز راه دور به‌درستی پیکربندی شده‌اند، باید سعی کنید همه یا برخی از حجم‌ها را به‌صورت دستی و با استفاده از همان دستورات و نقاط سوار شدنی که در pam_mount.conf.xml ارائه شده است سوار کنید. این کار شما را از دردسرهای فراوان نجات می‌دهد، چرا که اشکال‌زدایی فرایند سوار کردن از طریق pam_mount دشوارتر است.

اگر می‌توانید حجم‌ها را به‌صورت دستی سوار کنید اما این کار از طریق pam_mount انجام نمی‌شود، ممکن است بخواهید گزینهٔ "debug" را در pam_mount.conf.xml فعال کنید تا ببینید چه رخ می‌دهد.

بررسی کنید که آیا کاربر مالک نقطهٔ سوار شدن است و دسترسی‌های کافی روی آن دارد یا خیر. ماژول pam_mount این مورد را بررسی می‌کند و اگر کاربر مالک آن دایرکتوری نباشد، از سوار کردن حجم راه دور خودداری خواهد کرد.

اگر pam_mount هنگام خروج از سیستم در پیاده کردن حجم‌ها با مشکل مواجه می‌شود، متغیر debug را فعال کنید. این کار باعث می‌شود pam_mount هنگام خروج برنامهٔ ofl را اجرا کرده و خروجی آن را در گزارش وقایع سیستم (system log) ثبت کند.

W. Michael Petullo

Jan Engelhardt (نگه‌دارندهٔ فعلی)

دو شیوهٔ ارتباطی زیر در دسترس است. نگه‌دارنده هیچ ترجیحی ندارد، هرچند از طریق فهرست پستی (mailing list) به کاربران بیشتری دسترسی خواهید داشت که می‌توانند به پرسش‌ها پاسخ دهند.

2025-10-30 pam_mount 2.22