树莓派上 www-data 无法访问默认的普通用户自动挂载的存储设备【未完美解决】

最近更新于 2024-10-01 19:28

环境:

  • 树莓派 CM4
  • raspios 20240704 Debian 12 arm64

Table of Contents

2024.10.1

树莓派上预装的文件浏览器是 PCManFM,在插入外部存储设备的时候默认会自动挂载设备
在 Edit-Preferences,切换到 Volume Management,这里就是设置自动挂载的地方,默认是勾选的。
自动挂载会把存储设备挂载到 /media/用户名/存储设备分区名 上
file

file

前面有次部署 Nextcloud (NC)准备扩展存储设备的时候就发现,NC 无法访问到自动挂载的存储设备,当时是采用手动重新挂载的方式临时测试的。这次我又部署了一个 ZoneMinder 监控,打算扩展存储设备用于保存录像,就先测试了下,果然 www-data (Nginx、Apache2都是以这个用户来执行)没有权限访问自动挂载的路径
file

查看挂载路径,用户和用户组都是默认普通用户(当前用户),权限也是 rwxrwxrwx,理论上所属用户、所属用户组、其它用户组都应该有读、写、执行权限的
file

这就很奇怪,然后我测试了把 www-data 添加到用所属户组甚至 root 用户组,都没有对挂载路径的访问权限,所以现在实际的情况是挂载者同组用户和其它组都无法访问,只有所属用户以及 root 这个最高权限用户可以访问到,这就有点无从下手了。

后面又试过配置 udev(希望自定义自动挂载规则),但是插入 USB 存储设备无论如何都不能触发 ACTION=="add", SUBSYSTEM=="block" 事件,完全没法用,日志显示的

Oct 01 10:37:49 raspberrypi mtp-probe[239184]: checking bus 1, device 33: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4"
Oct 01 10:37:49 raspberrypi mtp-probe[239184]: bus: 1, device: 33 was not an MTP device

折腾这个就花了我一上午的事件,还是毫无进展,暂时放弃。临时方案就是 关闭 PCManFM 的自动挂载,然后手动将 USB 存储设备以 www-data 挂载,写了一个简单脚本

#!/usr/bin/env bash

DEVNAME=$1
MOUNT_POINT="/media/$1"

sudo mkdir -p $MOUNT_POINT
sudo chown www-data:www-data $MOUNT_POINT
sudo mount -o uid=www-data,gid=www-data /dev/$DEVNAME $MOUNT_POINT

保存后添加可执行权限,执行脚本的时候后面跟上 USB 存储设备的块文件名
file

file

树莓派上 www-data 无法访问默认的普通用户自动挂载的存储设备【未完美解决】
Scroll to top