Я делаю ответы модуля NSS в зависимости от имени вызывающего абонента.Например, если sshd вызывает getpwnam_r(...)
, pw_shell
будет / bin / bash ;если telnetd вызывает getpwnam_r(...)
, pw_shell
будет / bin / ksh .
Создан прототип, и он работает.Однако, когда nscd работает и кэш горячий, функция модуля вызываться не будет.Кэшированный результат nscd возвращается каждому вызывающему. nscd предполагает, что единственной переменной результата является время;он никогда не думает, что имя процесса повлияет на результат.
Предположим, мы можем заставить некоторый демон или модуль переопределить nscd , код должен проверять, есть ли имя процесса в моем списке или нет.Если он есть в списке, пропустите nscd ;в противном случае, пусть nscd ответ getpwnam_r(...)
.
Возможно ли это?
Редактировать: Менее предпочтительно, но в порядке альтернативы - обходить nscd при звонке getpwnam_r(...)
.