0 Members and 1 Guest are viewing this topic.
Никакого "повышения прав без пароля" в Linux нет и быть не должно. Это не баг, это фича.
плагин не имеет доступа к системным файлам, только к данным пользователя
AIMP не нужно сканировать плагины с правами root. Он должен просто при запуске загружать все .so файлы из стандартных папок (системной и пользовательской) через обычный dlopen().
ну и ещё разок:1. Системные файлы (программа + общие плагины):
пользователь сам может ставить плагины в свой каталог
1) в некоторых плагинах есть относительные референсы на общие модули плеера.2) на некоторых системах может быть установлен запрет на загрузку исполняемых модулей из пользовательских папок3) дублирование кода. Каждый пользователь будет вынужден хранить свою копию плагина и обновлять их по отдельности
В общем, я постараюсь к ближайшей бете переделать установку плагинов, чтобы она происходила так же, как в Windows - только через админские права.
Не могу дать хорошего совета, но такой вопрос задавался и предложено поднимать субпроцесс, задействовать pkexec.https://discourse.gnome.org/t/root-permission-on-gtk-applications/17181https://stackoverflow.com/questions/2400965/authenticating-gtk-app-to-run-with-root-permissionsЕсли это не подойдёт, то придётся смотреть в сторону создания отдельного модуля управления плагинами, который при запуске будет будет запрашивать повышение прав (пароль) для себя.
Да, спасибо. Я выше об этом уже писал. К сожалению, под root-ом не инициализируется gtk (ну оно и понятно), таким образом, текущий подход "как есть" применить не получится. Я пока торопиться не стал - надо подумать, каким путём лучше пойти.
Плеер не лазает в чужие папки, не сканирует ничего от root, просто загружает то, что есть и не запрещено пользователем.
Согласен. Надо только поискать информацию, как вызвать повышение прав в линуксах без sudo и консоли.
Одно из решений, это подпрограмма, которая имеет setuid бит, при вызове которой она запускается от имени владельца. (типо элеватора, но занимающаяся именно установкой и удалением плагинов)Для безопасности в этой программе должна быть реализована система аутентификации используя PAM или готовые гуи библиотеки типо gsu и gsudo
Он может их открыть в проводнике вручную или нажать в плеере "Установить". Плеер запрашивает повышение доступа только на это действие. В старом формате распространения плагинов использовались обычные архивы, где пользователь вручную их распаковывал. В некоторой степени такой формат тоже поддерживается плеером, если структура архива ему понятна.
Кроме непосредственно плагинов ещё есть и пакеты иконок, которые добавляются через по аналогичной схеме.
.....Итого: исходная проблема мне понятна, я беру паузу и на досуге неспеша подумаю, как лучше её решить, чтобы всем было хорошо
К сожалению, под root-ом не инициализируется gtk (ну оно и понятно), таким образом, текущий подход "как есть" применить не получится.
В линукс есть три пользовательских идентификатора для приложения: SUID, EUID и RUID.Это позволяет привилегированному приложению работать как от лица запустившего (user), так и владеющего (root). Если кратко, то gui инициализируем от лица юзера, а установку от лица рута