![当 strace 附加到进程时,nscd 可以工作](https://linux22.com/image/668173/%E5%BD%93%20strace%20%E9%99%84%E5%8A%A0%E5%88%B0%E8%BF%9B%E7%A8%8B%E6%97%B6%EF%BC%8Cnscd%20%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C.png)
我有一台服务器,我正在其中运行 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 进行了 id 操作。这一次,
[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
附言:我也问过同样的问题堆栈溢出我也不知道该问哪里。如果有人能指出哪个是相关的,我会删除不相关的。
编辑:在调试模式下运行 nslcd 表明,除非对 nscd 进行 strace,否则守护进程甚至不会使用 nslcd 进行查询。简而言之,除非使用 strace,否则根本不会触发查询。
答案1
SELinux 或许是 nslcd_selinux(8) —— 这将有助于解释在 strace 下运行时行为的差异(就像预期被 setuid 的进程一样)