如何獲取 Samba 中所有域使用者的最後一次 Windows 域登錄時間?
我們將 samba 作為主域控制器執行,使用 ldap 進行使用者帳戶設置。正如標題所說,我正在尋找一種簡單的方法來獲取每個域使用者的最後登錄時間。
我可以生成一個腳本來從 pam 或 ldap 中查找所有使用者名並 grep samba 日誌文件,這可能容易出錯。我想已經有一種預期的方式來做到這一點。
那麼,如何在任何/所有 Windows 機器上獲取每個使用者的最後登錄時間?
我有一段時間沒有使用 samba + LDAP,但我記得架構中有 sambaLogonTime 和 sambaLogoffTime 屬性。
samba-ldap howto提到了這些屬性
但是,我不確定這些是否會自動填充。該連結表明它們不是,儘管現在已經很老了。我不需要使用這些屬性,所以我並沒有真正關注它們
我確實意識到這是一個非常古老的問題。我今天處於同樣的位置,事實證明有一種方法可以在新版本的 Samba 中提取它。(我的案例是 Zentyal 伺服器)
無論如何,您需要的是 LDB 數據庫,它提供 Samba 用於域身份驗證的 LDAP(-light)。在我的伺服器上,它位於
/var/lib/samba/private/sam.ldb.d/
您想要的文件中,該文件是以您的 Base DN 命名的文件。因此,如果您的基本 DN 是,DC=MY,DC=ORGANISATION,DC=com
那麼文件將是DC\=MY\,DC\=ORGANISATION,DC\=com.ldb
.為了查詢某個使用者的資訊,使用他們的全名使用
ldbsearch
。就我而言,如果我想找到使用者 Joe SixPack:
ldbsearch -H /var/lib/samba/private/sam.ldb.d/DC\=MY\,DC\=ORGANISATION,DC\=com.ldb "CN=Joe Sixpack"
這將為您提供有關指定使用者的所有已知資訊。如果您只想他們最後一次登錄,只需指定屬性:
ldbsearch -H /var/lib/samba/private/sam.ldb.d/DC\=MY\,DC\=ORGANISATION,DC\=com.ldb "CN=Joe Sixpack" lastLogon
lastlogon 的格式是“從 1601 年 1 月 1 日的 0 小時到正在儲存的日期/時間已經過去的 100 納秒間隔數”。我不太明白這意味著什麼,但有一篇Microsoft Technet 文章提供了 Excel 公式。