Linux
當 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:我在Stackoverflow上也問過同樣的問題,因為我不知道在哪裡問。如果有人能指出哪一個是,我會刪除不相關的。
編輯:: 在調試模式下執行 nslcd 表明,除非在 nscd 上進行跟踪,否則守護程序甚至不使用 nslcd 進行查詢。簡而言之,除非使用 strace,否則根本不會觸發查詢。
SELinux 也許——nslcd_selinux(8)——這將有助於解釋在 strace 下執行時的行為差異(就像一個期望為 setuid 的程序一樣)