У меня есть сервер, на котором я запускаю nslcd для запроса сервера AD и использую его для авторизации, и он работает, как ожидалось. Теперь я представил nscd, чтобы снизить нагрузку на серверы AD. Результаты немного странные. Если я запускаю процесс nscd в обычном режиме (как пользователь nscd или даже пользователь root), демон не возвращает никакого результата.
[root@ldap-auth-test ~]# id testuser1
id: testuser: No such user
Теперь, чтобы понять, почему это не работает, я попытался ограничить процесс.
strace -p 8327 -f -s 1000
и одновременно я снова сделал идентификатор на testuser1. В это время,
[root@ldap-auth-test ~]# id testuser1
uid=10004(testuser1) gid=10046(A-TESTGROUP1) groups=10046(A-TESTGROUP1) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Я несколько раз пытался проверить, является ли это совпадением, и заметил, что это не так. Я пытался не присоединяться к потокам и мог видеть, что nscd не работает, когда я не подключаюсь к потокам. Любая помощь приветствуется.
[root@ldap-auth-test ~]# lsb_release -a
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final
PS: Я спросил то же самое на Переполнение стека также, поскольку я не уверен, где спросить. Я удалю ненужный, если кто-то может указать, какой из них.
EDIT :: Запуск nslcd в режиме отладки показал, что, если не использовать nscd, демон даже не использует nslcd для запроса. Короче говоря, запрос вообще не запускается, если не используется strace.
Возможно, SELinux - nslcd_selinux (8) - поможет объяснить разницу в поведении при работе под strace (как и процесс, который ожидал, что будет установлен setuid)