Windows 7 Samba 問題

Windows 7 Samba 問題

我們遇到一個奇怪的 samba 問題,只影響一名用戶。我們的 Samba 設定如下:

紅帽企業 Linux 伺服器版本 5.4 (Tikanga) - Samba 伺服器

Samba 版本 3.0.33-3.14.el5 - Samba 版本

網域控制器 WIN2008R2 標準版 - Windows DC

Windows 7 64 位元 - 用戶端 PC

用戶提到,幾週前他強制關閉電腦後遇到了這個問題。正確的是,對於所有用戶,當我們\\sambaservername在 Windows 中訪問時,它將顯示 samba 伺服器中的所有共享,但是對於該用戶,一旦啟動他的 PC,他將無法訪問\\sambaservername,錯誤訊息

Windows 無法存取\\sambaservername

目前解決該問題的解決方法:

\\sambaservername例如,嘗試存取 中的一個共用\\sambaservername\sharedfolder1。但即使這樣做,一開始也會先提示錯誤,錯誤訊息如下

登入失敗:使用者名稱未知或密碼錯誤。

使用者需要再次輸入憑證才能存取共用。此後,他將能夠\\sambaservername毫無問題地訪問。但一旦他重新啟動計算機,問題仍然存在。

目前已完成的故障排除:

  1. 確保以下設定:

    前往:控制台 → 管理工具 → 本機安全性原則 選擇:本機原則 → 安全性選項

    「網路安全:LAN Manager 驗證等級」→ 傳送 LM 和 NTLM 回應 「NTLM SSP 的最低會話安全性」→ 取消選取:需要 128 位元加密

  2. 建議用戶重置密碼並重試,但問題仍然存在

  3. 在使用者的電腦上嘗試了我的帳戶,沒有問題。在包括我在內的多台其他 Windows 7 PC 上嘗試過使用者帳戶,但問題仍然存在。 Windows XP 就沒有這個問題。

  4. 確保 Windows 7 PC 上沒有儲存憑證。檢查控制面板中的憑證管理員並輸入此命令rundll32.exe keymgr.dll, KRShowKeyMgr

  5. 重新啟動 samba 伺服器上的 winbindd 守護程序但無濟於事。

我懷疑這是由於某些快取問題造成的,但不確定問題出在哪裡。每當使用者造訪時發生錯誤\\sambaservername,samba 伺服器將記錄下列錯誤:

[2012/10/10 17:10:26, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!
[2012/10/10 17:10:27, 1] smbd/sesssetup.c:reply_spnego_kerberos(316)
  Failed to verify incoming ticket with error NT_STATUS_LOGON_FAILURE!

但解決之後,就不會再出現錯誤了。我懷疑在閱讀下面列出的文章後需要對該\var\samba\cache目錄進行一些修改:

有幾個用戶使用 samba 伺服器,我想在不造成任何影響的情況下解決這個問題。

我看到了以下文章:

「winbind 離線登入 (G) 此參數旨在控制 Winbind 是否允許使用快取憑證透過 pam_winbind 模組登入。如果啟用,winbindd 將在本機快取中加密儲存成功登入的使用者憑證。

預設值:winbind 離線登入 = false

範例:winbind 離線登入 = true "

關於如何刪除本地快取中一個使用者的條目有什麼想法嗎?

答案1

我不確定是否nbtstat -R命令(其中“清除並重新載入遠端快取名稱表。”)或nbtstat -RR一個(其中“將名稱釋放資料包發送到 WIN,然後開始刷新。”)可以做任何事情來強制執行您正在尋找的刷新......

如果你想查看手冊,看這裡..

答案2

檢查以確保 ntpd 與網域控制站同步。我遇到了同樣的問題,直到今天我注意到有問題的伺服器和網域控制器之間有 45 分鐘的時間差。當我運行 ntpdate 後,它工作得很好。

答案3

根據我的經驗,這通常是網域控制器上時間漂移的結果,或者在您的情況下只有一個客戶端有問題,即連接客戶端電腦。由於 Kerberos 在身份驗證伺服器請求和身份驗證伺服器回應(AS_Req 和 AS_rep)中都包含與時間相關的參數,因此較大的差異將導致會話令牌被拒絕。

AS_Req 包含所要求的令牌生命週期: AS_REQ = (PrincipalClient,PrincipalService,IP_list,Lifetime)

AS_Rep 包含 DC 時間戳與應用的生命週期: AS_REP = { PrimaryService , Timestamp , Lifetime , SKTGS }

因此,如果時間方差超出生命週期,則連線將被拒絕。

猜想:我無法透過文件確認生命週期是以分鐘為單位指定的,但我認為這是因為我有一台可以間歇性工作的機器,而我能想到的唯一原因是它就在邊界上一生的。因此,大約 30 秒內它會工作,然後分鐘會翻轉並且連接將被拒絕。

相關內容