1 votes

Accès refusé lors de l'ouverture de fichiers depuis Termux.

J'ai un problème de permission de fichier dans Termux.

Par exemple, j'ai installé c4droid et j'ai copié le contenu des dossiers /include et /lib de Termux dans le dossier /c4droid où les en-têtes sont recherchés lors de la compilation. J'ai changé le propriétaire et le groupe au nom correct et le mode en 777, mais lors de la compilation, il dit "ne peut pas ouvrir ****.h permission refusée".

Même chose avec une liste de mots qui vient de la carte SD que j'ai mise dans un dossier destiné à être utilisé avec hydra, non seulement je dois utiliser l'accès root pour dézipper le fichier et le déplacer, mais hydra lui-même ne peut pas l'ouvrir.

Quelle est cette chose si importante que je ne comprends pas sur Termux et la propriété et les permissions des fichiers?

0 votes

J'ai installé c4droid et j'ai copié le contenu des dossiers include et lib de termux dans le dossier c4droid. Et quel est l'emplacement exact du dossier c4droid?

0 votes

/data/data/com.n0n3m4.droidc/files/gcc/'quelquechoseaarchar‌​m'/

0 votes

Donc vous essayez d'accéder à /data/data/com.n0n3m4.droidc/ depuis Termux, n'est-ce pas? Cela ne fonctionnera pas. Termux ne peut pas lire/écrire des données en dehors de son propre répertoire privé /data/data/com.termux/. C'est le mécanisme de sandbox de l'application d'Android - pour la sécurité et la confidentialité. Un autre emplacement possible auquel Termux peut accéder est /sdcard/Android/data/com.termux. Aussi tout /sdcard si vous accordez à Termux la permission Storage.

0voto

John Gilmore Points 101

TL;DR:

$su
#chown u0_a???:u0_a??? 
#restorecon -v 
#exit

ou

$su
#chown -R u-a???:u0_a??? 
#restorecon -vR 
#exit

IMPORTANT: Les commandes exécutées via sudo fonctionnent différemment des commandes exécutées à partir d'un invite de root via su. sudo ls -lZ != su ls -lZ (ce qui est inattendu et viole tant d'hypothèses, mais je vous assure que c'est ainsi. Je suppose qu'il y a quelques autres façons non évidentes dont ces commandes pourraient échouer, donc je vous conseillerais d'essayer quelques différentes façons d'être root si cela échoue)

Assurez-vous d'obtenir le nom d'utilisateur et le groupe corrects pour votre utilisateur termux via "ls -l" ou similaire, et utilisez ce nom d'utilisateur et ce groupe dans les commandes ci-dessus.

J'ai trouvé cette solution pour corriger les permissions de fichiers SElinux après les avoir copiés de la carte SD dans mon répertoire personnel Termux sur un problème GitHub Et cela m'a pris tellement de temps et d'efforts pour déterrer que j'ai pensé le reposter quelques fois pour le rendre plus facile la prochaine fois que cette "Eh bien non! vous n'êtes pas autorisé à restaurer vos sauvegardes!" me mordra le derrière.

Vous pouvez tester pour voir si c'est votre problème avant de mettre en œuvre ceci via ls -lZ. Comparez à un fichier auquel vous pouvez accéder pour comparer le contexte de sécurité SELinux des deux fichiers et vérifiez qu'ils diffèrent.

0voto

Yvain Points 121

Les commentaires ci-dessus indiquent que SELinux bloque l'accès aux fichiers qui sont copiés vers le répertoire /data/data/ des applications. Oui, c'est SELinux qui bloque l'accès, il suffit de le mettre en mode permissif avec SELinux_switch, et n'oubliez pas de définir l'utilisateur et le groupe sur celui de l'application.

Donc, copier les fichiers depuis Termux avec l'option -pZL garde tout en place, et une fois que vous avez défini le bon propriétaire et groupe, cela fonctionnera. Je n'ai pas essayé d'avoir un lien symbolique depuis le dossier /includes et /libs de droidc vers ceux de Termux. Si vous avez oublié de corriger les autorisations lors de la copie des fichiers, vous pouvez utiliser /system/bin/restorecon -R (récursif) sur les dossiers /include et /lib.

2 votes

Ne définissez pas SELinux permissive avec SELinux Switcher, c'est comme tourner le dos à une fonction de sécurité sur laquelle des professionnels ont passé des années à implémenter. Au lieu de cela, définissez le contexte approprié sur vos fichiers/répertoires. Si vous répondez à ma question en chat, je peux essayer de vous aider à le faire. Si cela ne fonctionne pas, vous pouvez passer SELinux permissive temporairement, pas définitivement. PS: vous n'avez pas besoin d'une application pour le faire, il suffit de echo 0 >/sys/fs/selinux/enforce

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