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最高权限

禁用 supersu 权限对话框

无法从 SuperSU 获得权限提示

用SuperSU替换KingRoot

Android6.0如何将Super SU的root权限管理功能集成到系统源码里面

安卓4.4.4怎么root