Android 代码读取/data/misc/wifi/wpa_supplicant.conf 问题,已经获取了 ROOT 权限,然后 FileReader 直接提示无权限!

2014-09-21 23:18:21 +08:00
 loveyu
直接提示:E/Read﹕ /data/misc/wifi/wpa_supplicant.conf: open failed: EACCES (Permission denied)

真心不知道这个东西是怎么回事了。读取/etc/hosts可以,为啥/data/misc就不行呢?
22841 次点击
所在节点    Android
11 条回复
wwqgtxx
2014-09-22 06:28:32 +08:00
因为那个文件的所有者是wifi而不是root,你用re管理器看一下就知道了,hosts文件的所有者才是root
你需要chmod一下权限
loveyu
2014-09-22 09:33:54 +08:00
@wwqgtxx 懂了,我试试
loveyu
2014-09-22 11:39:57 +08:00
@wwqgtxx 刚试了下,各种权限修改都无效,百度谷歌已经没有合适的方法了
xylophone21
2014-09-22 13:49:05 +08:00
Android上的APK获取了root权限是指你的应用可以使用su(一般位于/system/bin/su)了,而非直接改变你进程的uid.

如果需要以root权限做事,请使用su.具体的例子你搜一下权限管理工具SuperSU神马的的SDK或者文档.
换句话说,获取root权限后,如果你不调用su,跟没获取没什么两样.
loveyu
2014-09-22 14:40:47 +08:00
@xylophone21 这个我知道的,最后找到的解决方案就是使用cp复制到缓存目录,再读取。这是我能想到的最简单的办法了
wszf
2014-09-22 15:11:45 +08:00
你是shell的root.并不是java级的root,肯定没有权限读取.
xylophone21
2014-09-22 15:17:22 +08:00
@loveyu
E/Read﹕ /data/misc/wifi/wpa_supplicant.conf: open failed: EACCES (Permission denied)

这句看起来很像Java代码打印的(没找到具体代码),怀疑你是用Java代码读的.

但su一般来说用起来是:

proc = runtime.exec("su");
osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(command);
osw.flush();
osw.close();


要使Java代码以root身份运行还是蛮麻烦的.(感觉需要自己再启一个虚拟机?没试过)
大胆猜测你应该没这么做.

所以想来想去,还是只有上面那个可能性最大.
注意,使用su是指只有proc是root权限,你的apk本身还是原来的权限.

PS:你copy的时候是不是用的类似上面代码把命令赋给command,但直接读取不是用的命令行?
loveyu
2014-09-22 17:57:41 +08:00
@xylophone21 后来我也发现了,要提升APK的权限太难,只好通过cp data/misc/wifi/wpa_supplicant.conf /data/data/...../cache/ 然后再读取,这样就没有问题了,我想知道的是为啥改为777依旧不可读
porrat
2014-09-22 18:39:46 +08:00
apk进程的权限是系统通过UID检查确定的,跟文件本身的权限没啥关系
xylophone21
2014-09-22 18:52:49 +08:00
如果你只想读文件内容的话,试试cat,然后
InputStream inputstream = proc.getInputStream();
loveyu
2014-09-22 20:09:40 +08:00
@xylophone21 这个东西我试了好几次,都是无响应了,问题一直不清楚

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/134860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX