2 votes

Commande Linux 'w' - comment cette commande est-elle écrite dans le shell Android ?

Je recherche des commandes similaires dans le shell Android - comme elles sont utilisées dans Linux comme ces commandes - que puis-je taper dans le terminal Android pour :

w

qui

whoami

?

Merci.

0 votes

Vous avez besoin de busybox ... Vous pouvez obtenir no Root busy box sur le play store.

0 votes

Ou copiez-le dans /data/tmp/busybox et définissez les permissions correctes.

0 votes

@Zillinium - busybox est disponible en tant que package dans termux ... attendez ... il n'y a que la commande wc et elle se bloque toute seule ! ?

3voto

Irfan Latif Points 16863

Commandes Linux w y who lire les informations de connexion depuis le fichier /var/run/utmp . Les enregistrements/journaux de connexion traditionnels de Linux sysV comme utmp , wtmp , btmp y lastlog sont définis et lus par certains programmes qui utilisent GNU libc (la bibliothèque C la plus utilisée sur les distributions Linux) et d'autres libc. Ces fichiers contiennent des informations sur les utilisateurs actuellement et précédemment connectés.

Cependant, il n'y a pas de concept de console Linux connexion sur Android car il n'est pas conçu pour les connexions d'utilisateurs multiples. Terminaux virtuels sont désactivés par défaut sur Android, init ne démarre pas getty et donc il n'y a pas de connexion aucun gestionnaire de connexion (comme logind ), non shell au démarrage et aucune session utilisateur, et donc aucun fichier de connexion. Android démarre directement à l'interface graphique. D'autres programmes CLI comme sshd qui lisent/écrivent ces fichiers de connexion ne font pas non plus partie d'Android. Ainsi, la libc Bionic d'Android ne fournit pas les fonctions de utmp.h ni la hiérarchie des systèmes de fichiers ne contient /var/log o /var/run . Cependant, si un programme lié aux librairies standard de Linux est utilisé sur Android, il essaiera d'accéder à ces fichiers de connexion. Mais si un programme - comme w , who , users , last y lastlog - est totalement dépendant de ces fichiers, il ne fonctionnera tout simplement pas. Vous pouvez utiliser une busybox telle que de yashdsaraf pour obtenir toutes ces commandes sur Android.

Commande Linux whoami obtient l'UID (effectif) du processus en faisant un appel syscall geteuid directement au noyau, puis sur Linux, si possible, il résout l'ID en nom en utilisant des mécanismes de résolution de nom comme directement à partir de /etc/passwd, /etc/group ou via NSS, NSCD, etc. id La commande fait en plus getgid y getgroups également. Ainsi, ces commandes fonctionnent sur Android comme prévu et - avec d'autres outils similaires logname y groups - font partie de coffre à jouets ; le choix d'Android pour un outil de ligne de commande Linux tout-en-un.
Bionic libc's fonctions d'enveloppement (que les applications utilisent effectivement via les API Android pour obtenir l'UID) et les syscalls du noyau sont également identiques comme c'est le cas avec les autres libc :

~# nm -C /system/lib64/libc.so | grep geteuid$
0000000000070d58 T geteuid
~# grep geteuid$ /proc/kallsyms
0000000000000000 T sys_geteuid

RELATION : COMMENT METTRE EN PLACE UN ENVIRONNEMENT DE LOGIN LINUX SUR Android

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