Dufs 做校内文件服务器:按路径切分师生读写权限
Dufs 做校内文件服务器按路径切分师生读写权限【免费下载链接】dufsA file server that supports static serving, uploading, searching, accessing control, webdav...项目地址: https://gitcode.com/GitHub_Trending/du/dufs机房只有1台闲置服务器两位老师要传课件学生只许下载双方互不可见目录。一个 dufs轻量级文件服务器进程就够--auth 参数按路径切读写权限。选型判断为什么是单二进制而不是 nginxdufs 是 Rust 编译的单静态二进制没有运行时依赖拷到旧机器上就能跑。相比“nginx 静态站 自写鉴权脚本”账户、路径、权限规则用一个参数内置不用配反代和鉴权模块。相比 Nextcloud 这类完整网盘它没有数据库要维护也没有在线编辑和协作——课件场景用不上。它还会说 WebDAV让系统文件管理器把远端目录当本地盘挂载的协议Windows 资源管理器和 macOS 访达可以直接挂载学生终端不用装任何客户端。这个场景里它替你省掉的是装依赖、初始化数据库、维护用户系统权限压缩成一行参数。最小可用路径一条命令起只读服务安装有三条路cargo install dufs docker run --rm -v /srv/courseware:/data -p 8123:5000 sigoden/dufs /data # 或从发行版 release 包拿静态二进制放进 $PATH最小命令dufs /srv/courseware -p 8123第一个参数是资源根目录-p是监听端口默认 5000。不给--allow-*开关、不给-a账户时服务完全只读谁都能浏览下载谁也写不进去。先这样跑起来浏览器确认目录可见、根目录没挂错再加权限端口早点改成 8123避免之后和其他服务撞车。核心配置深拆按路径切分读写权限--auth 语法怎么读规则格式是账户:密码路径1:rw,路径2分隔账户与路径:分隔用户名与密码,分隔多个路径路径尾:rw/:ro表示读写/只读。-a可重复多次学生共用一个组账号即可不必一人一个账号。校内配置dufs /srv/courseware -p 8123 --allow-upload --allow-archive \ -a t_zhang:Zh-2025x/2025-2026:rw \ -a t_li:Li-2025x/2025-2026:rw \ -a stu:Read-2025/2025-2026 \ -a /shared账户路径权限角色t_zhang, t_li/2025-2026rw两位教师上传课件stu/2025-2026ro学生组账号只读匿名/sharedro公开资料免登录一个容易踩的约束账户权限受全局开关限制——即使给了:rw不加--allow-upload也开不了写操作--allow-archive打开目录 zip 下载学生在目录 URL 后加?zip就能整包拿走。规则解析和“路径 × HTTP 方法”的判定逻辑见 src/auth.rs。它内置 HTTP Range范围请求可从断点续传2GB 的录像课在学生网不稳时不必从头再来curl -C-直接续上实现见 src/http_utils.rs。⚠️ --hidden 只匹配名字--hidden接 glob通配模式但只匹配文件或目录的名字不匹配路径--hidden dir1/file是无效的。只想让目录列表里少露几项用--hidden .git,*.log即可若确实不让某个子目录被访问正确做法是-a里不授予该路径或干脆不放进根目录。生产加固HTTPS、哈希密码与日志审计做用--tls-cert/--tls-key上 HTTPS证书格式参考 tests/data/cert.pem密码换成 sha-512 哈希单向摘要不存明文openssl passwd -6生成-b 192.168.10.21绑内网网卡不要监听全部网卡指定--log-file落盘日志格式用$remote_user记录是谁干的rsync增量同步工具每日把 /srv/courseware 拷到备用盘不做不把明文密码留在人人可见的启动脚本里⚠️ 哈希密码下别用 digest 认证Basic 认证变体它不生效不把--hidden当访问控制隐藏只是列表展示直接 URL 仍可访问不放健康监测点__dufs__/health加进巡检加固后的完整启动命令openssl passwd -6 # 输出 $6$... 形式的哈希 dufs /srv/courseware -p 8123 -b 192.168.10.21 \ --tls-cert /etc/dufs/edu.crt --tls-key /etc/dufs/edu.key \ --log-file /var/log/dufs/access.log \ --log-format $remote_addr $remote_user $request $status \ -a t_zhang:$6$hash.../2025-2026:rw --allow-upload长期运行可以把整条命令搬进 YAML 配置文件格式见 tests/data/config.yaml用--config启动断电重启只需重跑这一行。规模演进从一间机房到全校主节点读写教师账号 /srv/courseware │ ├─ rsync 每日 02:00 ── 分院节点 A只读 ── A 机房终端 └─ rsync 每日 02:00 ── 分院节点 B只读 ── B 机房终端每个分院节点就是一个 dufs 实例加一行 cron学生终端只连本机房节点。全校规模即“1 个主 N 个只读镜像”同步方向单向拉取再开第三间机房时多起一个节点、多写一行 rsync 即可目录结构和账号体系不动。【免费下载链接】dufsA file server that supports static serving, uploading, searching, accessing control, webdav...项目地址: https://gitcode.com/GitHub_Trending/du/dufs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考