Как получить доступ к USB-хранилищу из приложения, установленного как Snap?

Здесь я предполагаю, что вы успешно ssh / sftp в домашний каталог пользователя и хотите редактировать (со своим пользователем) файлы и папки в разделе /var/www, которые принадлежат user и :group - www-data:www-data (без изменения их прав собственности).

Здесь я также предполагаю тему «Как избежать использования sudo при работе в / var / www? не покрывает ваши потребности. Например, вы не хотите изменять разрешения в /var/www.

Я думаю, что самый простой и понятный способ решить эту задачу - установить /var/www (или определенный каталог внутри) в домашний каталог вашего пользователя и сменить владельца на пользователя и: группу. Это может быть достигнуто с помощью инструмента bindfs:

sudo apt update && sudo apt install bindfs

Здесь мы установим весь каталог /var/www в каталог, также называемый также www/ и расположенный в вашем домашний каталог пользователя.

mkdir $HOME/www
sudo bindfs -u $(id -u) -g $(id -g) --create-for-user=www-data --create-for-group=www-data /var/www /home//www
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего . Где является фактическим именем пользователя. Если вы хотите выполнить указанную выше команду для другого пользователя, используйте $(id -u ) и $(id -g ). Подробнее о аргументах, используемых с bindfs радом на странице руководства - man bindfs. Если вы хотите отключить ~/www ($HOME/www), используйте команду:
sudo fusermount -u ~/www

Чтобы автоматически установить /var/www в ~/www во время запуска системы добавьте следующую строку внизу /etc/fstab:

bindfs#/var/www /home//www fuse force-user=,force-group=,create-for-user=www-data,create-for-group=www-data 0 0
Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего . Где является фактическим именем пользователя.

Подстановки команд $(id -u) и $(id -g) вернут UID и GID текущего . Если является фактическим именем пользователя.

sudo mount -a    # maybe you should execute `sudo fusermount -u ~/www` first 

Чтобы увидеть результат, перезагрузите систему или выполните:

Вот анимированный demo как это работает:

Как избежать использования sudo при работе в / var / www?

Обновление: 29]

chown -R $(id -u):$(id -g) $HOME/www

Единственное ограничение этого подхода, которое я нашел, это когда вы меняете право собственности на каталог привязки, это изменит право собственности на исходный каталог. Например, следующая команда не очень хорошая идея:

3
задан 9 May 2018 в 16:51

6 ответов

Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / plugin.

Например, VLC имеет этот плагин в своем YAML-файле.

apps:
  vlc:
    desktop: usr/share/applications/vlc.desktop
    command: desktop-launch $SNAP/bin/vlc-snap-wrapper.sh
    plugs:
      ...
      - mount-observe
      ...
      - removable-media

So если приложение не имеет автосоединения removable-media, нам необходимо связать его вручную с помощью:

snap install app:removable-media

Но не все приложения имеют этот plug / interface в манифесте YAML.

0
ответ дан 22 May 2018 в 10:51

Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / плагина.

Ниже приведен список Snap со съемным носителем, описанным в YAML-манифесте:

vlc - VLC firefox - Firefox gimp - GIMP mdl - Инструмент Markdown lint offlineimap - Магия-червоточина OfflineIMAP - Волшебное червячное отверстие - самый большой рабочий стол - Mattermost storjshare-gui - Storj opentoonz - OpenToonz opentoonz-morevna - OpenToonz - Morevna Edition obs-studio - OBS Studio steamforwindows - Steam для Windows под Wine

Можно найти другие Snaps, выпущенные SnapCrafters со следующей поисковой ссылкой GitHub.

Так что если приложение не есть автосоединение removable-media, нам нужно связать его вручную с помощью:

snap connect some-snap-name:removable-media

Но не все приложения имеют этот plug / interface в манифесте YAML.

Трудно найти пакеты с помощью поддерживаемых пробок - поэтому я создал ссылку поиска GitHub .

Ошибка в команде snap с именем «snap» должна обеспечивать функциональность найти пакет ges с необходимой штепсельной вилкой или разъемом "был отправлен на панель запуска в качестве ошибки 1776938.

1
ответ дан 17 July 2018 в 14:46

Итак, нам нужна специальная подготовленная Snap с поддержкой интерфейса removable-media / плагина.

Ниже приведен список Snap со съемным носителем, описанным в YAML-манифесте:

vlc - VLC firefox - Firefox gimp - GIMP mdl - Инструмент Markdown lint offlineimap - Магия-червоточина OfflineIMAP - Волшебное червячное отверстие - самый большой рабочий стол - Mattermost storjshare-gui - Storj opentoonz - OpenToonz opentoonz-morevna - OpenToonz - Morevna Edition obs-studio - OBS Studio steamforwindows - Steam для Windows под Wine

Можно найти другие Snaps, выпущенные SnapCrafters со следующей поисковой ссылкой GitHub.

Так что если приложение не есть автосоединение removable-media, нам нужно связать его вручную с помощью:

snap connect some-snap-name:removable-media

Но не все приложения имеют этот plug / interface в манифесте YAML.

Трудно найти пакеты с помощью поддерживаемых пробок - поэтому я создал ссылку поиска GitHub .

Ошибка в команде snap с именем «snap» должна обеспечивать функциональность найти пакет ges с необходимой штепсельной вилкой или разъемом "был отправлен на панель запуска в качестве ошибки 1776938.

1
ответ дан 20 July 2018 в 14:49

Интерфейс, который необходимо подключить, removable-media.

Доступ к файлам со съемных носителей в / media и / run / media.

Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:

4] Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.

Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media

1
ответ дан 22 May 2018 в 10:51
  • 1
    Я не знаю. Кажется, общ-студия делает, но я только нашел ее из-за того, что упоминал интерфейс в описании приложения, как получить доступ к внешнему хранилищу. Я не знаю, как запросить хранилище для определенных интерфейсов в привязках. Если конкретная привязка не поддерживает интерфейс, ее, вероятно, нужно будет перестроить для ее поддержки. – dobey 9 May 2018 в 16:58
  • 2
    Хорошо понял. Благодаря! – N0rbert 9 May 2018 в 17:00

Интерфейс, который необходимо подключить, removable-media.

Доступ к файлам со съемных носителей в / media и / run / media.

Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:

Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.

Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media

1
ответ дан 17 July 2018 в 14:46

Интерфейс, который необходимо подключить, removable-media.

Доступ к файлам со съемных носителей в / media и / run / media.

Интерфейс mount-observe позволяет вам просматривать только что смонтированные, а не монтируемые для доступа:

Доступ к файлам со съемных носителей в / media и / run / media. Это можно использовать для доступа к подключенным USB-накопителям и внешним жестким дискам на рабочем столе.

Ни один из этих двух интерфейсов не будет автоматически подключаться. Из https://github.com/snapcore/snapd/wiki/Interfaces#removable-media

1
ответ дан 20 July 2018 в 14:49
  • 1
    Я не знаю. Кажется, общ-студия делает, но я только нашел ее из-за того, что упоминал интерфейс в описании приложения, как получить доступ к внешнему хранилищу. Я не знаю, как запросить хранилище для определенных интерфейсов в привязках. Если конкретная привязка не поддерживает интерфейс, ее, вероятно, нужно будет перестроить для ее поддержки. – dobey 9 May 2018 в 16:58
  • 2
    Хорошо понял. Благодаря! – N0rbert 9 May 2018 в 17:00

Другие вопросы по тегам:

Похожие вопросы: