【问题标题】:adb shell "operation not permitted" for every command每个命令的 adb shell “操作不允许”
【发布时间】:2013-10-01 01:12:52
【问题描述】:

我最近对我的安卓手机进行了出厂重置。在重置之前,我可以通过adb install 安装应用程序。手机没有root。

恢复出厂设置后,adb shell 中几乎每个命令(包括不存在的命令)大多都得到“不允许操作”:

$ install
install: permission denied
$ push
push: permission denied
$ remount
remount: permission denied
$ su
su: permission denied
$ kmmsaldfmaldskfmlasdf
kmmsaldfmaldskfmlasdf: permission denied
$

大部分 PATH 对我来说是不可读的(除了 /system/bin 和 /system/xbin):

$ echo $PATH
/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
$ ls /sbin
opendir failed, Permission denied
$ ls /vendor/bin
/vendor/bin: No such file or directory
$ ls /system/sbin/
/system/sbin/: No such file or directory

如果我运行adb root:

$ adb root
adbd cannot run as root in production builds

从我的搜索中(这已经抢走了我比需要更多的时间),一些指针指向 default.prop:

$ cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0
persist.service.adb.enable=1
$

但我对 default.prop 没有写入权限:

$ ls -l default.prop 
-rw-r--r-- root     root          118 1969-12-31 19:00 default.prop
$

我似乎也无法重新安装。我已经能够在非root设备上成功使用adb,为什么现在这么悲痛?有没有人遇到过这个问题?我自己的手机对我来说几乎无法使用,当然我也无法进行任何开发。

尝试重新挂载为 rw:

$ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/stl9 /system rfs ro,relatime,vfat,log_off,check=no,gid/uid/rwx,iocharset=cp437 0 0
/dev/stl10 /cache rfs rw,nosuid,nodev,relatime,vfat,llw,gid/uid/rwx,iocharset=cp437 0 0
/dev/stl6 /mnt/.lfs j4fs rw,relatime 0 0
/dev/stl11 /data rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=cp437 0 0
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /
mount: Operation not permitted

我的手机是三星 Galaxy Y,这可能很重要

【问题讨论】:

  • 你安装的是什么版本的安卓?
  • 它将2.3.6 报告为android 版本。我已尝试更新,但找不到可用的更新。
  • 不是从shell 发出install 之类的命令,而是从PC 的命令行发出它们:adb install 等会发生什么?首先从 PC 命令行尝试adb remount。您可能还需要重新安装手机驱动程序(根据this thread)。
  • 好的。实际上,这行得通。 (请将其发布为您的答案,以便我最终接受它)。我想我从未想过它会有所作为。直觉上,它不应该。 .我什至不必adb remount。问题依旧,为什么我无法使用shell?
  • adb remount 失败并显示Operation not permitted

标签: android adb galaxy


【解决方案1】:

您需要从 PC 命令行发出 install 之类的命令:

C:\> adb install ...

而不是从 adb shell 中。如果这不起作用,您可能需要运行

adb remount

和/或重启手机和/或重新安装手机驱动程序。请参阅this thread 了解更多信息。

我发现 adb shell 会话中的路径可以包含各种不存在的目录。我不知道为什么会这样,但它通常不会搞砸任何事情。

【讨论】:

  • 我仍然无法使用外壳。有趣的是,我现在得到的是install: permission denied 而不是install: Operation not permitted。由于我的问题不仅是关于安装,而且是关于能够使用 adb shell 中的命令,所以我想在接受您的回答之前找到解决该问题的方法。您的建议对运行 install 命令很有帮助,但我觉得我仍然无法像开发人员那样使用 adb。
  • @elfonso - 我不确定它是否会有所帮助,但请尝试打开 USB 调试(我认为在 2.3.6 下它位于设置 > 应用程序 > 开发下)。同时开启“未知来源”。
  • USB 调试已开启,这是我确保已设置的第一件事。我还启用了“Android 设备管理器”作为设备管理员。但我仍然会遇到这种令人沮丧的行为。
  • @elfonso - 这很奇怪。我暂时没有想法,但我会继续考虑。 (哦...您是否尝试杀死并重新启动 adb 服务器?我不希望这会影响您所描述的行为,但您永远不知道。)
  • 是的,我经常在每次更改时重新启动 adb 守护程序,我也重新启动了手机。唯一的变化是现在所有命令(包括不存在的命令)的Operation not permitted 已替换为permission denied。我有一种感觉,这是这款特定手机的制造商故意提出的问题。
