我们在 Linux 机器上有一个 SMB 共享,它用作 Windows 机器的网络共享。我们在上面放了一个可执行文件供所有人使用。问题是,如果有人运行该应用程序,我们就无法更新共享上的文件。
奇怪的是,如果您从 Windows 计算机中删除该文件,它似乎成功完成,但当您刷新目录时,它又会出现。此外,如果您尝试复制该文件,它只会挂起,不会给出权限错误。
我期望要么用户被拒绝删除文件,因为其他人打开了该文件,要么允许您删除它。奇怪的是,如果您删除该文件,然后其他用户关闭该文件,该文件就会突然消失,这可不好。
理想情况下,应该有一种方法可以告诉 smbd 不允许任何人锁定特定共享的文件。如果有人删除了某个文件,则该文件应该被删除,即使其他用户打开了该文件。
答案1
Samba 仅支持在服务(共享)级别禁用锁定而不是在单个文件级别。禁用锁定可能会造成数据损坏,手册页对此发出了警告。(我从未这样做过,所以我不能给你任何个人轶事。在我看来,这听起来是个坏主意。)
您所要求的并不是真正的基于 Windows 的 SMB 服务器会做的事情,因此我可以想象它会产生问题,特别是当您运行任何使用该共享的文件共享的“数据库”应用程序时。
如果你有为了做到这一点,我会为这个可执行文件提供一项完整的服务,以确保您不会对其他文件造成数据损坏。