为什么不能为SD卡上的文件分配执行权限?


10
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 # 

为什么不能为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模式。

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

与重新安装之前相比,安装信息不会更改。

$ 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

Answers:


15

除非您对设备做了一些不寻常的事情,否则SD卡将被格式化为FAT文件系统,该文件系统不支持* nix文件权限。麻省理工学院一位教授的Linux FAQ条目对此做了一点解释,还说明了如何潜在地使用安装选项来更改设备的许可模式(不过,这将需要root用户,并且会影响设备上的所有文件/文件夹) 。另外,Android中的SD卡默认情况下会带有-noexec标记挂载。

对于exec位,您可能希望使用umask进行重新挂载0000,因为umask本质上是所需权限的二进制NOT,因此umask 0000不要屏蔽任何权限,允许所有权限。未经测试,但暂时进行将类似于以下内容:

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

/mnt/sdcard根据您的设备,可能需要将安装点从更改为稍微不同的位置。同样,我相信mount您需要对此具有root权限。


我尝试使用您给定的命令重新挂载,但失败了,请参阅我的问题的补充。
维克多S

请查看我的问题的更新。
维克多S

1
@VictorS:看来您同时具有内部和外部SD卡。内部的处理方式不同,我不知道是否有办法以所需的权限重新挂载它。不过,您也可以通过调用sh:来执行脚本sh usb0config.sh
eldarerathis 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.