如何防止 Samba 数据库“损坏”?

如何防止 Samba 数据库“损坏”?

我的 Samba 配置有问题。我已经使用 Samba 大约 12 或 13 年了,以前从未遇到过这种情况。曾经有一段时间我对 Windows 域非常了解,但 Windows 世界已经离我而去,而随着 Active Directory 的发展,Samba 的各个方面让我感到困惑。

我的设置非常简单。我只有一台服务器,上面有一些磁盘空间和一台打印机,我想与其他 4 台计算机共享。这些年来,我一直在使用一个带有单个 PDC 的简单域。最近,有些事情发生了变化。我不知道是 Lucid 出了问题还是 Samba 进行了一次特定更新,但我的数据库总是出现问题。

有时,我的账户密码会“错误”。我可以登录——我猜是使用缓存的凭据——但我无法安装驱动器或打印到打印机。我想这种情况大约每 30 天发生一次。也许是 45 天。我一直通过在服务器上重置密码来处理这个问题,但这真的很烦人。此外,我从日志中注意到机器密码也变得混乱了。

我最终猜想我的数据库(我已经迁移和更新了大约十二年)太过时了,所以我删除了它并在一个新域上从头开始。现在又发生了这种情况,所以这显然不是问题所在。

我以为可能只是我的 Windows 7 机器有问题,但是现在我的 XP 机器也出现了这种情况。

我不认为这是密码过期策略的问题。如果是的话,我应该会收到提示,说是时候更改密码了,对吧?当我去调查这样的事情时,我会迷失在各种排列组合netpdbedit命令wbinfo中。我习惯于一般不需要它们。我想我曾经将我的帐户添加到其中一个“域管理员”组中,但我不记得是怎么做的了。

我对文档中关于我是否应该在我的配置中运行 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 中有很多这样的问题,没有明确指出哪里可能出错,或者是否需要修复。(是的,我需要 idmapd 来处理 NFSv4。)似乎只适用于 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

那么...发生了什么事?我该如何解决?

相关内容