收起左侧

没有文件夹加密功能,那我自己来搭建吧

0
回复
135
查看
[ 复制链接 ]

0

主题

0

回帖

0

牛值

江湖小虾

以前用群晖,文件夹可以进行加密,挂载后,才能查看,而现在切换到飞牛后,发现官方没有这个功能。怎么办?发挥自己动手,丰衣足食的光荣传统,自己搭一个!!!

发现有两个方案可以实现,一个是gocryptfs,一个是cryfs,都是基于内核的FUSE 用户空间文件系统框架的。两个方案大同小异,对比如下。我选了gocryptfs。

区别对比

特性 gocryptfs (推荐) CryFS
加密单位 基于文件(1对1加密) 基于数据块(拆分为固定大小的块)
隐私保护 加密文件名和内容,但泄露文件大小、数量和目录结构 完全隐藏。攻击者无法知道文件大小、数量或目录结构
读写性能 极快。开销非常小,适合 NAS 存储大量数据 较慢。因为要维护复杂的块映射,随着文件增多性能下降明显
存储效率 高。原始文件多大,加密后基本还是多大 较低。由于采用固定块,会产生大量小文件,且存在空间浪费
云同步 非常友好(只同步变动的文件) 较友好,但因为块太多,同步工具压力大
审计/成熟度 经过专业安全审计,非常稳定 基于博士论文设计,尚未经过同级规模的审计

登录飞牛SSH,开干

安装步骤

  1. 先进入root

    sudo -i
    
  2. 安装需要的包

apt update
apt install gocryptfs fuse
  1. 因为ssh挂载用户权限和飞牛web页面用户可能不一致,或者要通过SMB 访问,必须打开允许其他用户访问的选项。
sudo nano /etc/fuse.conf

取消里面user_allow_other的注释,然后Ctrl+S保存,Ctrl+X退出

  1. 建立加密目录和解密挂载目录
    例如:在存储1中建立文件夹xiaomimi,文件夹内部建立存放加密数据的文件夹mi,和挂载解密的明文文件夹ming

image.png

  1. ssh中初始化加密文件夹

    cd /vol1/1000/xiaomimi
    先切换到xiaomimi目录,后面的指令都是在此文件夹下执行
    
    gocryptfs -init ./mi
    
    执行如下所示:输入两次你的加密密码,会生成一个恢复密钥,自己复制保存,以防自己忘记密码时恢复用
    -------------------------------------------
    Choose a password for protecting your files.
    Password:
    Repeat:
    
    Your master key is:
    
        631d7c49-718edfe0-d7baf442-79b291c2-
        cbd4d2eb-ffdf421d-d0d5824f-bc8400ee
    
    If the gocryptfs.conf file becomes corrupted or you ever forget your password,
    there is only one hope for recovery: The master key. Print it to a piece of
    paper and store it in a drawer. This message is only printed once.
    The gocryptfs filesystem has been created successfully.
    You can now mount it using: gocryptfs mi MOUNTPOINT
    
    
  2. 使用时,把加密文件夹挂载到明文文件夹,然后在明文文件夹ming中进行增删改查,内容会自动加密到加密文件夹mi

    gocryptfs -allow_other ./mi ./ming
    

注意:一定要加-allow_other选项,不然ssh挂载了,web端可能没有权限修改

好了,你现在可以把你的小秘密都放到ming文件夹中了!!!!!!!!

  1. 放好了小秘密,卸载明文文件夹,小秘密从ming文件夹消失,藏起来啦!

    fusermount -u ./ming
    

特别注意事项:有些人可能会遇到挂载后,无法在ming文件夹根目录建立文件夹,但可以建立文件的问题,似乎是FUSE对挂载根目录权限太严的原因,这时候,只要挂载后,ssh中去执行强行建立一个子文件夹,然后子文件夹中,就不存在无法建立文件夹的问题了。

挂载ming后,切换到ming目录,建立一个子文件夹

cd ming

mkdir -p mimi
一定要加-p参数,不然无法建立,然后所有数据丢mimi文件夹就好了

为了防止大家每次打命令太累,提供两个脚本,放任意目录,用ssh或者应用市场中的FntermX网页终端执行即可,大家自行取用:

挂载mount.sh:

#!/bin/bash

# 配置路径(请根据你的实际路径修改)
CIPHER_DIR="/vol1/1000/xiaomimi/mi"
MOUNT_POINT="/vol1/1000/xiaomimi/ming"

# 检查是否已经挂载
if mountpoint -q "$MOUNT_POINT"; then
    echo "⚠️ 错误:文件夹已经挂载了。"
    exit 1
fi

echo "🔐 正在准备挂载加密文件夹..."
echo "请输入 gocryptfs 主密码:"

# 执行挂载命令
# -allow_other 确保文件管理器可见
sudo gocryptfs -allow_other "$CIPHER_DIR" "$MOUNT_POINT"

if [ $? -eq 0 ]; then
    echo "✅ 挂载成功!你现在可以在文件管理器访问了。"
else
    echo "❌ 挂载失败,请检查密码是否正确。"
fi

卸载unmount.sh:

#!/bin/bash

# 配置路径
MOUNT_POINT="/vol1/1000/xiaomimi/ming"

echo "🔓 正在尝试卸载加密文件夹..."

# 使用 fusermount 卸载
# -u 卸载,-z 懒惰卸载(如果文件被占用,等不占用后再彻底卸载)
sudo fusermount -u "$MOUNT_POINT"

if [ $? -eq 0 ]; then
    echo "✅ 卸载成功,数据已锁定。"
else
    echo "⚠️ 卸载失败,请确保没有程序(如文件管理器或下载器)正在占用该文件夹。"
fi

用脚本还是不够优雅,还有一种方案是利用docker建立一个网页页面,在页面中进行输入密码,然后点击按钮进行挂载和卸载,等研究好了,再更新出来~~~

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则