blob: 02c97d292c415b65f337ddd42829732bd857325d [file] [log] [blame]
<html lang="en">
<head>
<title>Name Service Switch - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Job-Control.html#Job-Control" title="Job Control">
<link rel="next" href="Users-and-Groups.html#Users-and-Groups" title="Users and Groups">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Name-Service-Switch"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Users-and-Groups.html#Users-and-Groups">Users and Groups</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Job-Control.html#Job-Control">Job Control</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<h2 class="chapter">28 System Databases and Name Service Switch</h2>
<!-- %MENU% Accessing system databases -->
<p><a name="index-Name-Service-Switch-3249"></a><a name="index-NSS-3250"></a><a name="index-databases-3251"></a>
Various functions in the C Library need to be configured to work
correctly in the local environment. Traditionally, this was done by
using files (e.g., <samp><span class="file">/etc/passwd</span></samp>), but other nameservices (like the
Network Information Service (NIS) and the Domain Name Service (DNS))
became popular, and were hacked into the C library, usually with a fixed
search order (see <a href="../jargon/frobnicate.html#frobnicate">frobnicate</a>).
<p>The GNU C Library contains a cleaner solution of this problem. It is
designed after a method used by Sun Microsystems in the C library of
Solaris&nbsp;2<!-- /@w -->. GNU C Library follows their name and calls this
scheme <dfn>Name Service Switch</dfn> (NSS).
<p>Though the interface might be similar to Sun's version there is no
common code. We never saw any source code of Sun's implementation and
so the internal interface is incompatible. This also manifests in the
file names we use as we will see later.
<ul class="menu">
<li><a accesskey="1" href="NSS-Basics.html#NSS-Basics">NSS Basics</a>: What is this NSS good for.
<li><a accesskey="2" href="NSS-Configuration-File.html#NSS-Configuration-File">NSS Configuration File</a>: Configuring NSS.
<li><a accesskey="3" href="NSS-Module-Internals.html#NSS-Module-Internals">NSS Module Internals</a>: How does it work internally.
<li><a accesskey="4" href="Extending-NSS.html#Extending-NSS">Extending NSS</a>: What to do to add services or databases.
</ul>
</body></html>