Android 4.1 SuperSU Shell 不授予 root 访问权限
Posted
技术标签:
【中文标题】Android 4.1 SuperSU Shell 不授予 root 访问权限【英文标题】:Android 4.1 SuperSU Shell grants no root access 【发布时间】:2012-09-09 17:05:11 【问题描述】:我最近在变压器 tf101 上升级了 Stock android 4.1。在我的应用程序中,我需要对插入设备的 USB 摄像头进行 root 访问。到目前为止,我已经通过以下代码做到了这一点:
Runtime.getRuntime().exec("su");
DataOutputStream oOutSream = new DataOutputStream( process.getOutputStream());
oOutSream.writeBytes( "chmod -R 777 /dev/bus/usb/* \n" );
oOutSream.flush();
oOutSream.writeBytes("exit\n");
oOutSream.flush();
我知道,chmod 777 不是一个好主意,但到目前为止我还没有找到任何其他解决方案。好吧,升级到 4.1 后,这不再起作用了。 SuperSU 提示一个消息框,通知我该应用程序已请求 root 访问权限,但它不会工作。奇怪的是..当我从电脑打开 adb shell 并输入这些命令时,它完美无缺。
如果我通过 pc 授予 su 访问权限,我的应用程序可以正常工作,尽管随机显示通知我“授予 root 访问权限”或“拒绝 root 访问权限”。会不会是 SuperSU 的 bug?
感谢您的帮助!
【问题讨论】:
【参考方案1】:一个更好的主意是查看你想要访问的 USB 设备有哪些权限。
例如在您的手机上使用ls
:
$ ls -l /dev/bus/usb/001/
crw-rw---- system usb 189, 1 2012-09-15 19:18 002
crw-rw---- system usb 189, 0 2012-09-15 19:18 001
我在这里可能错了,但我认为在每个 android 版本中,usb 组对所有 USB 设备都有rw
权限。您想要做的是,使用usb
作为组ID 启动您的应用程序。
您可以这样做,例如,使用su
将您的进程提升为root,然后使用setgid
设置您的组ID。之后,您可以在没有 chmod
摆弄的情况下写入您的 USB 设备,这真的很不好。
编辑:另外,在完成组 ID 设置后,不要忘记使用 setuid(whateverAppUID)
删除 root 权限!
【讨论】:
谢谢。肯定会尝试的。另一个问题仍然存在.. SuperSU 随机显示已授予我的应用程序 root 权限的 Toasts。即使应用程序甚至没有运行!有什么想法吗?以上是关于Android 4.1 SuperSU Shell 不授予 root 访问权限的主要内容,如果未能解决你的问题,请参考以下文章
第一篇Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限