如何防止 Samba 資料庫「損壞」?

如何防止 Samba 資料庫「損壞」?

我的 Samba 配置有問題。我運行 Samba 已有大約 12 或 13 年了,以前從未見過這種情況。曾經有一段時間,我對 Windows 網域非常了解,但 Windows 世界已經與我擦肩而過,與 Active Directory 一起發展的 Samba 的各個方面都讓我感到困惑。

我的設定非常簡單。我只有一台帶有一些磁碟空間的伺服器和一台印表機,我想在其他 4 台電腦之間共用。這些年來,我一直使用單一 PDC 的簡單網域。最近,有些事情發生了變化。我不知道它是否是 Lucid 的更新,還是 Samba 的特定更新,但我的資料庫中不斷出現一些問題。

有時,我的帳戶密碼會變得「錯誤」。我將能夠登入——我想是使用快取的憑證——但我將無法安裝磁碟機或列印到印表機。我認為這種情況大約每 30 天就會發生一次。也許是 45。另外,我從日誌中註意到機器密碼也變得混亂。

我終於猜到我的資料庫——我已經遷移和更新了大約十幾年——太過時了,所以我刪除了它並從頭開始使用一個新網域。現在又發生了,所以這顯然不是問題所在。

我以為可能只有我的 Windows 7 機器有這種情況,但現在我的 XP 機器也有這種情況。

我不認為這是密碼過期策略的問題。如果是的話,我應該會收到一個提示,說是時候更改我的密碼了,對嗎?當我去調查這樣的事情時,我迷失了netandpdbeditwbinfo命令的各種排列。我已經習慣了一般不需要它們。我想我曾在某個時候將我的帳戶添加到其中一個帳戶的「網域管理員」群組中,但我不記得這是如何完成的。

我對關於是否應該在我的配置中運行 winbind 的文檔感到特別困惑。我不認為我這樣做,但顯然運行wbinfo進行診斷需要它,而且我認為運行它不會傷害任何東西。它默認在 Ubuntu 中運行,所以我想保留它並在可能的情況下使用它。我的 /etc/nsswitch.conf 中未引用 Winbind。

我在日誌中收到很多有趣的錯誤訊息,但 Google 沒有引導我理解其中任何一條。 smb.conf 中的一項告訴我我的工作站之一未正確連接:

[2011/08/27 19:02:04,  0] rpc_server/srv_netlog_nt.c:603(_netr_ServerAuthenticate3)
  _netr_ServerAuthenticate3: netlogon_creds_server_check failed. Rejecting auth request from client PROXIMA machine account PROXIMA$

許多這樣的內容來自 Google 上的 log.winbindd-idmap,沒有明確表明可能出了什麼問題,或者是否需要修復。 (是的,我需要用於 NFSv4 的 idmapd。)似乎是 Ubuntu 特有的。我不知道我的“配置”可能有什麼“不完整”。

[2011/08/27 19:02:04,  0] winbindd/idmap_tdb.c:287(idmap_tdb_open_db)
  Upgrade of IDMAP_VERSION from -1 to 2 is not possible with incomplete configuration
[2011/08/27 19:02:04,  1] winbindd/idmap.c:321(idmap_init_domain)
  idmap initialization returned NT_STATUS_UNSUCCESSFUL

思考log.winbindd 中的這個是無害的,因為 winbindd 只是確定我的伺服器是 PDC 還是其他伺服器:

[2011/08/27 17:55:46,  0] libsmb/namequery.c:75(saf_store)
  saf_store: refusing to store 0 length domain or servername!
[2011/08/27 17:55:46,  1] rpc_client/cli_pipe.c:949(cli_pipe_validate_current_pdu)
  cli_pipe_validate_current_pdu: RPC fault code DCERPC_FAULT_OP_RNG_ERROR received from host EXCELSIOR!

最後,這是我的 smb.conf:


[global]
        workgroup = STARFLEET
        map to guest = Bad User
        obey pam restrictions = yes
        smb passwd file = /var/lib/samba/passdb.tdb
        private dir = /var/lib/samba
        pam password change = yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = yes
        log level = 2
        load printers = yes
        printcap name = cups
        add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
        add group script = /usr/sbin/addgroup --force-badname %g
        add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
        logon script = %U.bat
        logon path =
        logon drive = Z:
        logon home =
        domain logons = yes
        os level = 65
        preferred master = yes
        domain master = yes
        wins support = yes
        usershare allow guests = yes
        use sendfile = yes

[homes]
        comment = Home Directories
        path = /data/Users/%U
        valid users = %S
        read only = no
        create mask = 0700
        directory mask = 0700

[netlogon]
        comment = Network Logon Service
        path = /var/lib/samba/netlogon
        guest ok = yes
        browseable = no
        browsable = no
        share modes = no

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = yes
        browseable = yes
        browsable = yes

[data]
        path = /data
        read only = no
        guest ok = yes

[temp]
        path = /data/Temp
        read only = no
        guest ok = yes
[homes]
        comment = Home Directories
        path = /data/Users/%U
        valid users = %S
        read only = no
        create mask = 0700
        directory mask = 0700

那麼...發生了什麼事,我該如何解決它?

相關內容