Нет доступа к Termux для доступа к внутренней памяти - даже для чтения

19

Используя программу эмуляции терминала termux ( https://termux.com ), я набираю следующую команду:

ls /sdcard

Я получаю следующую ошибку:

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

Понимая, что каталог / sdcard на Android - это символическая ссылка, я попытался найти местоположение фактического каталога - узнав, что это не просто символическая ссылка, а символическая ссылка на другую символическую ссылку, а фактический каталог - / storage / emulated / 0

Итак, наконец, я напечатал:

ls -ld /storage/emulated/0

Результат, который я получил, был:

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

Итак, вкратце --- я не знаю, использовался ли termux для запуска с разрешениями группы sdcard_r или o- разрешения, используемые для разрешения чтения-записи, - но мне нужно знать, какой из двух он был раньше, и как все исправить - ведь возможность доступа к содержимому внутренней SD-карты очень важна.

Нет, мое устройство не имеет root-прав, и я не планирую его рутировать - поэтому я не могу предоставить какую-либо информацию, которую мне пришлось бы получить для рутирования устройства. Однако отсутствие рутования никогда не препятствовало мне иметь доступ на чтение к каталогу / sdcard - так что это ново (и тревожно).

Конечно, прошло уже несколько месяцев с тех пор, как я пытался это сделать ранее, но это новое ограничение для Android серьезно препятствует удобству использования termux и тому, кто знает, что еще, поскольку мне нужно иметь доступ к файлам, которые на моей SD-карте. (Я все еще могу многое, даже если не все, даже без разрешения на запись - но я почти застрял в воде, если не могу получить разрешения на чтение, как в настоящее время).

user3080003
источник
Хм, похоже, у него есть READ_EXTERNAL_STORAGEразрешение, поэтому он должен иметь доступ.
Мэтью Прочитано
3
Да --- но, видимо, он отключился. Я понял это, когда зашел в «Системные настройки»> «Основные»> «Приложения»> Termux ----- и обнаружил, что есть переключатель для доступа к файлам, которые каким-то образом отключены. Само собой разумеется - я снова включил его, и проблема была решена. ------ Конечно - немедленный кризис закончился - но это все еще поднимает вопрос о том, что вызвало его отключение в первую очередь. (Я знаю, что никогда этого не делал.)
user3080003
У меня была такая же проблема, и ваш ответ здесь исправил это для меня. РЕДАКТИРОВАТЬ: Глупый ввод, чтобы представить. Пытался создать новую линию. Вот что я думаю произошло: Android 7 теперь позволяет отказывать в разрешениях (ура!), Но в случае Termux по какой-либо причине он не запрашивает разрешение, как другие программы. Итак, проблема не в том, что он был каким-то образом выключен, но никогда не включался. Это предположение, хотя.
Андрей
3
Можно запустить termux-setup-storage, чтобы приложение получило разрешения на хранение. См. Termux.com/storage.html .
fornwall

Ответы:

5

Более новые версии Android требуют, чтобы приложения запрашивали разрешение во время выполнения. Возможно, вы уже заметили это. Одним из примеров является Chrome, запрашивающий разрешение на хранение при первой загрузке. Для Termux это проблема. Разрешения по умолчанию имеют значение «не разрешено», поэтому, когда Termux требуется разрешение для задачи, поскольку Termux не был обновлен для запроса этих разрешений, он все равно пытается выполнить задачу и в результате выдает ошибку. К сожалению, разработчики должны исправить это сами. К счастью, Android дает вам возможность управлять разрешениями приложений вручную. Пока разработчики не обновят Termux соответствующим образом, это, вероятно, единственный способ.

Шаг 1: Перейдите на страницу информации о приложении Termux.

Есть несколько способов добраться до этой страницы. Поскольку разные телефоны могут вести себя по-разному, я включил все, что знаю.

Способ 1: использование многозадачного меню

  1. Откройте Termux.
  2. Нажмите кнопку многозадачности, чтобы открыть меню многозадачности. Это должно быть рядом с кнопкой домой слева.
  3. В списке приложений Termux должен быть первым. Нажмите и удерживайте его значок.

    На некоторых телефонах вы уже будете на информационной странице. На других телефонах вы вместо этого увидите изменения в окне приложения Termux вверху, где где-то появится значок информации (ℹ). Другие телефоны могут предоставить вам контекстное меню с опцией «Информация о приложении». В обоих случаях нажмите на них.

Способ 2. Использование панели уведомлений

  1. Откройте Termux. Вы хотите, чтобы уведомление Termux появилось.
  2. Опустите панель уведомлений и найдите уведомление Termux.
  3. Попробуйте одно из следующих действий:

    • Проведите уведомлением влево или вправо, найдите зубчатое колесо (⛭) или значок информации (ℹ) и коснитесь его. Вы не можете отклонить уведомление Termux, так что не беспокойтесь об этом.
    • Нажмите и удерживайте уведомление и найдите шестерёнку (⛭), значок информации (ℹ) или контекстное меню с параметром «Информация о приложении» и коснитесь его.
    • Найдите значок приложения и / или имя. Возможно, вам придется провести вниз по уведомлению. Нажмите и удерживайте его. Может появиться шестеренка (⛭), значок информации (ℹ) или контекстное меню. Нажмите соответственно.

Способ 3: использование диспетчера приложений

  1. Зайдите в настройки> приложения.
  2. Ищите опцию с надписью «Диспетчер приложений» или аналогичный. Кажется, это зависит от вашего устройства.
  3. Найдите запись Termux и нажмите на нее. Возможно, вам придется изменить фильтр на «установленные приложения» или «загруженные приложения».

Шаг 2: Изменение разрешений

Теперь вы должны попасть на страницу с именем, значком и номером версии Termux с двумя кнопками с надписью «Удалить» и «Принудительный останов». ниже должны быть различные другие варианты.

  1. Ищите опцию с надписью «Разрешения» (возможно, вам нужно прокрутить). Нажмите на него.
  2. Там должна быть запись для разрешения хранения. Включите его, нажав переключатель рядом с ним. Если разрешения на хранение нет в списке, используйте связанную с хранилищем команду в Termux, чтобы получить ошибку отказа в разрешении и вернуться.

Тестирование изменений

Теперь вы предоставили Termux доступ к вашему хранилищу. Вы можете проверить это с помощью следующей команды:
ls /sdcard/
Если вы не получили ошибку об отказе в разрешении, это сработало! Вам не нужно делать это снова, пока вы не переустановите Termux.

ColinTNMP
источник
0

это июль 2017 года, и у меня была такая же проблема, гуглил и прибыл сюда. Комментарий Мэтью Рида указал путь к решению, но нет ответа, в котором это четко прописано, так что вот что из этого вышло:

Termux не запрашивает разрешение файловой системы при установке, поэтому вы должны включить его через Настройки => Приложения => Termux => Разрешения

Натан Смит
источник