當 strace 附加到進程時 nscd 起作用

當 strace 附加到進程時 nscd 起作用

我有一台伺服器,我正在其中運行 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

PS:我也問過同樣的問題堆疊溢位同樣,因為我不知道該去哪裡問。如果有人能指出是哪一個,我會刪除不相關的。

編輯:: 在偵錯模式下運行 nslcd 表明,除非在 nscd 上進行跟踪,否則守護程序甚至不使用 nslcd 進行查詢。簡而言之,除非使用 strace,否則根本不會觸發查詢。

答案1

SELinux 也許 - nslcd_selinux(8) - 這將有助於解釋在 strace 下運行時行為的差異(就像期望被 setuid 的進程一樣)

相關內容