我们有一个用于Windows机器的networking共享的Linux的盒子共享。 我们把可执行文件放在里面供大家使用。 问题是如果任何人有应用程序运行,我们不能更新共享上的文件。
奇怪的是,如果你从Windows机器上删除文件,它似乎成功完成,但是当你刷新目录,它再次出现。 此外,如果您尝试复制该文件,它只是挂起,它不会给出权限错误。
我希望或者一个用户被拒绝删除一个文件的权限,因为其他人已经打开或者允许你删除它。 奇怪的是,如果你删除文件,然后另一个用户closures文件,它突然消失,不好。
理想情况下,将有一种方法告诉smbd不允许任何人locking一个文件的特定份额。 如果有人删除文件,即使其他用户打开文件,该文件也应该被删除。
Samba仅支持在服务(共享)级别禁用locking,而不支持在单个文件级别。 禁用locking会造成数据损坏的可能性,并且手册页会对其进行警告。 (我从来没有这样做,所以我不能给你任何个人轶事,这听起来对我来说是一个坏主意。)
你所要求的并不是真正的基于Windows的SMB服务器所能做到的,所以我可以想象它会产生问题,特别是如果你正在运行任何使用共享文件共享的“数据库”应用程序。
如果你必须这样做,我会把一个完整的服务用于这个可执行文件,以确保你不会用其他文件创build数据损坏。