10 votos

¿Por qué no puedo asignar exec permisos a un archivo en la tarjeta SD?

shell@android:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/SW # chmod 777 usb0config.sh                             
shell@android:/sdcard/SW # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/SW # 

¿Por qué no puedo asignar exec permisos a un archivo en la tarjeta 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

Ahora parece volver a montar correctamente.

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

pero el archivo aún no se puede asignar 777 modo.

shell@android:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh
shell@android:/sdcard/Sw # chmod 777 usb0config.sh                             
shell@android:/sdcard/Sw # ls -l
-rw-rw-r-- root     sdcard_rw      128 2012-09-22 11:42 usb0config.sh

El monte info no cambia en comparación a antes de volver a montar.

$ 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

15voto

David Negron Puntos 971

A menos que hayas hecho algo inusual con su dispositivo, en la tarjeta SD con formato de sistema de archivos FAT, que no admite *nix permisos de archivo. Este Linux FAQ entrada de uno de los profesores del MIT explica un poco, y también se explica cómo se pueden utilizar las opciones de montaje para cambiar el modo de permisos del dispositivo (esto requeriría de la root, sin embargo, y afecta a todos los archivos/carpetas en el dispositivo). También, la tarjeta SD en Android es montada por defecto con el -noexec bandera.

Para el exec de bits que probablemente querrás volver a montar con un umask de 0000, desde el umask es esencialmente un binario NO de los permisos que desee (por lo umask 0000 dice no enmascarar los permisos, permitir a todos ellos). No ha sido probado, pero hacerlo temporalmente sería algo a lo largo de las líneas de:

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

El punto de montaje puede ser necesario cambiar de /mnt/sdcard a algo ligeramente diferente, dependiendo de su dispositivo. De nuevo, aunque, creo mount requiere tener permisos de root para esto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X