Как сделать так, чтобы пакеты от f-droid воспринимались как от "известного источника" (если у меня есть рут)?

Обычно я получаю пакеты из репозитория http://f-droid.org/ через их браузер пакетов (потому что тогда у меня есть гарантия, что я использую бесплатное (= libre) программное обеспечение); и они подписаны своим ключом.

Я использую CyanogenMod 10; и у меня есть root-доступ.

Мне не нравится разрешать для этого пакеты из «неизвестных источников».

Могу ли я настроить систему так, чтобы f-droid считался известным источником, а пакеты из всех других неизвестных источников не разрешались устанавливать по умолчанию, как раньше.

Возможно, что-то можно патчить в дистрибутив CyanogenMod, чтобы добавить ключ f-droid в качестве ключа для "известного источника" пакетов.

Ответы (3)

Почти каждое приложение F-Droid подписано другим ключом, хотя все ключи находятся в одном и том же хранилище ключей. Чтобы переключатель можно было обойти, клиент F-Droid должен быть установлен как системное приложение и должен работать безопасно как таковой. Для этого был предоставлен некоторый код, но он еще не интегрирован.

Так что в принципе можно было бы добавить новый "известный" ключ, но в случае с приложениями от f-droid ключей так много, что это нецелесообразно; единственный практический способ - использовать сам клиент f-droid в качестве системного приложения, которое будет выполнять проверку подписи. Я правильно понял ситуацию?
data/app принадлежит системному пользователю, поэтому любое системное приложение может поместить туда apk без необходимости проходить установку пакета. Так что это не имеет ничего общего с подписями приложений, но F-Droid должен быть подписан системным ключом.
Я не уверен, почему, но F-Droid apk не обязательно должен быть подписан системным ключом, по крайней мере, если вы используете CyanogenMod.
Итак, стоит ли мне попробовать новый f-droid или новый CM для этой функции?

Согласно этому журналу изменений , предстоящая версия f-droid 0.71 должна поддерживать это.

Другое упоминание об этом находится в: https://github.com/WhisperSystems/TextSecure/issues/127#issuecomment-51065857 .

есть расширение привилегий f-droid

https://f-droid.org/en/packages/org.fdroid.fdroid.privived.ota/

с ним вы сможете устанавливать приложения без включения «неизвестного источника».

есть два способа установки. один с боковой загрузкой. другой, использующий корень adb. я объясню оба ниже.

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


подготовка к обоим методам установки

  • загрузите расширение привилегий f-droid с веб-сайта f-droid на свой компьютер.

    https://f-droid.org/en/packages/org.fdroid.fdroid.privived.ota/

    чтобы скачать, вам нужно прокрутить вниз, а затем загрузить последний почтовый индекс. имя файла должно быть примерно таким:org.fdroid.fdroid.privileged.ota_2110.zip

  • установите adb на свой компьютер и включите «отладку по usb» на своем устройстве. поищите в инете как это сделать.

    adb — это инструмент командной строки, поэтому откройте терминал. затем перейдите в каталог, где находится zip-файл с привилегированным расширением.

  • подключите устройство к компьютеру с помощью USB-кабеля.

  • убедитесь, что устройство распознано с помощью команды adb devices.

    это должно показать что-то вроде этого:

    $ adb devices
    List of devices attached
    <some number> device
    

    если он говорит unauthorizedили что-то еще, вам нужно отладить ваше соединение. поищите в инете как это сделать.


метод боковой загрузки

для этого вам понадобится кастомное рекавери, которое позволяет установить боковую загрузку на ваше устройство.

если у вас установлен lineageos, у вас обычно уже есть подходящее кастомное рекавери. в противном случае скачайте и установите twrp ( https://twrp.me/ ).

  1. подключите ваше устройство к компьютеру с помощью USB-кабеля. убедитесь, что устройство указано в

     adb devices
    
  2. загрузите свое устройство для боковой загрузки

     adb reboot sideload
    

    ИЛИ: загрузите устройство для восстановления

     adb reboot recovery
    

    затем на вашем устройстве в режиме восстановления установите для устройства неопубликованную загрузку. в восстановлении lineageos это называется «применить обновление», затем «применить из ADB».

  3. установить расширение привилегий с помощью неопубликованной загрузки

     adb sideload org.fdroid.fdroid.privileged.ota_2110.zip
    
  4. перезагрузите устройство обратно на андроид.

     adb reboot
    

    ИЛИ: нажмите на перезагрузку в меню рекавери

проверьте, включено ли расширение привилегий. см. ниже, как это сделать.

Дополнительная информация:


метод корня adb

для этого вам также необходимо включить «отладку с правами root» на вашем устройстве (наряду с «отладкой по usb»).

кажется, что «отладка с рутом» доступна только в том случае, если у вас установлен пользовательский ром, такой как lineageos.

разархивируйте загруженное расширение привилегий.

теперь выполните следующие команды adb одну за другой

adb root
adb remount
adb push F-DroidPrivilegedExtension.apk /system/priv-app/
adb push permissions_org.fdroid.fdroid.privileged.xml /system/etc/permissions/
adb push F-Droid.apk /system/app/
adb push 80-fdroid.sh /system/addon.d/
adb reboot

убедитесь, что после каждого шага нет сообщений об ошибках. за исключением того adb remount, что кажется ненужным в последних версиях lineageos. но никакого вреда (насколько я понимаю), так что продолжайте в любом случае.

после перезагрузки проверьте, включено ли расширение привилегий.

Дополнительная информация:


как проверить, включено ли расширение привилегий

  1. открытый f-дроид
  2. перейти к настройкам
  3. прокрутить до конца вниз
  4. включить экспертный режим (откроются дополнительные настройки внизу)
  5. снова прокрутите вниз
  6. если вы видите зеленую галочку рядом с «привилегированным расширением», значит, оно включено.

«привилегированное расширение» — самая последняя опция на странице настроек. если вы прокрутили весь путь до конца, и последняя опция не является «привилегированным расширением», тогда привилегированное расширение не включено. тоже наверное не правильно установил.


ноты:

я установил много fdroid с расширениями привилегий на многих линиях на многих устройствах. часто были икоты по пути, и это не работает по причинам, которые я не понимаю.

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

иногда просто не работает. извините, что я не могу помочь вам дальше.


У вас это тоже есть как модуль Magisk