0%

【弃用】OpenWRT配置WebDAV的简明教程(基于Lighttpd)

OpenWrt for networking projects | Lemberg Solutions

过于折腾,在有了一台群晖后我个人已弃用此方法。

安装相关软件

1
2
opkg update
opkg install lighttpd lighttpd-mod-auth lighttpd-mod-authn_file lighttpd-mod-webdav

配置Lighttpd端口号

为什么要这么做?

因为Lighttpd的默认端口号为80,与LuCI的默认端口号冲突。后续启用Lighttpd会导致LuCI无法正常访问(即便WebDAV可以使用)。

修改Lighttpd的配置文件:/etc/lighttpd/lighttpd.conf

在其中添加/修改下行:

1
server.port = <PORT>

此处的<PORT>为你想要设置的端口号。

配置Lighttpd

此处假设你要共享的目录为:/mnt/disk

注意:下方的配置为映射整个磁盘分区的方法,这个做法在我自己的软路由上成功实现了,但是亦有说法称不能对磁盘根目录进行映射,并且我在其他软路由上也未能成功配置。

若有需要,建议“配置Lighttpd”这一步跟随官方教程。区别在于官方教程映射的是某个具体的目录,而非整块分区。

此外还需要注意:如果映射的URL有大写字母,在部分操作系统(如Windows)提供的原生映射支持(如资源管理器)可能会出现“0x80070043 无法找到网络名”的错误。

手动创建所需目录

1
mkdir -p /etc/lighttpd/conf.d /var/lib/lighttpd

为 http:www-data 分配目录访问权限

1
chown http:www-data /mnt/disk /var/lib/lighttpd

向配置文件写入配置(注意,配置中的内容要根据具体情况修改,详见下方说明)

1
2
3
4
5
6
7
8
9
10
11
cat << "EOF" > /etc/lighttpd/conf.d/99-disk.conf
$HTTP["url"] =~ "^/disk($|/)" {
server.document-root := "/mnt"
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/webdav.shadow"
auth.require = (
"/disk" => ("method" => "basic", "realm" => "disk", "require" => "valid-user")
)
auth.cache = ("max-age" => "3600")
}
EOF

这里最后一个命令可能需要改动的地方有:

  • 第三行的/mnt,需要改为你要共享的根目录,这里是一般磁盘挂载的目录。
  • 第二行的一个、第七行的两个disk,需要改为你要共享的子目录。

这里的配置含义是,将/mnt/disk目录通过WebDAV共享,日后可以通过http://<IP>:<PORT>/disk的形式访问。

设置密码

1
echo "<youruser>:<somesecret>" > /etc/lighttpd/webdav.shadow

其中<youruser>为用户名,<somesecret>为密码。

注意:这个密码未经编码,并以明文形式保存在路由器上(以确保更好的性能)。如果黑客可以访问该文件,它可以看到您的密码。所以不要在这里放置您在其他任何地方使用的密码。

重启Lighttpd

1
/etc/init.d/lighttpd restart

关于Windows映射WebDAV

在某些版本的Windows中,默认只支持映射HTTPS协议的WebDAV(即WebDAVs),并且WebDAV驱动器的最大文件大小被限制为50MB。

这个文件可以解除这个限制,并把大小放大到4GB。

参考

WebDAV Share

Lighttpd webserver

login to WEBDAV folder doesn’t work Error code 0x80070043