LINUX.ORG.RU
ФорумAdmin

О роли NSCD в работе NSS


0

0

Столкнулся с непонятным мне поведением системы при авторизации пользователей через OpenLDAP. Сама авторизация работает, с ее настройкой проблем не возникло. Однако в процессе тестирования заметил, что в случае остановки процесса nscd (Name Switch Cache Daemon) обычные пользователи перестают получать информацию из LDAP-каталога. Проявляется это, например, в невозможности получения имени пользователей/групп по их идентификаторам. К примеру, вот так выглядит ls корня для домашних каталогов от обычного пользователя при опущенном nscd:

pacman@node1:~$ ls -la /home
итого 16
drwxr-xr-x 4 root root 4096 Июн 10 08:00 .
drwxr-xr-x 20 root root 4096 Июн 10 07:10 ..
drwxr-xr-x 2 10001 10001 4096 Июн 10 08:01 Obivan
drwxr-xr-x 3 10000 10000 4096 Июн 10 07:11 Vitaly

Причем на LDAP-сервер в этот момент запросы от NSS хоста вообще не прилетают. Если запустить nscd, то все кардинально меняется:

pacman@node1:~$ su
Пароль:
node1:/home/Vitaly# /etc/init.d/nscd start
Starting Name Service Cache Daemon: nscd.
node1:/home/Vitaly# exit
exit
pacman@node1:~$ ls -la /home
итого 16
drwxr-xr-x 4 root root 4096 Июн 10 08:00 .
drwxr-xr-x 20 root root 4096 Июн 10 07:10 ..
drwxr-xr-x 2 obivan obivan 4096 Июн 10 08:01 Obivan
drwxr-xr-x 3 pacman pacman 4096 Июн 10 07:11 Vitaly

При работе под root такого эффекта не наблюдается. Почему? Ведь nscd только кеширует запросы. Или не только?

nscd кеширует те запросы, которые сделал сам. Т.е. он подгружает nss_ldap, передает ему поступающие через сокет запросы и кеширует результаты. Без nscd приложение бы подгружало nss_ldap и передавало ему запросы.

nss_ldap должен читать файлик с настройками (в т.ч. DN и паролем, с которым надо делать bind). Вероятно, файлик недоступен на чтение обычным пользователям, но доступен пользователю (скорее всего - root), от которого запущен nscd. Т.е. в данном случае nscd выступает как точка развязки пользователей.

P.S. nss_ldap мертв, пользуйтесь nss_ldapd, он сам предоставляет такую развязку.

AEP ★★★★★
()
Ответ на: комментарий от AEP

>nss_ldap должен читать файлик с настройками (в т.ч. DN и паролем, с которым надо делать bind). Вероятно, файлик недоступен на чтение обычным пользователям

В нормально настроенном openldap доступ на чтение всех записей, за исключением паролей, дан всем анонимусам и биндиться каким-то конкретным пользователем не обязательно. Собственно, это умолчательная настройка.

markevichus ★★★
()
Ответ на: комментарий от markevichus

Учу читать. Дорого. Файл С НАСТРОЙКАМИ. Что бы присосаться к серваку нужно знать его ИП, например.

anonymous
()
Ответ на: комментарий от anonymous

Настройки и пароли, как правило (в нормальных системах), хранятся в разных файликах.

markevichus ★★★
()
Ответ на: комментарий от AEP

2 AEP: спасибо за разъяснения, многое прояснилось. Действительно, проблему решило chmod 0644 /etc/libnss-ldap.conf (стояло 0600). Я смотрел уже - проверял только права на содержимое /etc/ldap. Почему то информация о тесной интеграции NSS и libc поселила уверенность что все запросы осуществляются с UID рута.

VitalkaDrug ★★
() автор топика
Ответ на: комментарий от AEP

P.S. nss_ldap мертв, пользуйтесь nss_ldapd, он сам предоставляет такую развязку.

С чего бы nss_ldap умирать? /

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.