Jea*_*tte 13 linux samba server-message-block
这里我有一个配置为托管 Windows XP 配置文件的 Samba 服务器(Debian 5.0)。
客户端连接到此服务器并直接在 samba 共享上处理他们的配置文件(配置文件不在本地复制)。
有时,客户端可能无法正常关闭,因此 Windows 不会释放文件锁。查看 samba 锁定表时,我们可以看到即使客户端不再连接,许多文件仍然被锁定。在我们的例子中,这似乎发生在 Mozilla Thunderbird 和 Firefox 创建的锁定文件中。下面是一个 samba 锁定表的例子:
# smbstatus -L | grep DENY_ALL | head -n5
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
15494 10345 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user1 app.profile/user1.thunderbird/parent.lock Mon Nov 22 07:12:45 2010
18040 10454 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user2 app.profile/user2.thunderbird/parent.lock Mon Nov 22 11:20:45 2010
26466 10056 DENY_ALL 0x3019f RDWR EXCLUSIVE+BATCH /home/CORP/user3 app.profile/user3.firefox/parent.lock Mon Nov 22 08:48:23 2010
Run Code Online (Sandbox Code Playgroud)
我们可以看到文件被 Windows 打开并施加了 DENY_ALL 锁。
现在,当客户端重新连接到此共享并尝试打开这些文件时,samba 会说它们已被锁定并拒绝访问。
有什么办法可以解决这种情况,还是我遗漏了什么?
编辑:我们想避免禁用Samba服务器上的文件锁定,因为那里是有那些能很好的理由。
小智 12
以下步骤帮助我在许多情况下解决了这个确切的问题:
看一下:
reset on zero vc = yes / no
Run Code Online (Sandbox Code Playgroud)
看看这是否会解决您的问题。
从smb.conf手册页:
此布尔选项控制传入会话设置是否应终止来自同一 IP 的其他连接。这与默认的 Windows 2003 行为相匹配。当您的网络不稳定并且 Windows 决定重新连接而旧连接仍然具有打开共享模式的文件时,将此参数设置为 yes 变得必要。这些文件将无法通过新连接访问。客户端在新连接上发送一个零 VC,Windows 2003 会终止来自同一 IP 的所有其他连接。这样锁定的文件可以再次访问。请注意,启用此选项将终止伪装路由器背后的连接。
编辑:
我只是想了另一个可能的解决方案。您可以对相关共享执行类似操作。
veto oplock files = /*.lock/
Run Code Online (Sandbox Code Playgroud)
这只会防止 .lock 文件上的机会锁。