J'ai récemment trouvé un moyen de maintenir l'accès Root sur mon appareil Android en utilisant un serveur SSH dropbear que j'ai modifié pour qu'il fonctionne au démarrage en tant que Root en utilisant init.d, un peu de scripting magique et quelques scripts de configuration que j'ai créés. Si vous voulez, vous pouvez l'essayer aquí . Enfin, pour une expérience, j'ai supprimé le binaire su et Superuser.apk du système. J'ai réussi à les recopier sur le système mais je ne connais pas les permissions appropriées pour le binaire su. Si je regarde dans l'application Superuser sur un autre téléphone enraciné et que je vais mettre à jour, elle affiche -rwsr -sr-x
comme les permissions sur le binaire. Comment puis-je définir ces mêmes autorisations manuellement et que signifient-elles ?
Réponse
Trop de publicités?Pour définir les autorisations de fichiers, vous pouvez utiliser la fonction chmod
commande. Les permissions affichées sont essentiellement divisées en 3 parties, chacune consistant en 3 caractères : un triple pour le propriétaire, le groupe, et pour "autres". En général, chaque triple contient des définitions pour la lecture, l'écriture et l'exécution d'un fichier, donc rwx
signifie "peut lire, écrire et exécuter", alors que r--
dirait "peut seulement lire".
Les 9 caractères résultants sont généralement précédés d'un autre, donnant des informations sur le type de "fichier" : (d)irectory et (l)ink sont les exemples les plus courants. Encore une fois, si aucune "condition spéciale" ne correspond, un caractère d'en-tête -
indique un "dossier normal".
Sur cette base, nous allons prendre votre contribution : -rwsr-sr-x
décrit évidemment un "fichier normal" (commençant par -
), lisible ( r
) par le propriétaire, le groupe et d'autres, en écriture par le propriétaire uniquement et exécutable par "d'autres" - tandis que le propriétaire et le groupe ont un s
au lieu de cela, le x
pour exécuter. Cela signifie "suid", élever l'appelant au niveau du propriétaire/groupe du fichier.
En tirant parti du fait que les permissions peuvent être définies "bit à bit" ( x
=1, w
=2, r
=4, suid user=4, group=2), après mon long "rant" enfin la commande qui devrait faire l'affaire :
chmod 6774 su
Cela devrait définir les permissions que votre question montre. Si j'ai "mal calculé", vous avez toutes les informations pour recalculer vous-même maintenant :)
Des indications supplémentaires tirées des commentaires :
Au lieu de calculer le "bitmask", on peut également utiliser des noms symboliques - comme Dan Hulme comme cela a été souligné, et comme expliqué par exemple sur le site de l chmod manpage :
- définir à qui accorder la subvention : (u)ser / (g)roup / (o)thers / (a)ll
- définir ce qu'il faut accorder : (r)ead / (w)rite / e(x)ecute / (s)uid
- définir s'il faut (+)accorder ou (-)révoquer.
Les deux commandes suivantes devraient donc être similaires, à condition que d'autres choses n'aient pas été accordées auparavant :
chmod 6774 su
chmod u+rws g+rs o+rx su
La différence devient claire dans le cas où, par exemple, les "autres" avaient également le droit d'écriture : alors que la première commande (utilisant un masque de bits) définit explicitement le droit pour qu'il corresponde aux "subventions" définies (et supprimerait donc le droit d'écriture), la commande symbolique "fait une différence" (dans l'exemple, elle ne fait qu'effacer le droit d'écriture). ajoute les permissions spécifiées à ce qui était là avant, de sorte que la permission d'écriture ne serait pas supprimée).