Snap 权限(Linux)
本页面介绍在 Linux 上将 Rayforge 作为 Snap 软件包安装 时如何配置权限。
什么是 Snap 权限?
Snap 是出于安全考虑在沙箱中运行的容器化应用程序。默认情况下,它们对系统资源的访问有限。要使用某些功能(如激光控制器的串口),您必须明确授予权限。
必需权限
Rayforge 需要连接这些 Snap 接口才能完全运行:
| 接口 | 用途 | 是否必需? |
|---|---|---|
serial-port | 访问 USB 串口设备(激光控制器) | 是(用于机器控制) |
home | 读写主目录中的文件 | 自动连接 |
removable-media | 访问外部驱动器和 USB 存储 | 可选 |
network | 网络连接(用于更新等) | 自动连接 |
授予串口访问权限
这是 Rayforge 最重要的权限。
检查当前权限
# 查看 Rayforge 的所有连接
snap connections rayforge
查找 serial-port 接口。如果显示"disconnected"或"-",您需要连接它。
连接串口接口
# 授予串口访问权限
sudo snap connect rayforge:serial-port
您只需要执行一次。 该权限在应用更新和重启后保持有效。
验证连接
# 检查 serial-port 是否已连接
snap connections rayforge | grep serial-port
预期输出:
serial-port rayforge:serial-port :serial-port -
如果您看到插头/插槽指示符,则连接已激活。
授予可移动媒体访问权限
如果您想从 USB 驱动器或外部存储导入/导出文件:
# 授予可移动媒体访问权限
sudo snap connect rayforge:removable-media
现在您可以访问 /media 和 /mnt 中的文件。
Snap 权限故障排除
串口仍然无法工作
连接接口后:
-
重新插拔 USB 设备:
- 拔掉激光控制器
- 等待 5 秒
- 重新插入
-
重启 Rayforge:
- 完全关闭 Rayforge
- 从应用程序菜单重新启动或:
snap run rayforge
-
检查端口是否出现:
- 打开 Rayforge → 设置 → 机器
- 在下拉列表中查找串口
- 应该看到
/dev/ttyUSB0、/dev/ttyACM0或类似的
-
验证设备存在:
# 列出 USB 串口设备
ls -l /dev/ttyUSB* /dev/ttyACM*
尽管接口已连接仍显示"Permission Denied"
这种情况很少见,但可能发生在以下情况:
-
Snap 安装损坏:
# 重新安装 snap
sudo snap refresh rayforge --devmode
# 或如果失败:
sudo snap remove rayforge
sudo snap install rayforge
# 重新连接 接口
sudo snap connect rayforge:serial-port -
udev 规则冲突:
- 检查
/etc/udev/rules.d/中的自定义串口规则 - 它们可能与 Snap 的设备访问冲突
- 检查
-
AppArmor 拒绝:
# 检查 AppArmor 拒绝
sudo journalctl -xe | grep DENIED | grep rayforge如果您看到串口的拒绝,可能存在 AppArmor 配置文件冲突。
无法访问主目录外的文件
按设计,Snap 无法访问主目录外的文件,除非您授予 removable-media。
变通方案:
-
将文件移动到主目录:
# 将 SVG 文件复制到 ~/Documents
cp /some/other/location/*.svg ~/Documents/ -
授予 removable-media 访问权限:
sudo snap connect rayforge:removable-media -
使用 Snap 的文件选择器:
- 内置文件选择器具有更广泛的访问权限
- 通过 文件 → 打开 打开文件,而不是命令行参数
手动接口管理
列出所有可用接口
# 查看系统上的所有 Snap 接口
snap interface
断开接口
# 断开 serial-port(如果需要)
sudo snap disconnect rayforge:serial-port
断开后重新连接
sudo snap connect rayforge:serial-port