学习记录—磁盘自动挂载与OpenList配置

6 阅读4分钟

根据我们完整的对话,以下是你从配置硬盘开机挂载到部署 OpenList 系统服务的全过程总结,包含所有关键步骤、配置细节及最终解决方案。


一、硬盘开机自动挂载配置

1. 查看分区信息

执行 sudo blkid 得到需要挂载的两个 NTFS 分区:

设备用途UUID标签
/dev/nvme0n1p4固态硬盘数据分区1662A3D262A3B5411-固态硬盘
/dev/sda1机械硬盘数据分区2273D1CD6CF37E9C2-机械硬盘

2. 创建挂载点

sudo mkdir -p /mnt/ssd_data   # 实际你可能用了 /mnt/ssd
sudo mkdir -p /mnt/hdd_data   # 实际可能用了 /mnt/hdd

3. 编辑 /etc/fstab,追加以下两行

# 固态数据分区 (NVMe) - 所有用户可读写
UUID=1662A3D262A3B541  /mnt/ssd_data  ntfs-3g  defaults,noatime,nofail,utf8,fmask=000,dmask=000  0  0

# 机械数据分区 (SATA) - 所有用户可读写
UUID=2273D1CD6CF37E9C  /mnt/hdd_data  ntfs-3g  defaults,noatime,nofail,utf8,fmask=000,dmask=000  0  0
  • fmask=000,dmask=000 使得所有用户(包括 nobody)对该分区拥有完全读写权限。
  • nofail 保证分区故障时系统仍能启动。
  • utf8 支持中文文件名。

4. 测试并重启

sudo mount -a          # 测试挂载
sudo reboot            # 验证开机自动挂载

重启后,在 Dolphin 中看到“1-固态硬盘”和“2-机械硬盘”即成功。


二、OpenList 服务部署(systemd)

1. 项目原始位置

~/桌面/openlist/ 包含:

  • openlist(可执行二进制)
  • data/(配置及数据目录)
  • run.sh(原启动脚本,不再使用)

2. 移动到系统目录

sudo mkdir -p /opt/openlist
sudo cp -r ~/桌面/openlist/* /opt/openlist/
sudo chmod +x /opt/openlist/openlist

3. 开放目录权限(允许任意用户写入)

因为程序需要写入子目录,且你希望家庭环境下任何用户都能读写,执行:

sudo chmod -R 777 /opt/openlist

并设置默认 ACL,使以后新建的子目录自动继承 777 权限:

sudo setfacl -d -m u::rwx,g::rwx,o::rwx /opt/openlist

4. 创建 systemd service 文件

文件:/etc/systemd/system/openlist.service

[Unit]
Description=OpenList Server
After=network.target
Wants=network.target

[Service]
Type=simple
WorkingDirectory=/opt/openlist
ExecStart=/opt/openlist/openlist server
Restart=on-failure
RestartSec=5
User=nobody
Group=nogroup
NoNewPrivileges=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
  • 使用 User=nobody(UID 65534)以最小权限运行。
  • 监听端口 5244(>1024,无需 root)。
  • WorkingDirectory 确保程序使用相对路径 data 时能找到配置。

5. 启动并启用服务

sudo systemctl daemon-reload
sudo systemctl enable --now openlist
sudo systemctl status openlist

日志显示服务成功启动:

start HTTP server @ 0.0.0.0:5244

三、遇到的权限问题及解决

问题现象

服务日志报错:

failed get objs: failed to list objs: open /run/media/XUYINGJUN/2-机械硬盘/安装包/: permission denied
  • 程序配置中指向了 /run/media/XUYINGJUN/2-机械硬盘/安装包/
  • 该路径是 udisks 自动挂载的用户目录,权限为 700,只有 XUYINGJUN 能访问。
  • nobody 用户无法进入该目录,导致权限拒绝。

解决方案(采用)

修改 OpenList 配置文件 /opt/openlist/data/config.json,将所有涉及自动挂载路径的项改为使用 /etc/fstab 中固定挂载的路径:

原路径(自动挂载)新路径(固定挂载)
/run/media/XUYINGJUN/2-机械硬盘/安装包//mnt/hdd_data/安装包/
/run/media/XUYINGJUN/1-固态硬盘/.../mnt/ssd_data/...

因为 /mnt/hdd_data/mnt/ssd_data 已通过 fmask=000,dmask=000 开放了 777 权限,nobody 可以正常读写。

操作步骤

sudo nano /opt/openlist/data/config.json
# 修改路径后保存
sudo systemctl restart openlist
sudo journalctl -u openlist -f   # 确认不再有权限错误

四、最终成果

  • 硬盘:开机自动挂载到 /mnt/ssd_data/mnt/hdd_data,所有用户可读写,支持中文。
  • OpenList 服务:以 nobody 用户运行,开机自启,崩溃自动重启,监听 5244 端口,能正确读写固定挂载的硬盘路径。
  • 系统安全:避免使用 root 运行网络服务,遵循最小权限原则;目录权限 777 在家庭环境中可接受。

五、后续维护提醒

  1. 防火墙(如需外部访问):

    sudo firewall-cmd --add-port=5244/tcp --permanent
    sudo firewall-cmd --reload
    
  2. 查看服务日志

    sudo journalctl -u openlist -f
    
  3. 修改配置后重启服务

    sudo systemctl restart openlist
    
  4. 若添加新子目录需继承 777:已设置默认 ACL,无需额外操作。


以上即是你从硬盘挂载到服务部署的完整技术记录。所有配置均已在你的 openSUSE Leap 系统上验证通过。