android– 在RunTime.exec上获取错误“uid 1000不允许su”(“su”)

android– 在RunTime.exec上获取错误“uid 1000不允许su”(“su”),第1张

概述当我尝试从我的具有系统权限的程序运行su命令时,我在stderr上返回了此错误:uid1000notallowedtosu我将共享uid设置为android.uid.system或android.uid.shell,但它不会改变任何东西.设备被假定为root.我真的不明白会发生什么.这是代码:privatebooleanrunAsRoot(String

当我尝试从我的具有系统权限的程序运行su命令时,我在stderr上返回了此错误:

uID 1000 not allowed to su

我将共享uID设置为android.uID.system或androID.uID.shell,但它不会改变任何东西.设备被假定为root.我真的不明白会发生什么.

这是代码:

private boolean runAsRoot(String cmd, file workdir) throws IOException {    Log.i(LOG_TAG, "Execute command as root: " + cmd);    Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", cmd});    if (p == null) {        Log.e(LOG_TAG, "cannot create process for " + cmd);        return false;    }    int exit = -1;    try {        exit = p.waitFor();        inputStreamReader isr;        if (exit == 0) {            isr = new inputStreamReader(p.getinputStream());        } else {            isr = new inputStreamReader(p.getErrorStream());        }        BufferedReader br = new BufferedReader(isr);        StringBuilder sb = new StringBuilder();        String line;        while ((line = br.readline()) != null) {            if (sb.length() > 0) {                sb.append('\n');            }            sb.append(line);        }        String string = sb.toString();        Log.l(LOG_TAG, exit == 0 ? Level.INFO : Level.SEVERE, string);    } catch (InterruptedException e) {        Log.e(LOG_TAG, e);    }    return exit == 0;}

解决方法:

你有一个标准/官方的androID’su’程序,它不是为了这个目的而使用的,而是来自superuser.apk之类的程序,它已被修改为允许这样做.

您不能(从普通的第三方应用程序)将共享UID设置为特权用户,例如系统,甚至是半特权用户,例如shell.

您的设备可能尚未修改为完全允许root访问.

总结

以上是内存溢出为你收集整理的android – 在RunTime.exec上获取错误“uid 1000不允许su”(“su”)全部内容,希望文章能够帮你解决android – 在RunTime.exec上获取错误“uid 1000不允许su”(“su”)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1106596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存