![Linux 自定义 NSS 模块,调用 `_nss_SERVICE_getspnam_r` 但未调用 `_nss_SERVICE_getpwnam_r`](https://linux22.com/image/723299/Linux%20%E8%87%AA%E5%AE%9A%E4%B9%89%20NSS%20%E6%A8%A1%E5%9D%97%EF%BC%8C%E8%B0%83%E7%94%A8%20%60_nss_SERVICE_getspnam_r%60%20%E4%BD%86%E6%9C%AA%E8%B0%83%E7%94%A8%20%60_nss_SERVICE_getpwnam_r%60.png)
我正在创建一个自定义 NSS 模块。我设法让它在我本地的 Redhat 7.3 机器上运行,配置nsswitch.conf
正确
passwd: files SERVICE
shadow: files SERVICE
并确认_nss_SERVICE_getpwnam_r
和 _nss_SERVICE_getspnam_r
均被调用:
getenv passwd username
getenv shadow username
但是当我在另一台机器上编译并安装它之后,也是在 RedHat 7.3 上,它只能_nss_SERVICE_getspnam_r
成功调用。我打印出日志以确保只要 glibc 进入该函数,就会有跟踪,但仍然无法正常_nss_SERVICE_getpwnam_r
工作。一定有一些其他配置被覆盖了,nssswitch.conf
不是吗?这个问题可能是什么原因造成的?
答案1
nscd 妨碍了。它还会缓存负面调用。