PAM_NAMESPACE(8) Linux-PAM Manual PAM_NAMESPACE(8)

pam_namespace - ماژول PAM برای پیکربندی فضای‌نام یک نشست

pam_namespace.so [debug] [unmnt_remnt] [unmnt_only] [require_selinux] [gen_hash] [ignore_config_error] [ignore_instance_parent_mode] [unmount_on_close] [use_current_context] [use_default_context] [mount_private]

ماژول PAM با نام pam_namespace یک فضای‌نام (namespace) اختصاصی را برای یک نشست همراه با دایرکتوری‌های چندنمونه‌ای (polyinstantiated) برپا می‌کند. یک دایرکتوری چندنمونه‌ای، نمونهٔ متفاوتی از خود را بر اساس نام کاربری، یا در صورت استفاده از SELinux، بر اساس نام کاربری، بافت امنیتی (security context) یا هر دو ارائه می‌دهد. اگر یک اسکریپت اجرایی /etc/security/namespace.init وجود داشته باشد، برای مقداردهی اولیهٔ دایرکتوری نمونه پس از برپایی و متصل شدن (mount) آن روی دایرکتوری چندنمونه‌ای استفاده می‌شود. این اسکریپت مسیر دایرکتوری چندنمونه‌ای، مسیر دایرکتوری نمونه، پرچمی مبنی بر اینکه آیا دایرکتوری نمونه به‌تازگی ایجاد شده است یا خیر (۰ برای خیر، ۱ برای بله) و نام کاربری را به عنوان آرگومان‌های خود دریافت می‌کند. این اسکریپت با تمام امتیازات کاربر root اجرا می‌شود و دسترسی به دایرکتوری نمونه در این زمینه باید با احتیاط انجام شود، چرا که توسط کاربر فاقد امتیازی که دایرکتوری برای او ایجاد شده است کنترل می‌شود.

ماژول pam_namespace فضای‌نام نشست را از فضای‌نام والد جدا می‌سازد. هرگونه عملیات اتصال یا پیاده‌سازی (mount/unmount) انجام‌شده در فضای‌نام والد، مانند اتصال دستگاه‌ها، در فضای‌نام نشست منعکس نمی‌شود. برای انتشار رویدادهای اتصال/پیاده‌سازی انتخابی از فضای‌نام والد به فضای‌نام نشستِ جداشده، مدیر سیستم می‌تواند از ویژگی ویژهٔ زیردرخت مشترک (shared-subtree) استفاده کند. برای اطلاعات بیشتر دربارهٔ ویژگی shared-subtree، لطفاً به صفحهٔ راهنمای mount(8) و توضیحات shared-subtree در http://lwn.net/Articles/159077 و http://lwn.net/Articles/159092 مراجعه کنید.

debug

اطلاعات اشکال‌زدایی (debug) زیادی با استفاده از syslog ثبت می‌شود.

unmnt_remnt

برای برنامه‌هایی مانند su و newrole، نشست ورود از قبل یک فضای‌نام چندنمونه‌ای برپا کرده است. برای این برنامه‌ها، چندنمونه‌سازی بر اساس شناسهٔ کاربری جدید یا بافت امنیتی جدید انجام می‌شود؛ با این حال این دستور ابتدا باید چندنمونه‌سازی انجام‌شده توسط ورود را لغو (undo) کند. این آرگومان به دستور اعلام می‌کند که پیش از اقدام به چندنمونه‌سازی جدید بر اساس شناسه/بافت جدید، ابتدا چندنمونه‌سازی قبلی را لغو کند.

unmnt_only

برای برنامه‌های قابل اعتمادی که می‌خواهند هرگونه اتصالات بایندی (bind mounts) موجود را لغو کرده و دایرکتوری‌های نمونه را خودشان پردازش کنند، این آرگومان به آن‌ها اجازه می‌دهد دایرکتوری‌های نمونهٔ متصل‌شدهٔ فعلی را پیاده (unmount) کنند.

require_selinux

اگر selinux فعال نباشد، وضعیت شکست بازمی‌گرداند.

gen_hash

به‌جای استفاده از رشتهٔ بافت امنیتی برای نام نمونه، هش md5 آن را تولید کرده و استفاده می‌کند.

ignore_config_error

اگر خطی در فایل پیکربندی مربوط به یک دایرکتوری چندنمونه‌ای دارای خطای قالب‌بندی باشد، از آن خط صرف‌نظر کرده و خط بعدی را پردازش می‌کند. بدون این گزینه، pam یک خطا به برنامهٔ فراخوان بازمی‌گرداند که منجر به خاتمه یافتن نشست می‌شود.

