Установите политики оболочки script Android SE Linux для его запуска при загрузке sys. - PullRequest
0 голосов
/ 06 августа 2020

Я столкнулся с проблемами при создании политик SE Linux для сценария sh (init.myservice. sh) со следующим содержимым:

#!/system/bin/sh
/system/bin/am force-stop 'com.myapp.apptest'
/system/bin/tinymix 'Headphone Volume' 35;tinymix 'Capture Input' ADC;tinymix 'DMIC Mux' DMIC2;
/system/bin/am start -n ' com.myapp.apptest/ com.myapp.apptest.MainActivity' -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
/system/bin/my_board_service &

Как видите, это скрипт выполняет следующие действия:

  • Останавливает (и запускает) приложение APK
  • Устанавливает несколько mi c и настройки звука с помощью tinymix
  • Запускает двоичный ( my_board_service), который представляет собой скомпилированную программу C ++, которая взаимодействует с настраиваемыми периферийными устройствами платы (GP IOs, I2 C, et c ...)

Я добавил в свой " init.r c "файл следующие строки:

on property:sys.boot_completed=1
    start init-myservice

service init-myservice /system/bin/sh /system/bin/init.myservice.sh
    class main
    user root
    group root system
    disabled
    oneshot

Я вижу сценарий во встроенной системе по пути" / system / bin "и двоичный файл с правильными разрешениями (755) и если я запускаю его вручную, он работает хорошо. Но я не могу запустить его при загрузке системы, потому что (без установленных политик) я получаю эту ошибку в оболочке:

Команда 'start init-myservice' action = sys.boot_completed = 1 ( /vendor/etc/init/hw/init.freescale.rc:334) занял 5 мс и завершился неудачно: не удалось запустить службу: файл /system/bin/init.myservice.sh( с меткой «u: object_r: system_file: s0 ") имеет неправильную метку или не определен переход домена от u: r: init: s0 к другому домену SE Linux. Вы правильно настроили свой сервис? https://source.android.com/security/selinux/device-policy#label_new_services_and_address_denials

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

# foo service
type foo, domain;
type foo_exec, exec_type, file_type;
init_daemon_domain(foo)

Я добавил следующую строку в файл "file_contexts" в этом месте: "android_build / device / variscite / imx8m / dart_mx8mm / sepolicy / "

/system/bin/init\.myscript\.sh      u:object_r:foo_exec:s0

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

FAILED: out / target / product / dart_mx8mm / obj / ETC / treble_sepolicy_tests_28.0_intermediates / treble_sepolicy_tests_28.0 / bin / bash - c "(out / host / linux -x86 / bin / treble_sepolicy_tests -l out / host / linux -x86 / lib64 / libsepolwrap.so -f out / target / product / dart_mx8mm / obj / ETC / plat_file_contexts_intermediates / plat_file_contexts -f out / target / product / dart_mx8mm / obj / ETC_contexts_fileter_file / vendortex_fileter_file_file / b out / target / product / dart_mx8mm / obj / ETC / built_plat_sepolicy_intermediates / built_plat_sepolicy -m out / target / product / dart_mx8mm / obj / ETC / treble_sepolicy_tests_28.0_intermediates / 28.0_mapping.combined / product-target_mpping.combined.cil. obj / ETC / treble_sepolicy_tests_28.0_intermediates / built_28.0_plat_sepolicy -p out / target / product / dart_mx8mm / obj / ETC / sepolicy_intermediates / sepolicy -u out / target / product / dart_mx8mm / obj_ficy_intermediates / built_product_max8mm / obj_from_plake_plake / built_product / -treble) && (touch out / target / product / dart_mx8mm / obj / ETC / treble_sepolicy_tests_28.0_intermediates / treble_sepolicy_tests_28.0) «Следующие домены должны быть связаны с атрибутом coredomain, потому что они выполняются вне / system : foo

...