7 votes

Que fait TWRP "Fix Contexts" ?

Dans mon TWRP blu_spark, j'ai une option (sous "Advanced") appelée "Fix Contexts".

Quand j'appuie dessus, ça dit :

Note : La correction des contextes est rarement nécessaire

La correction des contextes SELinux peut empêcher votre appareil de démarrer correctement.

Que fait cette option, et quand voudrais-je l'utiliser ?

9voto

Irfan Latif Points 16863

SELinux est un mécanisme de sécurité qui empêche l'accès non autorisé de processus à d'autres processus, actions et systèmes de fichiers (le "fichier" d'UNIX comprend tous les fichiers ordinaires, les répertoires, les périphériques de blocs, les périphériques de caractères, les sockets, etc.) Chaque processus, fichier, répertoire et action est étiqueté avec un contexte SELinux, puis une politique est définie ce qu'un contexte peut faire à un autre contexte. La politique est chargée par le noyau ou par init à chaque démarrage, et tout ce qui n'est pas défini dans la politique est refusé par le noyau. Pour plus de détails, voir cette réponse .

Les contextes de système de fichiers sont également générés avec la politique. Sur Android, les deux sepolicy y file_contexts sont sauvegardés dans rootfs / o /{system,vendor,odm}/etc/selinux/ les répertoires. Les contextes du système de fichiers peuvent être modifiés manuellement en utilisant chcon ou de file_contexts en utilisant restorecon . Le processus peut être exécuté avec un contexte donné en utilisant runcon . init démarre également tous les processus avec une valeur prédéfinie seclabel in *.rc fichiers. Certains les contextes de système de fichiers sont également définis à chaque démarrage en utilisant restorecon comando in *.rc des fichiers.

Fixer les contextes dans TWRP corrige les étiquettes de contexte de système de fichiers à partir d'une sauvegarde /file_contexts fichier. Mais si ce fichier est destiné à un autre appareil ou contient des contextes erronés, périmés ou incomplets, l'appareil peut se retrouver en boucle de démarrage. Il vaut mieux éviter d'utiliser "Fix Contexts", et utiliser plutôt chcon o restorecon manuellement si nécessaire. Ou remplacez file_contexts en voie de guérison ramdisk avec un fichier mis à jour de votre ROM actuel.


EXEMPLE :

J'ai environ 40000 règles de politique sur mon appareil, dont une :

~# sesearch --allow -s init -t system_data_file -c dir /sys/fs/selinux/policy
Found 1 semantic av rules:
   allow init system_data_file : dir { search read open ioctl write create getattr setattr relabelfrom relabelto mounton add_name remove_name rmdir } ;

Sur plus de 2000 contextes de systèmes de fichiers, un seul l'est :

~# grep system_data_file /system/etc/selinux/*contexts
/data(/.*)?    u:object_r:system_data_file:s0

Contexte SELinux de init processus :

~# ps -p 1 -o pid,cmd,label
  PID     CMD             LABEL
    1     /init           u:r:init:s0

Contexte SELinux du répertoire contenant les paramètres du système :

~# ls -dZ /data/system
u:object_r:system_data_file:s0   /data/system

Donc si /data/system est étiqueté avec un mauvais contexte, init ne sera pas en mesure d'exécuter search , read y open les opérations sur le répertoire et le périphérique peuvent faire une boucle de démarrage.


DAC vs MAC :

SELinux est une mise en œuvre du contrôle d'accès obligatoire (MAC). Le contrôle d'accès discrétionnaire (DAC) atteint le même objectif d'une manière moins agressive en assignant des UIDs/GIDs aux processus et aux fichiers :

~# ls -ld /data /data/system
drwxrwx--x   41 system   system        4096 Oct 21 17:40 /data
drwxrwxr-x   21 system   system        3488 Nov  9 13:36 /data/system

Le mode de permission et la propriété expliquent que seuls les processus s'exécutant avec UID ou GID 1000 ( system ) pourront lire et écrire dans le répertoire et les applications normales (avec des UIDs/GIDs dans la gamme 10000 a 19999 ) ne sont pas autorisés à lire les paramètres du système.

L'inconvénient du DAC est qu'il est autorisé par défaut et qu'il a une capacité d'absorption de l'énergie. Super utilisateur (Utilisateur racine avec UID 0 est autorisé à faire n'importe quoi). Alors que le MAC est refusé par défaut et qu'il n'y a pas de Super Contexte Il est donc moins susceptible d'être exploité. Les pouvoirs de l'utilisateur root sont également divisés en capacités pour suivre le le principe du moindre privilège . Combinés ensemble, DAC et MAC fournissent une isolation, une protection et un sandboxing plus robustes.

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