AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1034030
Accepted
N0rbert
N0rbert
Asked: 2018-05-10 04:57:15 +0800 CST2018-05-10 04:57:15 +0800 CST 2018-05-10 04:57:15 +0800 CST

如何从作为 Snap 安装的应用程序访问 USB 存储?

  • 772

我安装了 Ubuntu 18.04 LTS。

我将 USB 闪存插入我的笔记本电脑。它被自动挂载到/media/username/DISKLABEL并在 Nautilus 中打开。我可以读取和写入对象。

如何从作为 Snap 安装的应用程序访问它?

我尝试了以下应用程序的快照,例如gedit, arduino-mhall119, organize-my-files. 如果我导航到/media文件夹,它们都会向我显示错误:

试图访问 /media

试图访问 /media

无法读取媒体的内容

打开“/media”目录时出错:权限被拒绝

活动 Snap接口的输出如下:

$ snap interfaces  | grep -v ".*-$"
Slot                             Plug
:browser-support                 organize-my-files
:core-support                    core:core-support-plug
:cups-control                    gedit
:desktop                         gedit,organize-my-files
:desktop-legacy                  gedit,organize-my-files
:gsettings                       gedit,organize-my-files
:home                            arduino-mhall119,gedit,organize-my-files
:network                         arduino-mhall119,gedit,organize-my-files,pulsemixer
:opengl                          organize-my-files
:pulseaudio                      organize-my-files,pulsemixer
:unity7                          arduino-mhall119,gedit,organize-my-files
:wayland                         gedit
:x11                             arduino-mhall119,organize-my-files,pulsemixer
gnome-3-26-1604:gnome-3-26-1604  gedit
gtk-common-themes:gtk3-themes    gedit
gtk-common-themes:icon-themes    gedit
gtk-common-themes:sound-themes   gedit
-                                arduino-mhall119:serial-port
-                                gedit:avahi-observe
-                                gedit:mount-observe

更新:

  • 将mount-observe连接到 Geditsnap connect gedit:mount-observe并没有帮助。
  • 看来我们需要支持removable-media接口的特殊 Snap。
permissions usb-drive usb-storage snap 18.04
  • 5 5 个回答
  • 16375 Views

