如何使用 SabreDAV 创建一个简单的 public 只读 WebDAV 服务器?

How do I make a simple public read-only WebDAV server with SabreDAV?

我最近开始研究 WebDAV,因为我发现它是让我远程播放蓝光文件夹的一个选项 - 即不需要观众先下载整个 24gb ISO。

将 Kodi v18 中的 WebDAV 源添加到蓝光文件夹 - 它真的可以播放了!非常棒

服务器也可以用

安装在Windows上
net use m: http://example.com/webdavfolder/

或在Linux中与

sudo mount -t davfs http://example.com/webdavfolder/ /mnt/mywebdav

-然后应该(理论上)与任何支持蓝光光盘 Java (BD-J) 的软件媒体播放器一起播放,例如 PowerDVDVLC.

vlc bluray:///mnt/mywebdav --bluray-menu
PowerDVD.exe AUTOPLAY BD m:

(当然,除非超时值设置得太低,目前 VLC 似乎就是这种情况)。

无论如何,这一切都很棒,只是我不知道如何让我的 WebDAV 服务器 只读。目前任何人都可以随心所欲地删除文件,这当然不是最佳选择。

到目前为止,我只试验过 SabreDAV,因为据我所知,如果我想继续使用我现有的虚拟主机,这是我唯一的选择。尝试使用非常小的设置,因为我读过最小设置应该默认为只读解决方案。它似乎并没有发生。

我最初使用 http://sabre.io/dav/gettingstarted/ 中的设置并尝试删除一些行。还尝试在网络服务器上调用 chmod 0444 MainFolder -R。而且我可以看到所有内容都具有只读属性。但它没有任何改变。仍然可以删除我想要的任何内容。 :-(

我错过了什么?

也许我为我想做的事情使用了错误的技术?有没有什么 other/better 方法可以提供用于远程观看的蓝光文件夹? (包括整个体验的一个 - 即完整的 Java 菜单等)。

我应该提一下,所有这一切当然是完全合法的。这是我自己的蓝光项目 - 没有版权 material.

另外:很难决定这是属于 Whosebug 还是 SuperUser。我最终将其发布在 Whosebug 上,因为 SabreDAV 是关于编码的,而且因为 SuperUser 上没有 sabredav 标签。

您有两个选择:

  • 为 sabre/dav 创建您自己的 file/directory 类,它只会在尝试删除时抛出错误。您基本上可以从 Sabre\DAV\FS\DirectorySabre\DAV\FS\File 的副本开始,然后更改写入的方法。
  • 由于您正在考虑只使用 linux 文件权限,您真正缺少的关键是 'deleting' 不受您试图删除的文件或目录的控制。要在 unix 中删除文件或目录,您只需要对父目录具有写权限。但是,我不建议走这条路,因为这样做只会导致 sabre/dav 中出现奇怪的错误,这可能会使客户处于困惑状态。它会导致 500 错误,而不是预期的 403 错误。