标签: su

su如何在android上运行?它的先决条件是什么?什么是Android上的根源?

可能重复:su的含义是什么:process = Runtime.getRuntime().exec("su");

我厌倦了尝试所有不同的事情,但我仍然没有成功地理解什么时候会起作用.什么是Android中的设备?有人请帮帮我.

我回答了以下问题.我在那里发布的解决方案,我测试过它也有效.

在android中添加图像文件的完全权限.

这是我的问题:

我试过以下.

复制了su.

已安装SuperUser.apk,

从程序i调用su然后使用新创建的进程,我执行了所需的操作.

这有2个结果.

1)当设备被root(如在z4root中执行Permanent root选项)时,它可以工作,它会更改系统文件权限.

2)当设备没有root时,它不起作用.

请解释z4root执行哪些额外的操作,这使得任务成为可能.请简要说明一下.

如果我的问题不明确,请告诉我.万分感谢..

android root su

9
推荐指数
1
解决办法
5万
查看次数

在 Bash 中检查 sudo(带有 if 语句的脚本)

我使用 bash 的时间不超过 6 个小时,现在我正在尝试创建一个菜单,让您可以做一些“有趣”的事情:D。

我的问题是if 语句检查您是否处于 sudo 模式。我想有3个条件:

  1. 如果我以sudo模式执行脚本,我将能够输入要复制的文件夹的路径。
  2. 如果我在没有 sudo 模式的情况下执行脚本,它会要求我插入密码,如果我这样做正确,脚本将向我显示echoread op,允许我写入要复制的文件夹的路径。
  3. 与第 2 点相同,但如果我的身份验证失败,应用程序将自动关闭。

创建副本

2)
    if [ "$EUID" -ne 1 ]
      then 
            echo "Checking if you are in sudo mode..."
            echo "Error, please insert your password:"
            sudo ls /root
            if [ "$EUID" -ne 1 ]
                then
                    echo -e "\nCould not authenticate the user."
                    echo -e "For security reasons the application will be closed."
                    exit    
            else
                echo "==============================================================="
                echo -e "ALL …
Run Code Online (Sandbox Code Playgroud)

linux bash sudo if-statement su

8
推荐指数
1
解决办法
5815
查看次数

Android:以编程方式将apk复制到/ system/app

我正在尝试从我的java代码安装系统应用程序,到目前为止,我还没有取得任何成功.

以下是我到目前为止所做的事情:

  1. 我的设备扎根了.
  2. 我的"安装程序"应用程序安装为系统应用程序.(手动将其复制到/ system/app)
  3. 我用平台密钥签署了安装程序apk,我android:sharedUserId="android.uid.system"在Manifest中.
  4. 我一直在努力(尝试,然后再尝试一些)Runtime.getRuntime.exec("su").我打算挂载系统分区rw,cat为apk 做一个,然后进行系统分区ro.以下是命令列表:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br>
    cat /sdcard/application.apk > /system/app/application.apk<br>
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我已要求INSTALL_PACKAGES清单中的许可.

我尝试了许多exec("")格式的变体,包括使用'su -c'每个命令.我得到了Broken Pipe异常和安全异常.有时,我没有得到异常,但文件未被复制.


请让我知道我在这里缺少什么.有人有这个工作吗?

谢谢!

android root su android-install-apk

7
推荐指数
1
解决办法
7226
查看次数

msysGit sudo-like命令

如果我们以管理员身份打开msysgit,我们可以像使用root一样使用它.但是,在没有管理员权限的情况下打开通常更容易.例如,对于管理员权限,您通常必须转到Windows资源管理器,"开始"菜单/屏幕等,并且您无法从任务栏执行此操作.有时,我懒得做这一切,但我想在Bash中获得管理员权限.Git Bash 是否有sudo- 或者su- 类似的命令或脚本等?进入cmd.exe,PowerShell等等,然后做一些类似的runas工作,如果没有别的.

windows sudo su msysgit git-bash

7
推荐指数
1
解决办法
1万
查看次数

scp文件到本地远程服务器中的不同用户

通常,我使用我的登录凭据(myuserid@xyz.com)登录到服务器xyz.com,我的主页=/home/user/myuserid/

登录后,我做"su - someuser"来访问文件.

