1 votes

Comment rendre SELinux permissif avec `systemless-Root` sur un périphérique `system-as-Root` ?

J'ai un appareil Samsung S10 5G qui est en fait un system-as-root appareil. Je l'ai enraciné en suivant les instructions données. ici .

Comme le system-as-root Les appareils n'ont pas ramdisk sur boot.img mais en recovery.img donc, je dois toujours démarrer l'appareil avec une combinaison de récupération pour obtenir l'accès Root.

J'ai une application qui nécessite certaines politiques SELinux pour fonctionner. Je les ai injectées à l'aide de sepolicy-inject en utilisant les commandes suivantes :

    sepolicy-inject -s init -t su -c process -p transition -l
    sepolicy-inject -s su -t system_file -c file -p entrypoint -l
    sepolicy-inject -s init -t su -c process -p rlimitinh -l
    sepolicy-inject -s init -t su -c process -p siginh -l
    sepolicy-inject -s su -t shell_exec -c file -p read -l
    sepolicy-inject -s su -t shell_exec -c file -p execute -l
    sepolicy-inject -s su -t shell_exec -c file -p getattr  -l
    sepolicy-inject -s su -t vendor_toolbox_exec -c file -p execute_no_trans -l
    sepolicy-inject -s init -t su -c process -p noatsecure -l
    sepolicy-inject -s su -t toolbox_exec -c file -p getattr -l
    sepolicy-inject -s su -t toolbox_exec -c file -p execute -l
    sepolicy-inject -s su -t system_file -c file -p execute_no_trans -l
    sepolicy-inject -s su -t storage_file -c dir -p search -l
    sepolicy-inject -s su -t storage_file -c lnk_file -p read -l
    sepolicy-inject -s su -t tmpfs -c dir -p search -l
    sepolicy-inject -s su -t mnt_user_file -c dir -p search -l
    sepolicy-inject -s su -t mnt_user_file -c lnk_file -p read -l
    sepolicy-inject -s su -t sdcardfs -c dir -p search -l
    sepolicy-inject -s su -t sdcardfs -c file -p append -l
    sepolicy-inject -s su -t toolbox_exec -c file -p read -l
    sepolicy-inject -s su -t toolbox_exec -c file -p open -l
    sepolicy-inject -s su -t sdcardfs -c file -p read -l
    sepolicy-inject -s su -t sdcardfs -c file -p write -l
    sepolicy-inject -s su -t sdcardfs -c file -p open -l
    sepolicy-inject -s su -t media_rw_data_file -c file -p read -l
    sepolicy-inject -s su -t media_rw_data_file -c file -p write -l
    sepolicy-inject -s su -t media_rw_data_file -c file -p open -l
    sepolicy-inject -s su -t media_rw_data_file -c file -p append -l

mais après un redémarrage, je dois relancer cette commande car ils ne sont pas persistants. Je ne veux pas utiliser une combinaison de touches sur l'appareil pour utiliser mon application en mode racine de l'appareil. Je cherche donc un moyen de les injecter de façon permanente.

Les solutions suivantes me viennent à l'esprit :

  • Modifier init.rc fichier de system.img pour exécuter ces commandes mais lorsque j'ai essayé de modifier init.rc en ajoutant simplement un commentaire et en le flashant sur l'appareil, ce commentaire est perdu. Je ne sais pas ce qui se passe. Je l'ai flashé avec tous les fichiers Odin et dans le fichier AP. Ce fichier AP est patché par Magisk.
  • Changez le SELinux de enforcing à permissive. Je ne suis pas sûr de la façon dont je peux le faire avec l'une ou l'autre des méthodes suivantes Accès à la racine o Flashing de la ROM modifiée .

Une suggestion ?

1voto

Irfan Latif Points 16863

Je cherche un moyen de les injecter de façon permanente.

Comme expliqué dans ma réponse à votre question précédente : Comment rendre persistantes les règles injectées par SELinux sans déballer le boot.img ? vous devez modifier le fichier de politique SELinux afin d'injecter des règles de façon permanente.

La politique peut être monolithique (précompilée) ou non. sepolicy le dossier sur initramfs o /system o /vendor ) ou divisé.

Dans ce dernier cas, il peut s'agir d'une SEPolicy précompilée ( /vendor/etc/selinux/precompiled_sepolicy ) ou vous devez le compiler à partir de .cil fichiers dans /system/etc/selinux/ y /vendor/etc/selinux/ en utilisant le compilateur SEPolicy ( /system/bin/secilc ).

Dans le premier cas, les hachages des politiques de la plateforme et de la non-plateforme ( /system/etc/selinux/plat_and_mapping_sepolicy.cil.sha256 y /vendor/etc/selinux/precompiled_sepolicy.plat_and_mapping.sha256 ) doit correspondre, sinon init ne le chargera pas.

Dans les deux cas, vous ne pouvez pas conserver l'approche sans système.

Modifier init.rc fichier de system.img pour exécuter ces commandes mais lorsque j'ai essayé de modifier init.rc en ajoutant simplement un commentaire et en le flashant sur l'appareil, ce commentaire est perdu.

Comme expliqué dans ma réponse à votre question précédente : Comment démarrer un appareil en tant que système rooté ? sur un appareil SAR enraciné system.img est monté à /system_root par Magisk init , le contenu de ramdisk sont ensuite copiés dans / nettoyage de tout ce qui existait auparavant, les fichiers sont ajoutés / modifiés dans rootfs / , /system_root/system est monté en liaison avec /system et enfin [/system]/init est exécuté pour un démarrage normal. Vous devez donc modifier /system_root/init.rc pour des changements permanents. Veuillez noter que la modification system.img (ou vendor.img ) se briserait dm-verity et les OTAs.

Changez le SELinux de enforcing à permissive. Je ne suis pas sûr de la façon dont je peux le faire avec l'une ou l'autre des méthodes suivantes Accès à la racine o Flashing de la ROM modifiée .

SELinux est réglé enforcing por init (si ce n'est pas déjà le cas enforcing ), vous devez donc modifier init source. Ou sur userdebug Les ROMs passent androidboot.selinux=permissive paramètre de ligne de commande du noyau. Pour plus de détails, voir Quel contexte de sepolicy permettra à tout autre contexte d'y accéder ?

Avec l'accès Root, il suffit d'exécuter ce qui suit dans n'importe quelle application .rc fichier :

on property:sys.boot_completed=1
    exec u:r:magisk:s0 -- /system/bin/setenforce 0

Pour plus de détails, voir Comment corriger les erreurs SELinux "avc : denied" ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X