Введение
Механизм операционной системы "Коммутатор службы имен" (Name Service Switch, NSS) — это интерфейс glibc, который связывает компьютер с различными источниками общих баз данных конфигурации и механизмами разрешения имен. К этим источникам относятся локальные файлы операционной системы (такие как /etc/passwd, /etc/group и /etc/hosts), Система доменных имен (DNS), Сетевая информационная служба (NIS, NIS+) и LDAP.
The Name Service Switch (NSS) is an interface of glibc that connects a computer with a variety of sources of common configuration databases and name resolution mechanisms. These sources include local operating system files (such as , , and ), the Domain Name System (DNS), the Network Information Service (NIS, NIS+), and LDAP.
История
Ранние Unix-подобные системы имели доступ либо только к локальным файлам, либо использовали жёстко заданные правила доступа к файлам или сетевым базам данных. Ultrix был заметным исключением, обладая почти идентичной функциональностью конфигурационного файла NSS. Sun Microsystems впервые разработала NSS для своей операционной системы Solaris. Соответствие Solaris стандарту SVR4, который Sun Microsystems и AT&T Unix System Laboratories совместно разработали, объединив UNIX System V, BSD и Xenix, требовало, чтобы сторонние разработчики могли подключать реализации служб имён для выбранного транспортного уровня (OSI или IP) без переписывания приложений RPC (TI RPC), соответствующих SVR4, или перекомпиляции операционной системы. Sun представила службу каталогов NIS+ в Solaris для замены NIS, что требовало одновременного существования обеих служб каталогов в организации для упрощения перехода. Инженеры Sun Томас Маслен и Санджай Дани первыми разработали и реализовали Name Service Switch, выполнив требования Solaris с помощью спецификации файла nsswitch.conf и решения загружать модули доступа к базам данных как динамически подключаемые библиотеки, что также впервые реализовала Sun. Изначальный дизайн инженеров Sun конфигурационного файла и загрузки библиотек служб имён во время выполнения оказался устойчивым к изменениям, поскольку операционные системы развивались и появлялись новые службы имён. На протяжении многих лет программисты портировали конфигурационный файл NSS с почти идентичными реализациями во многие другие операционные системы, включая FreeBSD, NetBSD, Linux, HP-UX, IRIX и AIX. Спустя более двух десятилетий после изобретения NSS, GNU libc реализует его практически без изменений.
Sun Microsystems first developed the NSS for their Solaris operating system. Solaris' compliance with SVR4, which Sun Microsystems and AT&T Unix System Laboratories jointly developed by merging UNIX System V, BSD and Xenix, required that third parties be able to plug in name service implementations for the transport layer of their choosing (OSI or IP) without rewriting SVR4 compliant Transport Independent RPC (TI RPC) applications or rebuilding the operating system. Sun introduced the NIS+ directory service in Solaris to supersede NIS, which required co existence of the two directory services within an enterprise to ease migration. Sun engineers Thomas Maslen and Sanjay Dani were the first to design and implement the Name Service Switch. They fulfilled Solaris requirements with the nsswitch. conf file specification and the implementation choice to load database access modules as dynamically loaded libraries, which Sun was also the first to introduce. Sun engineers' original design of the configuration file and runtime loading of name service back end libraries has withstood the test of time as operating systems have evolved and new name services are introduced. Over the years, programmers ported the NSS configuration file with nearly identical implementations to many other operating systems including FreeBSD, NetBSD, Linux, HP UX, IRIX and AIX. More than two decades after the NSS was invented, GNU libc implements it almost identically.