android adb shell权限被拒绝

时间:2012-06-11 02:08:57

标签: android shell adb

我在使用adb.exe时遇到了困难。

我想用adb.exe shell提示符和bash一样,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)

更改bash二进制文件遵循以下顺序

  1. adb remount
  2. adb push bash /system/bin/

  3. adb shell

  4. cd /system/bin
  5. chmod 777 bash
  6. mv sh sh.bak
  7. ln -s bash sh
  8. 第一次更改成功,但第二次尝试时出现问题。

    我推送新的bash二进制文件,但我错过了更改bash的权限777,并断开adb shell

    C:\Program Files (x86)\Android\android-sdk\platform-tools>adb.exe shell
    - exec '/system/bin/sh' failed: Permission denied (13) -
    
    C:\Program Files (x86)\Android\android-sdk\platform-tools>
    

    有没有明智的想法来修复此权限问题?

    请帮帮我......

3 个答案:

答案 0 :(得分:1)

如果设备没有完全崩溃(/ system / bin / sh是很多东西的依赖项 - 重启可能不会很远!)并且系统分区仍然是可写的,你可能能够adb push一个新的bash副本,你在推送它之前在主机系统上根据需要设置了权限位(你可能必须使用cygwin甚至linux才能在本地拥有权限位)

听起来设备已植根,因此您可以配置或自定义终端模拟器应用程序以使用备份sh为您提供会话,使用某些升级工具以root身份再次运行备份sh,然后修复问题

如果您使用adb修改了恢复,则可以通过手动挂载(普通)系统分区来修复它。

最后的手段将从供应商签署的香草图像中恢复。

希望你没有被卡住,但也许你已经从这次经历中学到了 - 更改默认shell可能不是一个好主意。最好以不同的名称加载自定义shell并手动运行。

答案 1 :(得分:1)

执行此类操作的一般解决方案:删除系统应用程序和所有内容。

adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblk4 /system
cd /system/app/
rm maps.apk
mount -o ro,remount -t yaffs2 /dev/block/mtdblk4 /system
sync
reboot

答案 2 :(得分:0)

如果您安装了最新版本的CWM,则可以保存

a)adb reboot recovery(启动手机恢复)

b)在CWM恢复挂载/系统分区(使用您的手机)。

c)adb kill-server

d)sudo adb start-server

e)adb shell

f)你的事情是否正确设置了你的许可

我受到here

答案的影响