Skip to content
This repository has been archived by the owner on Jan 25, 2024. It is now read-only.
/ nsncd Public archive
forked from twosigma/nsncd

non-caching Rust implementation of the nscd protocol [maintainer=@flokli, @picnoir]

License

Notifications You must be signed in to change notification settings

nix-community/nsncd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nsncd - the name service non-caching daemon

nsncd is a nscd-compatible daemon that proxies lookups, without caching.

Notes About the Nix-Community Fork

We use nsncd in NixOS as a nscd replacement.

This repo was used until support for host lookups ended in the upstream project. Considering this support landed upstream, this fork is inactive.

Why?

nsncd can be used in situations where you want to make an application use nss plugins available to a different libc than the one the application will load. Since most (all?) libc implementations will try to use /var/run/nscd/socket if it exists, you can make all lookups on a machine attempt to use the libc that nsncd is running with (and any nss plugins available to it), regardless of the libc used by a particular application.

It is also a fairly minimal and clean implementation of (a part of) the nscd protocol, which is otherwise only really documented in implementations of libc, and mailing lists.

Installing

Just run the nsncd binary and it will listen at /var/run/nscd/socket. There's a simple systemd unit file, too.

If you're on a Debian-based system, you can use the provided Debian package to install nsncd to run under systemd. See debian/README.source for how to build it - we use a few Rust crates that aren't packaged for stable Debian releases.

Configuration

nsncd looks in its environment for configuration.

There are two integer variables we pay attention to: NSNCD_WORKER_COUNT and NSNCD_HANDOFF_TIMEOUT. Both must be positive (non-zero), and the timeout is in seconds.

We also pay attention to variables NSNCD_IGNORE_<DATABASE> where <DATABASE> is one of the database names from nsswitch.conf(5), capitalized:

  • NSNCD_IGNORE_GROUP
  • NSNCD_IGNORE_HOSTS
  • NSNCD_IGNORE_INITGROUPS
  • NSNCD_IGNORE_NETGROUP
  • NSNCD_IGNORE_PASSWD
  • NSNCD_IGNORE_SERVICES

These variables must be either true or false. The default is false (don't ignore any requests). If one of these variables is set to true, nsncd will not respond to the requests related to that database.

Some request types may be ignored by the implementation (e.g. the ones that request a file descriptor pointing into internal cache structures).

Bug Reports and Contributions

Please create GitHub issues and/or pull requests.

License

nsncd is licensed under the Apache License 2.0.

About

non-caching Rust implementation of the nscd protocol [maintainer=@flokli, @picnoir]

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Languages

  • Rust 95.5%
  • C 2.5%
  • Shell 1.5%
  • Dockerfile 0.5%