5 个回答

  • Voted
  1. Best Answer
    N0rbert
    2018-05-10T06:08:00+08:002018-05-10T06:08:00+08:00

    所以我们需要特别准备的支持removable-media连接器/接口/插件的 Snap。

    以下是 YAML-manifest 中描述的带有可移动媒体插件的 Snap 列表:

    • vlc - VLC
    • 火狐-火狐
    • 瘸子- GIMP
    • mdl - Markdown lint 工具
    • offlineimap -离线IMAP
    • 魔法虫洞-魔法虫洞
    • 最重要的桌面-最重要的
    • storjshare-gui - Storj
    • opentoonz - OpenToonz
    • opentoonz-morevna - OpenToonz - Morevna 版
    • obs-studio - OBS 工作室
    • steamforwindows - Wine 下的 Steam for Windows
    • 铬
    • zotero-snap - Zotero
    • libreoffice - libreoffice-snap
    • 乔普林桌面-乔普林桌面

    可以通过以下GitHub 搜索链接找到 SnapCrafters 发布的其他 Snap 。


    因此,如果应用程序没有自动连接,removable-media我们需要手动连接:

    snap connect some-snap-name:removable-media
    

    但并非所有应用程序在 YAML 清单中都有这个插件/接口。


    很难通过支持的插件找到包 - 所以我创建了关于 snapcraft.io 站点的问题“使用过滤器(插件,例如等)添加参数 Snap 搜索的能力removable-media” 。

    关于snap名为“snap应提供查找具有所需插头或连接器的软件包的功能”命令的错误已作为错误 1776938 提交给启动板。

    • 24
  2. kim holder
    2019-07-14T13:03:26+08:002019-07-14T13:03:26+08:00

    Ubuntu 软件程序现在将在您安装的每个 Snap 程序的页面上显示一个权限按钮。

    Ubuntu 软件程序的 Krita 页面,显示标题下的按钮 - 启动、删除和权限

    单击权限,弹出窗口为您提供“在可移动存储设备上读取/写入文件”选项,您可以单击右侧的按钮将其打开。

    在此处输入图像描述

    您需要以这种方式逐个激活每个程序,但没有什么特别要记住的,除了按钮存在。

    • 14
  3. Merlijn Sebrechts
    2020-08-15T14:05:40+08:002020-08-15T14:05:40+08:00

    要快速访问 USB 存储设备,它需要连接到removable-media. 一些快照会自动连接到它。如果没有,您可以使用以下命令手动连接它:

    snap connect snap-name:removable-media
    

    有时,此命令会失败并显示以下消息:

    error: snap "snap-name" has no plug named "removable-media"
    

    这意味着包的发布者没有表明应用程序可以使用可移动媒体。在这种情况下,您应该联系发布者并要求他们将removable-media接口添加到 Snap 的插件中。

    大多数快照显示如何联系发布者;运行snap info snap-name并查看contact电子邮件地址或 URL 的字段。

    自动连接removable-media

    发布者可以请求他们的 Snap 自动连接到removable-media界面。这对于属于以下类别的应用程序是允许的。

    • 主要浏览器,例如 Brave、Firefox 和 Chromium。
    • 媒体编辑器,例如 gimp 之类的照片编辑器、OpenToonz 之类的视频编辑器或 Audacity 之类的音频编辑器。
    • 媒体播放器/查看器,例如 VLC 媒体播放器或图像查看程序等视频播放器。
    • 媒体录制器,例如截屏程序、网络摄像头程序、OBS Studio 或播客录制应用程序。

    如果应用程序属于这些类别之一并且removable-media未自动连接到应用程序,请联系发布者并要求他们请求自动连接到removable-media.

    • 4
  4. dobey
    2018-05-10T05:51:07+08:002018-05-10T05:51:07+08:00

    需要连接的接口是removable-media。

    可以从 /media 和 /run/media 中的可移动媒体访问文件。这可用于让应用程序访问已安装的 USB 记忆棒和桌面上的外部硬盘驱动器。

    该mount-observe界面仅允许您查看已挂载的内容,而不能访问挂载:

    可以查询系统挂载信息。这是受到限制的,因为它授予对挂载参数的特权读取访问权限,并且只能与受信任的应用程序一起使用。

    这两个接口都不会自动连接。来自https://github.com/snapcore/snapd/wiki/Interfaces#removable-media

    • 3
  5. Jaydin
    2021-09-29T04:23:45+08:002021-09-29T04:23:45+08:00

    snap 应用程序需要removable-media启用插件才能访问 USB 存储和其他驱动器。您可以通过下面的第 1 部分来做到这一点。

    如果您不幸需要没有removable-media支持的快照,则可以尝试按照以下说明添加它。

    我必须为自由平面(思维导图应用程序)快照执行此操作,类似的过程也适用于其他快照。我将在下面的说明中使用freeplane - 请将其替换为您的 snap 应用程序的等效项。

    第 1 部分:检查可移动媒体支持

    1. 使用 搜索确切安装的快照应用程序名称snap list | grep freeplane。这表明快照名称的freeplane-mindmapping版本号为 [1.9.7]。
    2. 尝试使用 连接到可移动媒体sudo snap connect freeplane-mindmapping:removable-media。如果您没有收到任何错误消息,则可移动媒体已启用并在此处停止:您的工作已完成!
    3. 如果您收到错误消息error: snap "freeplane-mindmapping" has no plug named "removable-media",则该快照应用程序中未启用可移动媒体插件。
    4. 检查使用 启用了哪些连接snap connections freeplane-mindmapping,结果应该类似于: 启用的捕捉连接列表

    请注意,上面的输出没有显示removable-media接口,但它确实显示了以 开头cups-control和结尾的其他接口的列表x11。我们将在此 snap 应用程序的 .yaml 配置文件中添加removable-media之后x11。

    第 2 部分:解压快照文件

    根据 Bernard Wei 的回答,快照文件以只读方式安装,因此要修改它们,您需要解压缩它,修改文件,然后重新制作 squashfs 文件。

    1. 键入mount |grep freeplane以查找快照文件路径 ( /var/lib/snapd/snaps/freeplane-mindmapping_29.snap) 和安装点 ( /snap/freeplane-mindmapping/29)。记下文件路径和挂载点,因为稍后将需要它们。 在此处输入图像描述
    2. 使用 卸载此快照sudo umount /snap/freeplane-mindmapping/29。键入snap list | grep freeplane现在会将快照显示为“损坏”。 在此处输入图像描述
    3. 通过键入取消压缩快照文件sudo unsquashfs /var/lib/snapd/snaps/freeplane-mindmapping_29.snap。快照文件将被提取到 ~/squashfs-root/.
    4. 使用 Nautilus,转到~/squashfs-root/meta(例如使用 Ctrl-L)。
    5. 右键单击和Edit as Administrator文件snap.yaml.
    6. 向下滚动到调用的部分plugs并输入removable-mediaafter x11: 在此处输入图像描述
    7. 保存并关闭 gedit/编辑器

    第 3 部分:重新插入修改后的快照文件

    1. 使用 .remake 重新制作快照文件sudo mksquashfs squashfs-root freeplane-mindmapping_29.snap。修改后的快照文件将在主文件夹中创建。
    2. 使用修改后的快照覆盖原始快照文件sudo cp freeplane-mindmapping_29.snap /var/lib/snapd/snaps/freeplane-mindmapping_29.snap。
    3. 使用 . 将修改后的 snap 安装到原始安装位置sudo mount -t squashfs -o ro,nodev,relatime,x-gdu.hide /var/lib/snapd/snaps/freeplane-mindmapping_29.snap /snap/freeplane-mindmapping/29。
    4. 如果它有效,snap list | grep freeplane将不再将快照显示为“损坏”。 在此处输入图像描述
    5. 如果snap connections freeplane-mindmapping不显示removable-media,则重新启动。
    6. 现在snap connections freeplane-mindmapping应该显示removable-media. 在此处输入图像描述
    7. 使用 启用可移动媒体snap connect freeplane-mindmapping:removable-media。 您现在应该可以访问可移动媒体了!
    8. [可选]squashfs-root使用 删除文件夹sudo rm -r ~/squashfs-root。
    9. [可选] 为了方便访问,您可以使用ln -s /path/to/folder ~/snap/freeplane-mindmapping/29/.

    祝你好运!

    • 1

相关问题

  • WINE 用户配置

  • 无法更新雷鸟

  • 如何使文件夹与外部 USB 硬盘保持同步?

  • Ubuntu 在什么许可证下?可以合法修改和分发吗?

  • 文件权限如何工作?文件权限用户和组

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve