2 votes

Obtenir la permission réelle su sur GNURoot Debian au lieu de l'environnement proot

Je possède un Samsung Galaxy J110H, Android KitKat 4.4.4, rooté.

Est-il possible d'obtenir de réels privilèges superutilisateur dans GNURoot Debian au lieu de fakerootfs? Existe-t-il une façon pour que lorsque je tape su; il me soit réellement demandé d'autoriser l'accès? Voici ce qui se passe lorsque je tape su:

root@localhost:/# su
setgid: Permission denied
root@localhost:/#
- - snip - -

Aussi, apt-get update && apt-get upgrade renvoie:

unpacking python (from .../python_2.7.3-4+deb7u1_all.deb) ...
Processing triggers for man-db ...
/usr/bin/mandb: can't set effective uid: Permission denied
Setting up libexpat1:armel (2.1.0-1+deb7u2) ...
Setting up python2.7-minimal (2.7.3-6+deb7u2) ...
- - snip - -

2 votes

Vous n'avez pas besoin de proot si votre appareil est rooté. Et vous n'avez pas besoin d'une application pour exécuter une distribution Linux sur Android. Il vous suffit de télécharger le rootfs et de créer un simple script shell pour démarrer et arrêter l'environnement Linux depuis adb shell ou n'importe quelle application d'émulateur de terminal. J'utilise Ubuntu, ArchLinux et Void Linux de la même manière sur Termux et ssh depuis des années. Tout ce que vous avez à faire est quelques montages de bind et un chroot. Le montage des namespaces ajoute une isolation supplémentaire. J'ai compilé mon noyau avec le support des namespaces réseau, pid et uts pour isoler davantage les deux environnements.

0 votes

Diable j'ai besoin d'un tutoriel là-dessus!!

1 votes

Je ne suis pas sûr pourquoi vous obtenez une autorisation refusée. mais sudo apt-get fonctionne correctement ici (j'utilise l'application Linux Deploy via dropbearmulti ssh sur un émulateur de terminal, Android 7, paramètres : espaces de noms globaux dans l'application root, permissif dans l'application SelinuxModeChanger)

2voto

jmdev Points 669

Moi aussi je rencontre cette erreur dans GNURoot. J'ai recherché sur Google et j'ai vu votre question postée dans de nombreux forums Stack. Je voulais passer de armel à armhf et j'ai suivi les instructions sur le site de Debian mais je suis tombé sur l'erreur que vous avez mentionnée. Ce que j'ai dû faire était chown u+s /usr/bin/mandb. L'erreur est encore apparue mais tout fonctionnait comme un charme.

Je pense que vous devez chmodrer dpkg à nouveau et tout fonctionnera bien. Au fait, je suis encore sous KitKat.

Éditer: Après des tests et une utilisation plus poussée de gnuroot, il s'avère que la méthode que j'ai mentionnée pour contourner l'erreur de permission refusée ne résout pas tous les problèmes. Après avoir examiné /etc/fstab dans l'environnement proot, il n'y a pas de points de montage. Si vous exécutez la commande mount à partir du terminal gnuroot, vous remarquerez qu'elle affichera les points de montage du système hôte. De même, vous remarquerez qu'en exécutant chmod 4777 / ou chmod u+s / l'erreur de permission refusée apparaîtra. Si vous exécutez ls -l /acct, il listera le /acct du système hôte et non du proot.

Je n'ai pas testé cela mais puisque l'environnement proot a besoin des drapeaux suid, vous devrez décompresser l'image d'amorçage de votre appareil Android, modifier le fstab et modifier les options de montage en supprimant l'option nosuid, recompresser et flasher l'image d'amorçage pour résoudre votre problème. Le remontage dans le terminal en tant que root (et non proot) ne résout pas le problème car même après le remontage, le fichier fstab reste le même.

En passant, c'est juste ma théorie et j'éditerai la réponse si cela fonctionne parfaitement.

Une citation extraite d'une réponse sur reddit

Si vous avez root, chroot. En bref, un chroot générera des processus directement dans l'espace utilisateur Linux tandis qu'un proot le fera à partir de l'environnement Android et sera limité par les limitations des ressources Android. Un chroot peut également fonctionner plus étroitement avec un environnement de bureau; gestionnaires de fenêtres complets, navigateurs, etc. Peut même exécuter Java et Android Studio.

Linux Deploy est différent de Gnuroot car Linux Deploy utilise chroot tandis que gnuroot utilise proot, c'est la raison pour laquelle ils fonctionnent différemment.

Éditer2: Après des tests encore plus poussés, j'ai découvert que je devais exécuter apt-get install fakeroot puis fakeroot /bin/bash Après avoir exécuté ces commandes, l'erreur a disparu. Il s'est avéré que le chmoding ne résolvait pas entièrement l'erreur. De plus, si vous rencontrez des erreurs d'installation, essayez d'exécuter fakeroot /bin/sh ou fakeroot /bin/dash Preuve que fakeroot fonctionne je suis maintenant sous debian 10 (buster) après des mises à jour patientes. entrez la description de l'image ici

Gnu root debian est comme Termux mais pour les anciennes versions d'Android. En ce qui concerne la question de l'appel du binaire su depuis l'intérieur de proot, vous devez installer le binaire tsu. Puisque gnuroot n'a pas de pkg dans termux, le même binaire peut être installé via python2. Alors installez d'abord Python pip puis exécutez pip install tsu puis exécutez le binaire tsu et peut-être aurez-vous de la chance et obtiendrez des permissions root réelles. Cela ne fonctionnera pas sur la version stock wheezy (je l'ai testée) debian mais essayez de passer à jessie ou stretch et peut-être que vous aurez de la chance.

0 votes

Je pense que je devrais poster le tutoriel quelque part et peut-être que quelqu'un là-bas le recherche.

0voto

jmdev Points 669

Alternativement, vous pourriez utiliser un Terminal GNU Another Term mis à jour et maintenu dans un environnement proot avec un binaire proot mis à jour qui, à mon avis, peut également être une alternative à Termux. Il prend en charge les versions d'Android aussi bas que la version 4.0 et aucun accès root n'est nécessaire. Ici et ici sont les liens du projet pour plus d'informations.

Quelques captures d'écran que j'ai prises sur ma tablette android 4.4.4 exécutant Buster : entrez une description de l'image ici

Et entrez une description de l'image ici

Je ne l'ai pas testé mais je pense que vous pouvez utiliser VNC et obtenir un environnement de bureau.

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