![如何防止 Samba 数据库“损坏”?](https://linux22.com/image/1036026/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20Samba%20%E6%95%B0%E6%8D%AE%E5%BA%93%E2%80%9C%E6%8D%9F%E5%9D%8F%E2%80%9D%EF%BC%9F.png)
我的 Samba 配置有问题。我已经使用 Samba 大约 12 或 13 年了,以前从未遇到过这种情况。曾经有一段时间我对 Windows 域非常了解,但 Windows 世界已经离我而去,而随着 Active Directory 的发展,Samba 的各个方面让我感到困惑。
我的设置非常简单。我只有一台服务器,上面有一些磁盘空间和一台打印机,我想与其他 4 台计算机共享。这些年来,我一直在使用一个带有单个 PDC 的简单域。最近,有些事情发生了变化。我不知道是 Lucid 出了问题还是 Samba 进行了一次特定更新,但我的数据库总是出现问题。
有时,我的账户密码会“错误”。我可以登录——我猜是使用缓存的凭据——但我无法安装驱动器或打印到打印机。我想这种情况大约每 30 天发生一次。也许是 45 天。我一直通过在服务器上重置密码来处理这个问题,但这真的很烦人。此外,我从日志中注意到机器密码也变得混乱了。
我最终猜想我的数据库(我已经迁移和更新了大约十二年)太过时了,所以我删除了它并在一个新域上从头开始。现在又发生了这种情况,所以这显然不是问题所在。
我以为可能只是我的 Windows 7 机器有问题,但是现在我的 XP 机器也出现了这种情况。
我不认为这是密码过期策略的问题。如果是的话,我应该会收到提示,说是时候更改密码了,对吧?当我去调查这样的事情时,我会迷失在各种排列组合net
和pdbedit
命令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
那么...发生了什么事?我该如何解决?