我想将文件从本地机器复制到某个用户的目录,例如:/ abc/someuser/temp

为此,我使用scp somefile.txt myuserid@xyz.com:/ abc/someuser/temp/

它询问我的密码是否为myuserid,然后说../abc/someuser/temp/permission denied

我将使用什么命令将文件复制到远程主机中的su?

linux scp su

7
推荐指数
1
解决办法
1万
查看次数

使用"su"命令时出错

我尝试制作批处理文件来运行adb命令.我想用su -c,但我得到错误:

 su: invalid uid/gid '-c'. 
Run Code Online (Sandbox Code Playgroud)

我看到某个地方我的su版本不支持-c,我怎么能启用它?

linux android su adb

7
推荐指数
2
解决办法
5117
查看次数

如何在su的输入命令中定义环境变量

此命令具有空输出.

su user -c "ABC=abc;echo $ABC"
Run Code Online (Sandbox Code Playgroud)

任何想法,如何在输入命令中定义变量?

bash shell su

6
推荐指数
1
解决办法
5845
查看次数

从后台进程获取PID作为另一个用户运行

通过以下方式从提示中轻松获取后台进程ID:

$ my_daemon &
$ echo $!
Run Code Online (Sandbox Code Playgroud)

但是,如果我想以不同的用户身份运行它,例如:

su - joe -c "/path/to/my_daemon &;"
Run Code Online (Sandbox Code Playgroud)

现在我如何捕获my_daemon的PID?

bash pid su

6
推荐指数
1
解决办法
5988
查看次数

从Android应用程序中的busybox命令获取输出

对于我的生活,我无法让我的应用程序从su shell中调用busybox的进程获得响应.

我已经尝试了三种不同的方法,并尝试了三种方法的组合以使其工作,但我永远无法使用busybox的任何东西获得输出,只有其他命令.

更具体地说,我可以让它返回像"ls/data"和"cat suchandsuch.file"这样的命令,但任何以"busybox"开头的东西(即busybox mount,busybox free)都不会显示任何内容.

这是最接近我的方法,此代码使用"ls/data",但不是"busybox free"

这个将运行命令(大多数情况下),并返回一个空字符串而不是从输入流无限循环.

        Process p;
        try {
            p = Runtime.getRuntime().exec(new String[]{"su", "-c", "/system/bin/sh"});
        DataOutputStream stdin = new DataOutputStream(p.getOutputStream());
        stdin.writeBytes("ls /data\n");
        DataInputStream stdout = new DataInputStream(p.getInputStream());
        byte[] buffer = new byte[4096];
        int read = 0;
        String out = new String();
        while(true){
            read = stdout.read(buffer);
            out += new String(buffer, 0, read);
            if(read<4096){
                break;
            }
        }
        Toast.makeText(getApplicationContext(), out, Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

底部附近的吐司显示"ls/data"中的所有内容,但是当更改为busybox的任何内容时,其空白或为空.

我也尝试了这两种方法,但其中没有一种方法有效.(我在命令运行后将进程传递给他们.)

当你点击方法的按钮时,这两个都会导致应用程序冻结.

String termReader(Process process){
    BufferedReader reader = new …
Run Code Online (Sandbox Code Playgroud)

shell android loops su busybox

6
推荐指数
1
解决办法
5167
查看次数

扎根但苏说"权限被拒绝"

我有这款"老式"联想A2107平板电脑,这是我多年前的根源(使用http://androidforums.com/threads/a2107-root-mods-and-rom-discussion.661261/下载,运行其root.bat从我的GNU/Linux机器手动编写脚本)并且工作正常.

然后我将这款平板电脑传递给了我的女儿几年,现在我把它拿回来了.

/ system/bin/su仍然存在,仍然是相同的日期和大小,仍然模式"rwsr-sr-x",仍然是相同的固件(Android 4.0.3)所以看起来都很好,但是当我尝试从它运行它一个shell,它只是告诉我"Permission denied".

知道可能会发生什么吗?我可以尝试做些什么来追踪它?

android su

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

su ×10

android ×5

bash ×3

linux ×3

root ×2

shell ×2

sudo ×2

adb ×1

android-install-apk ×1

busybox ×1

git-bash ×1

if-statement ×1

loops ×1

msysgit ×1

pid ×1

scp ×1

windows ×1