У меня странная проблема, когда приложения, adb и т. д. могут правильно получить доступ к моему внутреннему и внешнему хранилищу SD без проблем , если они не работают как root , и в этом случае они полностью недоступны. Это на моем Oppo Find 7 под управлением ColorOS 1.2.7i (Android 4.3), и я убедился, что у меня нет этой проблемы с WRITE_EXTERNAL_STORAGE. Я не уверен, когда это началось, но я думаю, что это было после обновления ОС некоторое время назад.
Когда я запускаю mount
непривилегированную оболочку adb, у нее есть эти записи, которые не появляются, когда я запускаю ее как суперпользователь:
/dev/block/vold/179:65 /storage/sdcard1 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1023,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:29 /storage/sdcard0 ext4 rw,seclabel,nosuid,nodev,noexec,relatime,discard,nodelalloc,noauto_da_alloc,data=ordered 0 0
/dev/block/vold/179:29 /mnt/secure/asec ext4 rw,seclabel,nosuid,nodev,noexec,relatime,discard,nodelalloc,noauto_da_alloc,data=ordered 0 0
tmpfs /storage/sdcard0/.android_secure tmpfs ro,seclabel,relatime,size=0k,mode=000 0 0
Я могу перемонтировать эти разделы в другом месте под root и получить к ним доступ в той же оболочке , но разрешения странные, и никакие другие корневые приложения не могут получить к ним доступ:
$ su
# mkdir /storage/sd_test
# chmod 777 /storage/sd_test
# ls -al /storage | grep sd_test
# drwxrwxrwx root root 2015-05-28 15:17 sd_test
... до сих пор хорошо ...
# mount -o rw,user,umask=0000 -t vfat /dev/block/vold/179:65 /storage/sd_test
# ls -al /storage | grep sd_test
d---rwxr-x system media_rw 2015-05-28 15:00 sd_test
# chmod 777 /storage/sd_test
# ls -al /storage | grep sd_test
d---rwxr-x system media_rw 2015-05-28 15:00 sd_test
... разные разрешения, но я могу видеть и читать/записывать файлы внутри ...
... Root Explorer показывает его с "оригинальными" разрешениями, но папка пуста...
# mount | grep sd_test
/dev/block/vold/179:65 /storage/sd_test vfat rw,dirsync,relatime,uid=1000,gid=1023,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
... хм.
У меня /etc/vold.fstab
есть только одна строка:
dev_mount sdcard /storage/sdcard1 auto /devices/msm_sdcc.2/mmc_host
И /fstab.qcom
:
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,barrier=1,discard wait
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check,encryptable=footer
/devices/msm_sdcc.2/mmc_host /storage/sdcard1 vfat nosuid,nodev wait,voldmanaged=sdcard:auto
/devices/msm_sdcc.1/mmc_host/mmc0/mmc0:0001/block/mmcblk0 /storage/sdcard0 ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,voldmanaged=sdcard:29
Как я могу это исправить?
Итак, получается, что SuperSU автоматически отметил параметр «Разделение пространства имен монтирования», не сказав мне об этом! Я понятия не имел, что у него даже есть такая функция, не говоря уже о том, что он сломан.
Бо Лоусон
Бо Лоусон
Мэтью Рид
/fstab.qcom
поверх/etc/vold.fstab
и перезагрузить, но поведение не изменилось.Бо Лоусон