- Вопрос или проблема
- Предоставление доступа
- Удаление/Предотвращение доступа
- Прочее
- Ответ или решение
- 1. Использование командной строки
- Поиск ID приложения
- Пример команды
- Чтение только (Read-Only)
- 2. Использование Flatseal
- 3. Сброс прав доступа
- 4. Общие команды для работы с правами
- 5. Доступ к хостовой системе
- Заключение
Вопрос или проблема
Я установил музыкальный плеер Elisa из Flathub, но он не видит мой музыкальный раздел, поэтому я не могу добавить никакую музыку в его библиотеку, если не скопирую ее в /home/my_user/
.
Существует ли способ дать приложению Flatpak разрешение на доступ к нестандартным адресам?
Кроме как указать это при компиляции…
В дополнение к другому ответу, еще одно решение, которое сработало для меня, – это установка Flatseal. Это упрощает настройку разрешений и также имеет дополнительное преимущество в том, что существующие разрешения становятся очень ясными. Вот как добавление директории в Steam выглядит в Flatseal:
Я добавил директорию “MediaSSD”, все остальное по умолчанию.
Это можно сделать через командную строку. Все приведенные ниже команды, вероятно, нужно будет выполнять от имени root.
Предоставление доступа
Конкретная команда для предоставления разрешения на доступ к определенному пути/папке:
flatpak override <ID приложения> --filesystem=<путь_здесь>
Чтобы найти ID приложения, как отмечает Johnny Baloney в комментариях, используйте “flatpak list” (вероятно, вы захотите объединить с grep):
flatpak list | grep <часть названия программы (например, "elisa")>
ID приложения будет выглядеть примерно как “org.kde.elisa”.
Если у вас странный путь и вы получаете ошибку о “неожиданном суффиксе файловой системы”, попробуйте заключить путь в кавычки:
flatpak override <ID приложения> --filesystem="<необычный_путь_здесь>"
Вы также можете предоставить доступ только для чтения, добавив “:ro” в конце пути:
--filesystem=<путь_здесь>:ro
Исключения/ограничения на то, какой доступ к файловой системе может быть предоставлен зазначены в документации под разделом Зарезервированные пути (см. комментарий Дэна Россенроде ниже для быстрого справочного материала).
Удаление/Предотвращение доступа
Если вы хотите заблокировать доступ к определенному пути, используйте “--nofilesystem
“:
flatpak override <ID приложения> --nofilesystem=<путь_здесь>
Или вы можете использовать команду “–reset”, чтобы вернуть ВСЕ разрешения к значениям по умолчанию (Внимание! Если вы не укажете ID приложения с этой командой, разрешения будут сброшены для ВСЕХ установленных Flatpak’ов!):
flatpak override --reset <ID приложения>
Прочее
Используйте “–show”, чтобы отобразить измененные разрешения (включая доступ к файловой системе):
flatpak override --show <ID приложения>
и используйте “info –show-permissions”, чтобы перечислить все разрешения:
flatpak info --show-permissions <ID приложения>
Более полный список разрешений/команд можно найти в документации по песочнице разрешений и командам Flatpak.
Выполните один раз, чтобы разрешить доступ к обычным файлам на хосте, не включая операционную систему или системные внутренности хоста:
sudo flatpak override ApplicationIDHere --filesystem=host
ID приложения можно увидеть с помощью команды: sudo flatpak list
Затем:
flatpak run ApplicationIDHere
В дополнение к этому ответу, который похож на то, что сказал Хассан. Я попробовал установить WhatsApp Web как PWA. Мне нужно было добавить эти строки в Flatseal, чтобы Chrome смог создать ярлык с соответствующей иконкой:
~/.local/share/applications
~/.local/share/icons
Не забудьте перезапустить Chrome, чтобы изменения вступили в силу
Ответ или решение
Чтобы предоставить приложению Flatpak доступ к определенной директории, вы можете использовать несколько методов. Вот полный план действий на русском языке.
1. Использование командной строки
Для предоставления прав доступа к конкретной директории используйте следующую команду:
flatpak override <ID_приложения> --filesystem=<путь_к_директории>
Поиск ID приложения
Чтобы найти ID установленного приложения, выполните:
flatpak list | grep <часть_названия_программы>
Например, для Elisa это может выглядеть как org.kde.elisa
.
Пример команды
Если вы хотите предоставить доступ к директории ~/Музыка
, команда будет выглядеть так:
flatpak override org.kde.elisa --filesystem=/home/my_user/Музыка
Если у вас есть нестандартный путь и возникает ошибка о "неожиданном суффиксе файловой системы", попробуйте заключить путь в кавычки:
flatpak override org.kde.elisa --filesystem="/path/to/unusual_directory"
Чтение только (Read-Only)
Если вы хотите предоставить доступ только для чтения, добавьте :ro
в конце пути:
flatpak override org.kde.elisa --filesystem=/home/my_user/Музыка:ro
2. Использование Flatseal
Помимо командной строки, можно использовать приложение Flatseal, которое предоставляет графический интерфейс для управления правами доступа приложений Flatpak. Это позволяет вам легко видеть текущие права и изменять их.
-
Установите Flatseal, если его еще нет:
flatpak install flathub com.github.tchx84.Flatseal
-
Откройте Flatseal и найдите ваше приложение (например, Elisa).
-
В разделе "Filesystem" добавьте путь к вашим медиафайлам.
3. Сброс прав доступа
Если вам нужно вернуть все права приложения к умолчанию, вы можете выполнить:
flatpak override --reset <ID_приложения>
4. Общие команды для работы с правами
- Чтобы отобразить текущие разрешения:
flatpak override --show <ID_приложения>
- Чтобы увидеть все разрешения приложения:
flatpak info --show-permissions <ID_приложения>
5. Доступ к хостовой системе
Для предоставления приложению доступа ко всем файлам на хосте (но не системным директориям) вы можете использовать команду:
sudo flatpak override <ID_приложения> --filesystem=host
Заключение
Следуя этим шагам, вы сможете предоставить приложению Flatpak доступ к необходимым директориям. Важно помнить, что предоставление избыточных прав может повлиять на безопасность системы, поэтому старайтесь предоставлять доступ только к тем директориям, которые действительно необходимы.