0 votes

Comment rendre les fichiers créés par la racine accessibles aux utilisateurs normaux ?

Mon appareil fonctionne sous Android 8.0, il a été enraciné en utilisant Magisk comme base de données. su gestionnaire. Je m'y connecte en utilisant SimpleSSHD.

J'essaie d'effectuer certaines actions qui nécessitent un accès Root, et dans le processus, je crée certains fichiers qui seront ensuite utilisés par des utilisateurs normaux. Mais pour une raison quelconque, ce à quoi je suis habitué dans les distributions Linux "classiques" ne semble pas fonctionner : Les fichiers créés par la racine ne peuvent pas être lus par les utilisateurs normaux, quoi qu'ils fassent. chown / chgrp / chmod actions que j'essaie. Voir la session suivante :

$ su -c "echo hello > file.txt; chown $(whoami) file.txt; chgrp $(whoami) file.txt; chmod a+r file.txt"
$ cat file.txt
cat: file.txt: Permission denied
$ echo readable > my.txt
$ su -c 'cp -a my.txt my-copy.txt'
$ cat my-copy.txt
cat: my-copy.txt: Permission denied
$ ls -l *.txt
-rw-r--r-- 1 u0_a182 u0_a182 6 2018-08-20 15:21 file.txt
-rw------- 1 u0_a182 u0_a182 9 2018-08-20 15:23 my-copy.txt
-rw------- 1 u0_a182 u0_a182 9 2018-08-20 15:22 my.txt
$ whoami
u0_a182

Qu'est-ce qui se passe ici ? Pourquoi les bits de permission, le propriétaire et le groupe sont ignorés pour les fichiers que j'ai créés en tant que Root ? Comment changer correctement le propriétaire en utilisateur normal ?

1voto

Ruslan Points 286

Android utilise SELinux pour gérer l'accès aux fichiers. Les fichiers créés par les utilisateurs root et non-root diffèrent selon le contexte SELinux :

$ ls -lZ *.txt
-rw-r--r-- 1 u0_a182 u0_a182 u:object_r:app_data_file:s0           6 2018-08-20 16:01 file.txt
-rw------- 1 u0_a182 u0_a182 u:object_r:app_data_file:s0           9 2018-08-20 16:01 my-copy.txt
-rw------- 1 u0_a182 u0_a182 u:object_r:app_data_file:s0:c512,c768 9 2018-08-20 16:01 my.txt

Pour que le fichier appartienne réellement à l'utilisateur non-Root, il faut définir le contexte SELinux correct :

$ su -c 'chcon u:object_r:app_data_file:s0:c512,c768 file.txt'
$ cat file.txt
hello

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