Linux

當 strace 附加到程序時,nscd 工作

  • October 5, 2015

我有一個伺服器,我正在執行 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 的程序一樣)

引用自:https://serverfault.com/questions/726771