2017-03-08 4 views
2

Actuellement, j'essaie de comprendre ce que SELinux est capable de faire sur Android et j'ai rencontré ce problème. Fondamentalement, je veux voir si je peux interdire l'accès à un fichier. Jpeg avec l'application de l'album. Je pourrais obtenir à la fois, le contexte de l'image et le contexte du processus de l'application de l'album. Par réflexion, j'ai pu invoquer la méthode setFileContext (String path, String context) à partir de android.os.SELinux.java mais elle a renvoyé false. J'ai donc essayé la commande "chcon" via adb shell qui a eu le même résultat.Changer SELinux Contexte d'un fichier sur Android ne fonctionne pas correctement

chcon -v u:object_r:fuse:s1 ./storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg 

chcon './storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg' to u:object_r:fuse:s1 
chcon: './storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg' to u:object_r:fuse:s1: 
Operation not supported on transport endpoint 

Après un peu de recherche, je trouve que je peux changer le contexte que si le fichier est sur un système de fichiers ext4, mais l'image était sous le système de fichiers de fusible. Mais quand je place l'image sur une partition au format ext4, changez le contexte (ce qui fonctionne) et le replacez dans le répertoire d'origine, l'ancien contexte est de retour. Est-ce que quelqu'un peut m'expliquer s'il vous plaît pourquoi c'est le cas?

Pourquoi le contexte ne peut-il pas être modifié sous le système de fichiers de fusibles et pourquoi le nouveau contexte ne survit pas, en utilisant la méthode ci-dessus? Y at-il une solution ou une solution de contournement?

EDIT:

Je compris que le contexte SELinux est une extension pour le fichier et le système de fichiers de fusible ne supporte pas ceux-ci. Lorsque j'essaie d'obtenir le contexte, j'obtiens un contexte par défaut pour ce fichier. Ce contexte par défaut provient-il d'une liste ou d'un autre fichier ou y a-t-il juste un contexte par défaut qui sort du SELinux.java?
EDIT sur.

Mon appareil de test est un HTC M8 avec Android 6 et un accès root.

Merci d'avance, vos efforts sont très appréciés!

+0

Avez-vous pu résoudre ce problème? – refi64

Répondre

0

désactiver SELinux d'abord par course:

setenforce 0 

alors votre cmd peut-être réussir.