一、工具诞生背景(大家都会遇到的痛点)
飞牛 NAS 原生存储机制有个硬性限制:硬盘必须在系统内格式化,才会被识别为内置存储,系统自带的应用权限面板才能正常管控文件夹。
很多玩家手里早就存满电影、资源的旧硬盘,直接插上机器只会被识别成外置磁盘,原生面板完全无法控制外置盘的读写权限。
不同影音、刮削、下载应用都对应独立的系统账号(比如 trim-media),想要让软件正常读取、写入盘里的资源,只能手动 SSH 敲一堆 Linux 命令改属主、属组、权限,门槛极高,还很容易踩坑:
- 单纯 chown 只能改用户,容器自带 AppUsers 组残留,软件只能读不能写;
- 权限无法灵活切换,私有库、共享媒体盘、公共上传盘只能硬改代码;
- 新建文件夹后还要重复执行 3 条授权命令,操作繁琐。
基于这个痛点,我开发了一套网页可视化权限工具,不用记任何命令,浏览器点选就能一键完成目录归属、读写权限**配置,专门适配挂载在 /vol00下的所有磁盘。
二、关于我硬盘显示中文盘符的说明(重要前置提醒)
很多人会疑惑,为什么我的磁盘路径是 /vol00/4T电影盘这种中文名字,这里统一解释清楚:
飞牛原生外接硬盘不会自定义中文目录名,我是通过修改 /etc/fstab,使用磁盘 UUID 自定义挂载路径实现中文盘符,贴出我的 fstab 参考:
plaintext
# 根文件系统(系统必需,请勿移除)
UUID=e2fe866e-92f4-41bc-9151-84ba568807b2 / ext4 errors=remount-ro 0 1
# 交换文件(系统必需)
/swapfile none swap sw 0 0
# EFI系统分区(系统必需)
UUID=6890-5F3A /boot/efi vfat umask=0077 0 1
#东芝4T电影盘 EXT4
UUID=cdc2a561-49d9-4e5c-952f-8f19678bce10 /vol00/4T电影盘 ext4 rw 0 0
#希捷4T机械硬盘 EXT4
UUID=75824c67-6535-476d-be03-242518e0da60 /vol00/4T机械硬盘 ext4 rw 0 0
#西数1T备份盘 EXT4
UUID=e6399d7b-4802-4773-851c-c43d6eff5646 /vol00/1T备份盘 ext4 rw 0 0
给使用者的两点关键提示
- 工具不区分中文 / 英文文件夹名称:只要磁盘挂载在
/vol00内,不管目录叫什么名字,工具都能正常扫描、授权;盘符是中文完全不影响功能。
- 两种情况适配方案:
① 想自定义中文盘符:修改 /etc/fstab,通过 UUID 挂载到 /vol00/自定义名称,重启生效;
② 不想折腾挂载脚本:只要你的磁盘最终挂载根目录是 /vol00,工具直接正常使用;
③ 磁盘不在 /vol00挂载:要么改 fstab 统一挂载到 vol00,要么打开 app.py修改第一行 BASE_DIR = "/vol00"为你的实际挂载路径。
额外提醒:外置存量硬盘千万别在飞牛系统里格式化,会清空硬盘全部影视数据!
三、工具完整核心功能
- 双重强制修正属主属组,根治只读 bug
工具内部自动执行 chown -R + chgrp -R两条命令,彻底覆盖残留的 AppUsers 用户组,目录完整归属目标应用账号,不会出现只能浏览无法写入的问题。
- 三档权限下拉自由切换,无需反复改代码打包
- 700 私有模式:仅绑定账号拥有读写,其他软件完全无法访问,适合私密资源库;
- 775 媒体共享模式:账号 + 同组可读写,其余程序仅可读,绝大多数影音刮削软件通用;
- 777 全开模式:所有账号、应用完整读写,适合多人公共上传盘。
- 两种目录操作模式
- 使用现有目录:直接选中已存在的文件夹一键授权;
- 新建子目录:选定上级磁盘目录,输入名称自动创建文件夹并同步配置权限。
- 多层安全防护
- 路径白名单校验:仅允许操作
/vol00内目录,杜绝越权访问系统文件;
- 账号名校验:仅允许合法字母数字下划线账号;
- 权限白名单:只放行 700/775/777 三种安全权限,拒绝非法参数。
- 纯网页可视化操作,小白零门槛
打开浏览器即可使用,页面自动加载全部磁盘目录,操作成功 / 失败实时弹窗提示,完全不用 SSH 命令。
四、两种部署方案(新手优先选离线镜像)
方案 1:离线镜像 tar 包(推荐普通用户,开箱即用)
我导出了完整镜像 tar 文件,内置全部代码、运行环境,不用自己构建:
- 将 tar 镜像上传至 NAS 任意目录;
- 新建 Docker 项目
docker-compose.yml(必须挂载 /etc/passwd,否则无法读取系统用户 UID/GID,工具直接报错);
- 启动容器,浏览器访问
NASIP:5000 直接使用。
方案 2:源码手动构建(适合懂 Docker、需要自定义挂载路径的用户)
替换 app.py、index.html两个文件,执行**打包更新命令:
bash
运行
cd /vol1/1000/Docker/fn-nas-perm
docker compose rm -f
docker rmi fn-nas-perm-fn-perm-tool
docker compose build --no-cache
docker compose up -d
五、配套分享文件清单
- 权限工具完整离线镜像 tar 包
- 后端
app.py + 前端页面 index.html完整源码
- docker-compose.yml 标准部署模板
- UUID 自定义中文盘符 fstab 挂载参考(上文已贴)
- 完整图文操作教程
六、高频避坑总结
- 容器配置必须挂载
/etc/passwd:/etc/passwd:ro,缺失会读取不到系统用户,授权报错;
- 磁盘挂载路径不在
/vol00,二选一:修改 fstab 挂载目录 / 修改代码内 BASE_DIR;
- 存量外置硬盘禁止系统内格式化,会清空全部数据;
- 授权完成后可执行命令
ls -ld "目录完整路径" 核对属主、属组、权限是否生效。
结尾
工具全系列飞牛 NAS 通用,ARM、X86 机型都能正常运行,完美解决外接存量电影盘权限管控难题,省去大量 SSH 命令操作。使用中遇到任何问题,欢迎在评论区留言交流。
镜像文件:
通过网盘分享的文件:fn-nas-perm.tar
链接: https://pan.baidu.com/s/1wsLyeAzmxrThsx8eHjeo1w?pwd=trb8 提取码: trb8 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v5的分享
程序本体:
通过网盘分享的文件:fn-nas-perm.rar
链接: https://pan.baidu.com/s/1XtoJxg2cAUGIWDax9U4o6w?pwd=yhpp 提取码: yhpp 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v5的分享
导入方式:

效果:

