Разрешение на запись в определенные пути, например, на SD-карту (extSdCard)

10

При попытке передать файл с удаленного сервера на устройство Android у меня возникли проблемы с правами доступа.

Оказывается, у меня нет разрешения на запись в месте расположения SD-карты (/ mnt / extSdCard).

Я использую SSHDroid в качестве ssh-сервера на устройстве Android и vSSH в качестве ssh-клиента для участия в ssh на устройстве Android.

Поскольку sudo и su, похоже, отсутствуют в приложении ssh-сервера (SSHDroid), мне интересно, как я могу изменить / получить разрешение на запись в местоположение на SD-карте. Или привилегий root недостаточно для изменения прав на запись, и, таким образом, это регулируется исключительно ОС Android, что является ограничением ОС?

Что я могу сделать, это написать на домашний путь к серверу SSH (SSHDroid). Этот путь, однако, является очень громоздким и не может быть достигнут с помощью обычного API браузера файлов Android. По этой причине я хотел перенести файл по доступному пути, например, на SD-карту.

Дополнение. Версия Android - 4.4.2. Версия ядра - 3.4.0-1539356 # 1.

Мусси Реди
источник
3
Это ограничение Kitkat (они называют это «безопасность», но на самом деле это скорее «force2cloud»). Вы не сможете обойти это без рута вашего устройства. За исключением выбора вашей внутренней SD-карты, потому что там вы можете написать.
Иззи
@Izzy Если бы положить , что в ответ , то этот вопрос будет быть ответил вопрос .
Mussé Redi
Готово, с предоставлением еще нескольких деталей. Я хотел бы дать вам лучший ответ (с более удобным решением), но Google запрещает это ...
Иззи
В самом деле? Я думал, что они большой поклонник открытого кода.
Mussé Redi
«Просто делай, как я говорю, не делай, как я». Различают цветы и фрукты. Провозглашенный «открытым исходным кодом», Google смешивает множество проприетарных вещей, среди прочего. И «свобода» становится все более ограниченной с каждой новой версией Android. Но это не тема для здесь :)
Иззи

Ответы:

9

Одним из ограничений, введенных в было перемещение WRITE_EXTERNAL_STORAGEразрешения на уровень защиты "SignatureOrSystem", что означает, что даже если запрашивается, «обычное приложение» (то есть то, которое вы устанавливаете как «обычный пользователь» без каких-либо привилегий root) не будет дольше получите это. Таким образом, есть очень мало вещей, которые вы можете сделать, чтобы обойти это:

  • очевидно: рутирование устройства и снятие этого ограничения
  • использование «личного» каталога приложения в качестве хранилища для синхронизируемых файлов (т. е. <sdcard>/Android/data/<package_name>/это единственное место, в которое приложение может записывать на SD с помощью Kitkat)
  • использование вашей SD карты в качестве хранилища (поскольку здесь ограничение не применяется)
Иззи
источник
Каковы недостатки рутирования устройства Android? Гарантия устарела?
Mussé Redi
Скорее всего. В ЕС для этого существует закон, различающий гарантию и гарантию. Один из них является обязательным по закону (и не может быть устаревшим путем укоренения), другой является необязательным предложением производителя, и с этим решение, принятое им. По-другому выглядит за пределами ЕС, поэтому здесь нет однозначного ответа.
Иззи
1

Вы всегда можете извлечь внешнюю SD-карту из устройства и подключить ее к компьютеру. Большинство ПК не поддерживают микро-SDCard, но вы можете использовать адаптер. Больше информации здесь: https://en.wikipedia.org/wiki/Secure_Digital#Micro

Если на вашем компьютере смонтирована внешняя SD-карта, вы можете читать и записывать на нее все файлы :-)

guettli
источник
Это было скорее своего рода упражнение, чтобы увидеть, как далеко вы можете зайти с ssh на устройстве Android, а не получить доступ к содержимому на SD-карте.
Mussé Redi