Je compile un Android ROM à partir de la source, et j'ai une application que je veux qu'elle soit préinstallée et qu'elle s'exécute avec l'autorisation root.
Comment puis-je accorder un accès root à cette application spécifique, sans rooter la ROM entière?
Stock standard Android Les ROM fournissent des privilèges root à très peu de choses, conformément au principe du moindre privilège . Au lieu de cela, les applications bénéficient des autorisations précises dont elles ont besoin.
Pourquoi avez-vous besoin exactement de cette application pour avoir des autorisations root? Vous devez d'abord parcourir la liste de toutes les autorisations internes non publiées Android pour voir si l'une d'elles fait ce que vous voulez. Puisque vous créez une application système, vous pouvez même utiliser des autorisations signature
qui ne sont normalement pas disponibles pour d'autres applications. Il vous suffit de vous assurer que votre application est signée par la clé avec laquelle vous créez le Android ROM - vous pouvez ensuite la distribuer avec le ROM ou séparément, et il aura toujours accès aux autorisations dont vous avez besoin.
Les avantages de procéder de cette façon sont les suivants:
Donc, si vous pouvez éventuellement faire votre tâche de cette façon, faites-le.
Si vous avez vraiment besoin de root, les choses deviennent difficiles.
Vous avez trois options. Par ordre de préférence:
su
pour vérifier exactement qui l'appelle.Si vous avez vraiment besoin de root, alors je voudrais ajouter un nouveau service système . Cela peut s'exécuter en tant que root. Vous devez ensuite ajouter des API supplémentaires appropriées pour que votre application puisse l'appeler - et que les autorisations puissent être de signature
- afin que seule votre application système puisse l'appeler. C'est la façon architecturale "correcte" de le faire dans Android-land.
Les deuxième ou troisième options impliquent la création d'un outil de ligne de commande qui fait ce que vous voulez, mais je ne connais pas de moyen sûr pour un tel outil de vérifier qui l'appelle. Il peut être acceptable d'autoriser n'importe quelle application à appeler cette fonctionnalité. Si c'est le cas, un nouvel exécutable setuid-root pourrait être la voie à suivre. Cependant, comme je l'ai dit, je ne connais aucun moyen d'empêcher d'autres applications de l'exécuter.