Доступ к последовательным портам с помощью приложения, работающего в Flatpak

Недавно я обновил свою IDE до Monodevelop 6, используя Flatpak, на Ubuntu 16.04 LTS из более старой версии 5.

У меня есть приложение, которое взаимодействует с последовательными портами, которое в основном представляет собой адаптер USB/RS232, соединяющий устройство с моим компьютером.

У меня нет проблем с доступом к USB-порту (/dev/ttyUSB0) при отладке приложения в Monodevelop5. Однако каталог устройства (/dev/), к которому у меня есть доступ при использовании Monodevelop6, полностью отличается от того, к которому у меня есть доступ в Linux, и в этой папке нет ttyUSB0.

Я считаю, что это связано с тем, что Flatpak запускает приложение в песочнице. Итак, если это причина, как я могу получить доступ к последовательному порту?

Спасибо.


person Afshin    schedule 20.12.2016    source источник


Ответы (1)


Скорее всего, это потому, что Flatpak блокирует доступ к последовательному устройству.

К сожалению, на данный момент я не думаю, что есть способ предоставить доступ конкретно к последовательным устройствам, поэтому вам нужно предоставить доступ ко всем:

$ flatpak run --device=all com.xamarin.MonoDevelop

Это, по сути, монтирует /dev хоста внутри песочницы, поэтому приложение имеет к нему полный доступ.

Это довольно большая дыра в песочнице, но иногда она необходима, пока не будут реализованы все возможности обработки разрешений.

person Mathieu Bridon    schedule 22.12.2016
comment
Обратите внимание, что разработчик этой сборки flatpak может в качестве альтернативы использовать аргумент device=all finish в манифесте JSON, который предоставит этот доступ по умолчанию. Но это, вероятно, слишком большая дыра в песочнице, чтобы делать это по умолчанию. - person Mathieu Bridon; 24.12.2016
comment
Если у вас все еще есть проблема с папкой, как у меня, вы можете проверить разрешение в этой папке, например: (в моем случае с помощью arduino от Flatpak) $ ls -l /dev/ttyACM0 crw-rw ---- . 1 root dialout 166, 0 24 августа 20:54 ttyACM0 Я дал разрешение всем, поэтому вы должны знать о последствиях этого для безопасности: # chmod 666 ttyACM1 $ ls -l ttyACM0 crw-rw- рв-. 1 root dialout 166, 0 24 авг 20:54 ttyACM0 В моем случае это папка (/dev/ttyACM1), создаваемая IDE arduino каждый раз, когда я подключаю свое устройство к системе. надеюсь, что это может быть полезно. - person J.Rojas; 25.08.2020