同事来问我,如何使android系统的sdcard目录具备可以运行可执行文件的权限。我首先想到的是rootfs下的init.rc文件。用vi 打开android源代码目录下的system/core/rootdir/init.rc文件,查找sdcard关键字,然后看到如下行
mkdir /sdcard 0000 system system
那四个0应该是关于权限的掩码,先改成0777试试看。
保存,退出。然后make整个源代码目录,其实有更快捷的方法,先这样吧。
然后启动模拟器。
在linux终端上用adb shell登录到模拟器上。
cd /sdcar4d
./xxx (可以利用adb pull一个在模拟器上可以运行的文件到/sdcard下)
permission denied
结果还是没有执行的权限,看来这个方法不行。
想想,sdcard的识别与挂载和vold这个daemon有关。所以sdcard可执行权限的控制很有可能在vold里面。
在system/core/vold/volmgr_vfat.c下发现有如下代码
flags = MS_NODEV | MS_NOEXEC | MS_NOSUID | MS_DIRSYNC;
应该是MS_NOEXEC起作用了。
将这个flag去掉,然后重新编译整个android源代码。
启动模拟器。
在linux终端上用adb shell登录到模拟器上。
cd /sdcard
./xxx
OK了。
阅读(1551) | 评论(0) | 转发(0) |