nss(5) File Formats Manual nss(5)

nss - سوئیچ سرویس نام (Name Service Switch)

هر فراخوانی به تابعی که داده‌ها را از یک پایگاه‌داده سیستمی مانند پایگاه‌داده گذرواژه (password) یا گروه (group) بازیابی می‌کند، توسط پیاده‌سازی سوئیچ سرویس نام (Name Service Switch) در کتابخانه سی گنو (GNU C library) مدیریت می‌شود. سرویس‌های گوناگون ارائه‌شده توسط ماژول‌های مستقلی پیاده‌سازی شده‌اند که به طور طبیعی هر کدام تفاوت‌های زیادی با دیگری دارند.

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

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

پرونده /etc/default/nss شامل تعدادی تخصیص متغیر است. هر متغیر رفتار یک یا چند ماژول NSS را کنترل می‌کند. فاصله‌های خالی (White spaces) نادیده گرفته می‌شوند. خطوطی که با '#' آغاز می‌شوند به عنوان یادداشت (کامنت) در نظر گرفته می‌شوند.

متغیرهایی که در حال حاضر شناخته می‌شوند عبارتند از:

NETID_AUTHORITATIVE = TRUE|FALSE
اگر روی TRUE تنظیم شود، پس‌بانه NIS برای تابع initgroups(3) اطلاعات حاصل از نگاشت NIS به نام netid.byname را به عنوان منبع موثق و معتبر (authoritative) خواهد پذیرفت. این کار در صورتی که نگاشت group.byname بزرگ باشد، می‌تواند سرعت تابع را به میزان چشمگیری افزایش دهد. محتوای نگاشت netid.byname به همان شکلی که هست (as is) استفاده می‌شود. مدیر سیستم باید اطمینان حاصل کند که این نگاشت به درستی تولید شده است.
SERVICES_AUTHORITATIVE = TRUE|FALSE
اگر روی TRUE تنظیم شود، پس‌بانه NIS برای توابع getservbyname(3) و getservbyname_r(3) فرض خواهد کرد که نگاشت NIS با نام services.byservicename وجود دارد و موثق و معتبر (authoritative) است، به‌ویژه این که شامل هر دو کلید با /proto و بدون /proto هم برای نام‌های سرویس اصلی و هم نام‌های مستعار سرویس (service aliases) است. مدیر سیستم باید اطمینان حاصل کند که این نگاشت به درستی تولید شده است.
SETENT_BATCH_READ = TRUE|FALSE
اگر روی TRUE تنظیم شود، پس‌بانه NIS برای توابع setpwent(3) و setgrent(3) کل پایگاه‌داده را یک‌باره می‌خواند و سپس با هر فراخوانی متناظر از getpwent(3) یا getgrent(3) درخواست‌ها را یکی‌یکی از حافظه تحویل می‌دهد. در غیر این صورت، هر فراخوانی getpwent(3) یا getgrent(3) ممکن است منجر به یک ارتباط شبکه‌ای با کارساز (سرور) برای دریافت مدخل بعدی شود.

/etc/default/nss

پیکربندی پیش‌فرض با پرونده پیکربندی زیر مطابقت دارد:


NETID_AUTHORITATIVE=FALSE
SERVICES_AUTHORITATIVE=FALSE
SETENT_BATCH_READ=FALSE

nsswitch.conf(5)

2026-02-08 Linux man-pages 6.19