ignore_instance_parent_mode

دایرکتوری‌های والد نمونه به‌طور پیش‌فرض انتظار می‌رود حالت دسترسی سخت‌گیرانهٔ 000 را داشته باشند. با استفاده از این گزینه، مدیر سیستم می‌تواند حالت والد نمونه را نادیده بگیرد. این گزینه باید با احتیاط استفاده شود، چرا که اهداف امنیتی و ایزولاسیون مکانیسم چندنمونه‌سازی را تضعیف می‌کند.

unmount_on_close

دایرکتوری‌های چندنمونه‌ای را به‌طور صریح پیاده (unmount) می‌کند به‌جای اینکه به نابودی خودکار فضای‌نام پس از خروج آخرین فرایند در آن تکیه کند. این گزینه فقط زمانی باید استفاده شود که از راه‌های دیگر اطمینان حاصل شده باشد که هیچ فرایندی پس از بسته‌شدن نشست در فضای‌نام اختصاصی باقی نمی‌ماند. همچنین فقط زمانی مفید است که چندین فراخوانی متوالی pam session از یک فرایند انجام شود.

use_current_context

برای سرویس‌هایی مفید است که بافت SELinux را با فراخوانی setexeccon تغییر نمی‌دهند. ماژول از بافت SELinux فعلی فرایند فراخوان برای چندنمونه‌سازی سطح و بافت (level و context) استفاده خواهد کرد.

use_default_context

برای سرویس‌هایی مفید است که از pam_selinux برای تغییر بافت SELinux با فراخوانی setexeccon استفاده نمی‌کنند. ماژول از بافت SELinux پیش‌فرض کاربر برای چندنمونه‌سازی سطح و بافت (level و context) استفاده خواهد کرد.

mount_private

این گزینه می‌تواند در سیستم‌هایی استفاده شود که نقطه اتصال / یا زیراتصالات آن به اشتراک گذاشته شده‌اند (برای مثال با دستور mount --make-rshared /). ماژول کل درخت دایرکتوری را علامت‌گذاری می‌کند تا هرگونه عملیات اتصال و پیاده‌سازی در فضای‌نام چندنمونه‌سازی به صورت خصوصی باشد. معمولاً pam_namespace تلاش می‌کند تا نقطه اتصال اشتراکی / را تشخیص داده و دایرکتوری‌های چندنمونه‌ای را به‌طور خودکار خصوصی کند. این گزینه فقط زمانی باید استفاده شود که تنها یک زیردرخت به اشتراک گذاشته شده باشد و / اشتراکی نباشد.

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

تنها نوع ماژول session ارائه می‌شود. این ماژول نباید از فرایندهای چندنخی (multithreaded) فراخوانی شود.

PAM_SUCCESS

برپایی فضای‌نام با موفقیت انجام شد.

PAM_SERVICE_ERR

هنگام برپایی فضای‌نام یک خطای غیرمنتظرهٔ سیستمی رخ داد.

PAM_SESSION_ERR

یک خطای غیرمنتظره در پیکربندی فضای‌نام رخ داد.

/etc/security/namespace.conf

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

/etc/security/namespace.d

دایرکتوری فایل‌های پیکربندی اضافی

/etc/security/namespace.init

اسکریپت مقداردهی اولیه (init) برای دایرکتوری‌های نمونه

برای سرویس‌هایی (<service>) که به چندنمونه‌سازی نیاز دارند (به عنوان مثال login)، خط زیر را در /etc/pam.d/<service> به عنوان آخرین خط گروه session قرار دهید:

session required pam_namespace.so [arguments]

برای استفاده از چندنمونه‌سازی با مدیر نمایش گرافیکی gdm، لطفاً به مستندات gdm مراجعه کنید.

namespace.conf(5), pam.d(5), mount(8), pam(8).

طرح برپایی فضای‌نام توسط Stephen Smalley، Janak Desai و Chad Sellers طراحی شد. ماژول PAM pam_namespace توسط Janak Desai <janak@us.ibm.com>، Chad Sellers <csellers@tresys.com> و Steve Grubb <sgrubb@redhat.com> توسعه داده شد. بهبودهای بیشتر توسط Xavier Toth <txtoth@gmail.com> و Tomas Mraz <tmraz@redhat.com> انجام شده است.

01/26/2026 Linux-PAM