我在 Ubuntu 18.04 上共享一些文件夹,以便可以从 Windows 客户端对它们进行读/写访问。
文件结构:
myshare/
dir1/
somefile1.txt
somefile2.txt
dir2/
dir3/
samba 客户端对里面的文件有读/写/创建/删除的权限dir1
。
我遭遇了一次意外的用户事故:一名用户击中了删除dir1
,里面的所有文件都dir1
被删除了。
我无法应用可以防止这种情况发生的权限设置。这一切似乎都归结于 Samba 客户端如何实现文件夹结构的删除,它们通过列出文件夹内容然后从目录树的最深层递归地逐个执行文件删除来实现。
底线:在服务器端,我没有机会区分允许的单个文件删除和不需要的、完整的、递归的文件夹删除。
我是否遗漏了什么?
我想到过两个办法,但没能找到解决办法:
我可以在其中放置一个文件
dir1
,导致 Samba 客户端中止批量删除操作吗?我曾经成功地放置了一个不可删除的文件但dir1
成功似乎是随机的。我注意到,如果我创建
dir1
共享的根目录,上述风险就消失了。如果用户随后按下删除键,dir1
操作将被拒绝,这是完美的。但将dir1
、dir2
等dir3
作为单独的共享并不能很好地扩展。我希望用户只有一个接入点/myshare
。但有没有办法让它dir1
像共享一样运行(这样客户端可以浏览它但不能删除它)但仍然出现在里面/myshare
?
仅适用于 Windows 文件资源管理器客户端的解决方案是可以接受的。