Termux hat keine Berechtigung, auf den internen Speicher zuzugreifen - auch nicht zum Lesen

19

Mit dem Terminalemulationsprogramm termux ( https://termux.com ) gebe ich folgenden Befehl ein:

ls /sdcard

Ich erhalte folgenden Fehler:

ls: can't open '/sdcard': Permission denied

Als ich feststellte, dass das Verzeichnis / sdcard unter Android ein Symlink ist, versuchte ich, den Speicherort des tatsächlichen Verzeichnisses zu ermitteln. Dabei stellte ich fest, dass es sich nicht nur um einen Symlink, sondern um einen Symlink zu einem anderen Symlink handelt und das tatsächliche Verzeichnis / storage / emulated / ist. 0

Also gab ich endlich ein:

ls -ld /storage/emulated/0

Das Ergebnis war:

drwxrwx--x   63 root     sdcard_r      4096 Aug 10 12:04 /storage/emulated/0

Kurz gesagt: Ich weiß nicht, ob termux früher mit den Berechtigungen der Gruppe sdcard_r ausgeführt wurde oder ob die o- Berechtigungen für das Lesen und Schreiben verwendet wurden. Ich muss jedoch wissen, welche der beiden Berechtigungen früher verwendet wurden und wie man das Problem behebt - denn der Zugriff auf den Inhalt der internen SD-Karte ist ein bisschen kritisch.

Nein, mein Gerät ist nicht gerootet und ich habe auch nicht vor, es zu rooten. Daher kann ich keine Informationen angeben, für die ich das Gerät rooten müsste, um sie zu erhalten. Da ich jedoch in der Vergangenheit nie rooted war, konnte ich nicht lesend auf das Verzeichnis / sdcard zugreifen - das ist also neu (und störend).

Zugegeben - es ist ein paar Monate her, seit ich dies versucht habe -, aber diese neue Einschränkung von Android beeinträchtigt ernsthaft die Benutzerfreundlichkeit von termux und who-knows-what-else, da ich in der Lage sein muss, auf Dateien zuzugreifen, die vorhanden sind auf meiner SD-Karte. (Ich kann immer noch viel tun, auch wenn nicht alles, auch ohne Schreibrechte - aber ich stecke ziemlich im Wasser fest, wenn ich keine Leserechte bekomme, wie es derzeit der Fall ist.)

user3080003
quelle
Hmm, es sieht so aus, als hätte es die READ_EXTERNAL_STORAGEErlaubnis, also sollte es Zugriff haben.
Matthew Read
3
Ja --- aber anscheinend war es ausgeschaltet worden. Ich erkannte es, als ich in den Systemeinstellungen> Allgemein> Anwendungen> Termux ----- feststellte, dass es einen Kippschalter für den Zugriff auf Dateien gab, die irgendwie ausgeschaltet wurden. Unnötig zu sagen - ich habe es wieder eingeschaltet und das Problem war gelöst. ------ Natürlich - die unmittelbare Krise ist vorbei --- aber das alles wirft immer noch die Frage auf, warum es überhaupt ausgeschaltet wurde. (Ich weiß, dass ich das nie getan habe.)
user3080003
Ich hatte das gleiche Problem, und Ihre Antwort hier hat es für mich behoben. BEARBEITEN: Dumme Eingabe zu übermitteln. Ich habe versucht, eine neue Zeile zu erstellen. Folgendes ist meiner Meinung nach passiert: In Android 7 können jetzt Berechtigungen verweigert werden (yay!), In Termux wird jedoch aus irgendeinem Grund keine Berechtigung angefordert, wie dies bei anderen Programmen der Fall ist. Das Problem ist also nicht, dass es irgendwie ausgeschaltet war, aber nie eingeschaltet wurde. Dies ist jedoch Spekulation.
Andrew
3
Man kann termux-setup-storage ausführen, um die Speicherberechtigungen der App anzufordern. Siehe termux.com/storage.html .
Fornwall

Antworten:

5

Für neuere Versionen von Android müssen Apps zur Laufzeit um Erlaubnis fragen. Möglicherweise haben Sie dies bereits bemerkt. Ein Beispiel ist, dass Chrome nach der Speichererlaubnis fragt, wenn Sie versuchen, etwas zum ersten Mal herunterzuladen. Für Termux ist dies ein Problem. Die Standardberechtigungen sind "nicht zulässig". Wenn Termux eine Berechtigung für eine Aufgabe benötigt, wird stattdessen versucht, die Aufgabe trotzdem auszuführen, und es wird ein Fehler ausgegeben, da Termux nicht aktualisiert wurde, um diese Berechtigungen anzufordern. Leider müssen die Entwickler dies selbst beheben. Zum Glück können Sie mit Android die App-Berechtigungen manuell verwalten. Bis die Entwickler Termux entsprechend aktualisieren, ist dies wahrscheinlich der einzige Weg.

Schritt 1: Gehen Sie zur Termux App Info-Seite

Es gibt mehrere Methoden, um diese Seite zu erreichen. Da unterschiedliche Telefone unterschiedliche Verhaltensweisen aufweisen können, habe ich alle mir bekannten hinzugefügt.

Methode 1: Verwenden des Multitask-Menüs

  1. Öffnen Sie Termux.
  2. Drücken Sie die Multitask-Taste , um das Multitask-Menü zu öffnen. Dies sollte neben der Home-Schaltfläche auf der linken Seite sein.
  3. In der Liste der Anwendungen sollte Termux der erste sein. Tippen und halten Sie auf das Symbol.

    Auf einigen Handys befinden Sie sich bereits auf der Infoseite. Auf anderen Handys sehen Sie stattdessen oben die Änderung der Termux-App-Box, wobei irgendwo ein Info-Symbol (ℹ) angezeigt wird. Bei anderen Telefonen wird möglicherweise ein Kontextmenü mit der Option "App-Info" angezeigt. Tippen Sie in beiden Fällen auf diese.

Methode 2: Verwenden des Benachrichtigungsfelds

  1. Öffnen Sie Termux. Sie möchten, dass die Benachrichtigung von Termux angezeigt wird.
  2. Öffnen Sie das Benachrichtigungsfeld und suchen Sie die Benachrichtigung von Termux.
  3. Probieren Sie eine der folgenden Möglichkeiten:

    • Wischen Sie mit dem Finger nach links oder rechts, suchen Sie nach einem Zahnrad (⛭) oder einem Infosymbol (ℹ) und tippen Sie darauf. Sie können die Benachrichtigung von Termux nicht abweisen, machen Sie sich also keine Sorgen.
    • Tippen Sie etwas länger auf die Benachrichtigung und suchen Sie nach einem Zahnrad (⛭), einem Infosymbol (ℹ) oder einem Kontextmenü mit der Option "App-Info" und tippen Sie darauf.
    • Suchen Sie nach dem App-Symbol und / oder dem Namen. Möglicherweise müssen Sie die Benachrichtigung nach unten streichen. Tippen und halten Sie darauf. Möglicherweise wird ein Zahnrad (⛭), ein Infosymbol (ℹ) oder ein Kontextmenü angezeigt. Tippen Sie entsprechend an.

Methode 3: Verwenden des App Managers

  1. Gehen Sie zu Einstellungen> Apps.
  2. Suchen Sie nach einer Option mit der Bezeichnung "Anwendungsmanager" oder einer ähnlichen Option. Es scheint von Ihrem Gerät abzuhängen.
  3. Suchen Sie nach dem Eintrag von Termux und tippen Sie darauf. Möglicherweise müssen Sie Ihren Filter in "installierte Apps" oder "heruntergeladene Apps" ändern.

Schritt 2: Ändern der Berechtigungen

Sie sollten sich jetzt auf einer Seite mit dem Namen, dem Symbol und der Versionsnummer von Termux befinden, die über zwei Schaltflächen mit den Bezeichnungen "Deinstallieren" und "Stopp erzwingen" verfügt. Darunter sollten verschiedene andere Möglichkeiten stehen.

  1. Suchen Sie nach einer Option mit der Bezeichnung "Berechtigungen" (möglicherweise müssen Sie einen Bildlauf durchführen). Tippen Sie darauf.
  2. Es sollte einen Eintrag für die Speicherberechtigung geben. Schalten Sie es ein, indem Sie auf den Schalter daneben klicken. Wenn die Speicherberechtigung nicht aufgeführt ist, verwenden Sie in Termux einen speicherbezogenen Befehl, um einen Fehler zu erhalten, dem die Berechtigung verweigert wurde, und kehren Sie zurück.

Änderung testen

Sie haben Termux nun Zugriff auf Ihren Speicher gegeben. Sie können dies mit dem folgenden Befehl testen:
ls /sdcard/
Wenn Sie keinen Fehler mit verweigerter Berechtigung erhalten, hat es funktioniert! Sie sollten dies nicht erneut ausführen müssen, es sei denn, Sie installieren Termux neu.

ColinTNMP
quelle
0

Es ist Juli 2017 und ich hatte das gleiche Problem, habe dafür gegoogelt und bin hier angekommen. Matthew Reads Kommentar wies den Weg zur Lösung, aber es gibt keine Antwort, die dies klar ausdrückt.

Termux fordert bei der Installation keine Dateisystemberechtigung an. Sie müssen sie daher über Einstellungen => Anwendungen => Termux => Berechtigungen aktivieren

Nathan Smith
quelle