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

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

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

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

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

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

Добавка. Версия Android 4.4.2. Версия ядра 3.4.0-1539356#1.

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

Ответы (2)

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

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

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

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

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