Nscd — это демон (сервис), который предоставляет кэш для наиболее общих запросов службы имен. По умолчанию, поведение демона кэша определяет файл с настройками /etc/nscd.conf.
Установка сервиса (демона) nscd в Linux Ubuntu:
sudo apt install nscd sudo service nscd restart
Можно посмотреть, что вообще происходит с кешем:
sudo ncsd -g
и список закешированных доменов
sudo strings /var/cache/nscd/hosts
Допустимыми службами являются: passwd, group или hosts. Nscd ничего не знает о протоколах служб. Это также означает, что если вы изменяете .etc/resolv.conf для DNS запросов, nscd продолжит использование старых данных, если вы настроили в файле /etc/nsswitch.conf поиск узлов через использование DNS. В этом случае, вам нужно перезапустить nscd.
Nscd предоставляет кэширование для баз данных passwd, group, и hosts через стандартные интерфейсы libc, такие как getpwnam, getpwuid, getgrnam, getgrgid, gethostbyname, и другие.
Каждый кэш имеет для своих данных отдельное TLL (time-to-live — время жизни); изменения в локальной базе данных (/etc/passwd, и других) приводит к тому что кэш становится неправльным в течении пятнадцати секунд.
Nscd содержит два кэша на каждую категорию: попаданий (найденный элемент) и промахов (ненайденные элемены). Каждый кэш имеет для своих данных отдельный TTL (время жизни). Эти параметры настраиваются в /etc/nscd.conf
. Для того, чтобы программа использовала кэширование, nscd должен быть запущен перед ней. Таким образом NSS кэш может решить проблему отключения сети, благодаря тому, что информация о пользователе будет получаться из кэша, пока он не устареет, даже если нет соединения с LDAP.
Файл /etc/nscd.conf читается демоном nscd при его запуске. Каждая строка задаёт или атрибут и значение, или атрибут, службу и значение. Поля разделяются или пробелами или символами табуляции. Символ # (решётка) говорит от начале комментария; следующие за ним до конца строки символы, не интерпретируются nscd.
logfile debug-file-name
- Задаёт имя файла, в который будет записываться отладочная информация.
debug-level value
- Устанавливает необходимый уровень отладки.
threads number
- Здесь указывается число тредов (нитей) которые запускаются для ожидания запросов. Всегда создаются как минимум пять тредов.
server-user user
- Если эта опция установлена, nscd будет запущен от указанного пользователя, а не от пользователя root. Если используются отдельные кэши для каждого пользователя (ключ -S), то данная опция игнорируется.
enable-cache service <yes|no>
- Разрешает или запрещает кэш заданной службы service .
positive-time-to-live service value
- Устанавливает время жизни (TTL) для положительных (успешные запросы) записей в заданном кэше для службы service . Значение Value задаётся в секундах. БОльшие значения увеличивают вероятность повторного использования запрошенных данных и уменьшают время ответа, но также увеличивают проблемы с достоверностью кэша.
negative-time-to-live service value
- Устанавливает время жизни (TTL) для отрицательных (неуспешные запросы) записей в заданном кэше для службы service . Значение Value задаётся в секундах. Может значительно увеличить производительность, если существуют некоторые файлы, которыми владеет пользователь, у которого идентификатор пользователя (UID) не существует в системных базах данных (например распаковка tar’ом из под суперпользователя root исходных текстов ядра); должно бы быть небольшим, чтобы уменьшить проблемы достоверности кэша.
suggested-size service value
- Задаёт размер внутренней хэш-таблицы, значение value для оптимальной эффективности должно бы быть простым числом.
check-files service <yes|no>
- Разрешает или запрещает проверку изменений для файлов, принадлежащих к заданной службе service . Это файлы /etc/passwd, /etc/group, и /etc/hosts.