summaryrefslogtreecommitdiff
path: root/doc/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/index.html')
-rw-r--r--doc/index.html59
1 files changed, 48 insertions, 11 deletions
diff --git a/doc/index.html b/doc/index.html
index 49cf697..d4b7861 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -31,20 +31,32 @@ function is provided by the system's libc. However, not all libcs implement
a configurable backend for the user/group database. For instance the
<a href="https://musl-libc.org/">musl</a> libc, on Linux, only supports
the standard <tt>/etc/passwd</tt> mechanism; it also supports the
-<tt>nscd</tt> protocol but this is not quite enough to implement the
-full set of database access functions with certain backends (such as a
-LDAP server).
+<tt>nscd</tt> protocol but this is not quite enough:
+<p>
+
+<ul>
+ <li> musl only connects to nscd when it cannot find an answer in
+its files backend </li>
+ <li> The nscd protocol does not support enumeration, so primitives
+such as <tt>getpwent()</tt> cannot be implemented over nscd. </li>
+</ul>
+
+<p>
+ The mechanism used by glibc, called <tt>Name Service Switch</tt>
+(abbreviated to <tt>nsswitch</tt> or <tt>NSS</tt>), has its own
+<a href="nsswitch.html">set of issues</a> that makes it unsuitable
+in certain situations.
</p>
<p>
- <tt>nsss</tt> is a secure implementation of configurable user/group/shadow
-database access, providing <tt>getpwnam()</tt> et al. functionality
-by communicating over a Unix domain socket with a daemon; the daemon
-can perform lookups in any database it chooses.
+ <tt>nsss</tt> is a secure implementation of a "name service switch":
+configurable user/group/shadow database access, providing <tt>getpwnam()</tt>
+et al. functionality by communicating over a Unix domain socket with a daemon;
+the daemon can perform lookups in any database it chooses.
</p>
<p>
- Unlike NSS, <tt>nsss</tt> does not perform dynamic module
+ <tt>nsss</tt> does not perform dynamic module
loading, only adds a small footprint to the application's binary,
and does not add any complex decision engine into the client's address
space. Applications can be statically linked against the <tt>nsss</tt>
@@ -55,7 +67,8 @@ functions.
<hr />
<ul>
- <li> <a href="overview.html">An overview of nsss</a> </li>
+ <li> <a href="nsswitch.html">The problem with <tt>nsswitch</tt></a> </li>
+ <li> <a href="overview.html">An overview of <tt>nsss</tt></a> </li>
</ul>
<hr />
@@ -71,6 +84,10 @@ functions.
2.6.5.0 or later. It's a build-time requirement. It's also a run-time
requirement if you link against the shared version of the skalibs
library. </li>
+ <li> <a href="//skarnet.org/software/s6/">s6</a> version
+2.7.1.1 or later. It's a <em>run-time</em> requirement only, to run
+the nsssd service (and can be done without if you have a suitable replacement
+for <a href="//skarnet.org/software/s6/s6-ipcserver">s6-ipcserver</a>). </li>
</ul>
<h3> Licensing </h3>
@@ -112,14 +129,32 @@ the previous versions of nsss and the current one. </li>
<h3> Commands </h3>
+<p>
+ The following commands are not meant to be directly invoked on the
+command-line. They are meant to be used behind a Unix domain socket
+super-server such as
+<a href="https://skarnet.org/software/s6/s6-ipcserver.html">s6-ipcserver</a>
+in order to provide a
+<a href="https://skarnet.org/software/s6/localservice.html">local service</a>.
+Depending on the chosen command, the service will provide a different
+backend to the name service.
+</p>
+
<ul>
+ <li> The <a href="nsssd-unix"><tt>nsssd-unix</tt></a> program </li>
+ <li> The <a href="nsssd-nslcd"><tt>nsssd-nslcd</tt></a> program </li>
</ul>
+<p>
+ Future versions of nsss will come with more backends.
+</p>
+
<h3> Libraries </h3>
<ul>
- <li> <a href="libnsss/">The <tt>nsss</tt> library interface</a> </li>
- <li> The following primitives are also implemented:
+ <li> <a href="libnsss/">The <tt>nsss</tt> library interface</a>,
+which applications use. A client application using one of the
+following primitives will automatically perform libnsss calls:
<ul>
<li> endpwent() </li>
<li> setpwent() </li>
@@ -144,6 +179,8 @@ the previous versions of nsss and the current one. </li>
<li> getspnam() </li>
<li> getspnam_r() </li>
</ul> </li>
+ <li> <a href="libnsssd/">The <tt>nsssd</tt> library interface</a>,
+which can be used to write additional backends. </li>
</ul>
<hr />