Почему я не могу назначить права администратора для файла на SD-карте?

[email protected]:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
[email protected]:/sdcard/SW # chmod 777 usb0config.sh                             
[email protected]:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
[email protected]:/sdcard/SW # 

Почему я не могу назначить права администратора для файла на SD-карте?

$ adb shell su -c mount |grep -si sdcard
/dev/block/vold/179:97 /mnt/ext_sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/ext_sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/fuse /mnt/sdcard fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0


$ adb shell su -c "mount -t vfat -o umask=0000 /dev/fuse /mnt/sdcard"
mount: Block device required

Теперь он, кажется, успешно монтируется.

$ adb shell su -c "mount -t vfat -o remount,umask=0000 /dev/fuse /mnt/sdcard"

, но файл еще не может быть назначен режимом 777.

[email protected]:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
[email protected]:/sdcard/Sw # chmod 777 usb0config.sh                             
[email protected]:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh

Информация о монтировании не изменяется по сравнению с предыдущим.

$ adb shell su -c mount |grep -si sdcard
/dev/block/vold/179:97 /mnt/ext_sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/ext_sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/fuse /mnt/sdcard fuse rw,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
9 голосов | спросил Victor S 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 22 Sep 2012 07:56:14 +0400 2012, 07:56:14

1 ответ


13

Если вы не сделали что-то необычное с вашим устройством, SD-карта будет отформатирована как файловая система FAT, которая не поддерживает разрешения файлов * nix. Этот раздел Linux FAQ от одного из профессоров MIT объясняет это немного, а также объясняет, как вы может потенциально использовать опции монтирования для изменения режима разрешений на устройство (для этого потребовалось бы установить root, а также повлиять на все файлы /папки на устройстве). Кроме того, SD-карта в Android установлена ​​по умолчанию с флагом -noexec.

Для бита exec вы, вероятно, захотите перемонтировать с umask 0000, так как umask по существу является двоичным NOT требуемые разрешения (так что umask 0000 говорит не маскировать любые разрешения, разрешать им все). Непроверено, но временно делать это было бы следующим образом:

mount -t vfat -o umask=0000 /dev/your/sdcard/device /mnt/sdcard

Может потребоваться изменить точку монтирования с /mnt/sdcard на что-то немного отличающееся в зависимости от вашего устройства. Опять же, я считаю, что mount требует, чтобы у вас были права root.

ответил eldarerathis 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 22 Sep 2012 08:34:17 +0400 2012, 08:34:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132