【解决方案2】:

假设你没有在手机上安装新版本的 Android,我猜你的手机不再处于开发者模式。

转到设置。向下滚动,直到看到系统标题。在它下面,您应该看到几个选项。如果开发人员不是其中之一,请单击关于手机,然后向下滚动到内部版本号。单击内部版本号 7 次。这应该会带回开发者模式。

【讨论】:

  • 好的。我一直点击Build number,似乎什么也没发生。我敲了7次,还是遇到了上面的权限问题。
【解决方案3】:

尝试在恢复中执行这些命令,最近的恢复是可调试的=1 除了反编译内核并将 ro.debuggable=0 更改为 1 之外,这将允许您使用 adb 重新挂载并允许 adb 以 root 身份运行!

【讨论】:

  • 我会对此进行调查,尽管有几个链接可以详细说明您的答案。
【解决方案4】:

我可能已经为您找到了解决方案

最近我将我的 (rooted) LGP500 从 Froyo (android 2.2.1) 更新为 Gingerbeard (android 2.3.3)。在那之后,我发现自己的处境和你的很相似(说实话,一样)。我丢失了我的 SU 凭据,并拼命地试图找到解决该问题的方法。我太绝望了——我什至尝试了著名的Android 4.2 method 启用开发人员设置,像疯子一样轻敲我可怜的设备很长一段时间。 所以......我有完全相同的问题。在网上冲浪时,我发现问题实际上出在 Gingerbeard 构建中,并偶然发现了一些有趣的解决方案。 而且,经过所有的努力 - 我花了很长时间才弄清楚哪种方式是最好的 - 我(终于)将我的 2.3.3 设备植根了。

请注意,我仅出于教育目的分享这些内容。如果您不小心将设备变砖,则不会构成冒犯。


在继续之前检查:

  • 您已正确安装 ADB 驱动程序(如果没有 - 将显示错误 带有以下文字:“找不到在线设备,请启用 USB调试!”;解决方案-安装或重新安装ADB驱动程序。注意 您必须在连接设备的情况下安装驱动程序,但是“USB 调试”已禁用。
  • 您已选中“USB 调试”和“允许模拟位置”。

    强烈建议进行备份以防止任何数据丢失。 (至少将您的联系人导出到 .vcf 文件)

如果一切正常:

  1. 安装UnlockRoot(可以找到Unlock_Root_2.3.0.exe here)并执行。
  2. 运行“root”(您实际上可以忽略除“root”按钮之外的所有内容)。在弹出菜单中选择您的设备。
  3. 重新启动您的设备(以完成 SU 二进制文件的安装 - 如果您希望重新启动,应用程序中会提示您,但您可以通过 adb shell 自行完成) 瞧!你的设备已经root了,就像这样。

【讨论】:

    【解决方案5】:

    您应该从 Google Play 安装 SuperSU 应用程序。这是唯一能够在我的设备(Galaxy S4)上正确启用 root 功能的超级用户应用程序。

    之后执行adb shellsu。如果您想从 /data 目录中提取文件,您需要更改该文件的权限(使用chmod)。那么它应该可以工作了!

    【讨论】:

      【解决方案6】:

      我在我的 Galaxy S3 上无休止地遇到这个问题 当我建造我的安卓厨房时,我找到了解决这个问题的方法

      1. 如果您需要提升权限,请根设备
      2. 为您的设备解压构建内核 在 default.prop 中将这些值更改为相应的

      ro.secure=0 ro.debuggable=1

      1. 编译/重新打包并刷新
      2. 启用 USB 调试

      【讨论】:

        【解决方案7】:

        您的用户功能正在某处被剥夺。查看/proc/<shell process>/status 以查看功能掩码。

        【讨论】:

          【解决方案8】:

          你可以试试 SUInstaller。

          http://theroot.ninja/apks/SUInstaller.apk

          基本上在你的手机上设置了su。这可能有效,从记忆中我使用了一次单击 androroot 来 root 三星 y。 如果失败,请尝试启动恢复并闪烁 supersu,可以尝试 samsung galaxy 方法,或者基于它, http://www.android.gs/root-samsung-galaxy-s3-with-cwm-recovery-and-supersu/

          祝你好运。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-09
            • 2022-08-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多