adb remount 权限被拒绝,但能够在 shell 中访问超级用户 -- android

Posted

技术标签:

【中文标题】adb remount 权限被拒绝,但能够在 shell 中访问超级用户 -- android【英文标题】:adb remount permission denied, but able to access super user in shell -- android 【发布时间】:2012-10-16 21:10:47 【问题描述】:

所以,我正在尝试将一些文件推送到 android 设备 (zte) 上的 /system 我已经扎根,与亚行连接,

adb remount -> 我的权限被拒绝 adb shell su -> 我可以访问 shell 并创建文件夹等并编辑文件系统

(但在 shell 中我无法将文件从计算机复制到设备)

请帮忙

【问题讨论】:

你试过adb root,然后adb remount running adb root getting -> adbd can't run as root in production builds 这是您的 boot.img - 不得为 adb remount 权限设置 default.prop 或内核。您是否要推送到 /system 某处?然后只需运行adb shell mount -o rw,remount /system 以将系统挂载为 r/w adb shell mount -o rw,remount /system 给我一个“不允许”错误,当我进入 adb shell 并执行 SU 时,我可以运行“shell mount -o rw,remount /system”但后记试图将 adb 推送到系统我仍然获得权限被拒绝@DrakeClarris 那么您的 boot.img 或内核需要更改以允许它。你是股票和扎根吗?如果是这样,请尝试自定义 rom。如果您使用的是自定义 rom,请尝试另一个。或者查看如何修改 boot.img 以更改 ro.secure 参数 - 这是我在快速谷歌搜索中找到的指南:roguedroid.blogspot.com/2012/01/modding-bootimg.html(编辑:不要在开头段落中使用 dd 命令 - 你会需要找到您的设备用于该命令的分区) 【参考方案1】:

万一以后有人遇到同样的问题:

$ adb shell
$ su
# mount -o rw,remount /system

adb remountadb root 都不能在不更改 ro.secure 的情况下用于生产版本,但您仍然可以通过打开 shell、请求 root 权限并输入 mount 命令来重新挂载 /system。

【讨论】:

我不知道!当您运行“su”时,您应该会在电话上弹出一个超级用户弹出窗口,询问您是否要授权它。您确定超级用户工作正常并且没有配置为阻止 adb root? 我无法在我的 Android 设备上运行 su,我得到:/system/bin/sh: su: not found。我猜是因为我的设备没有root。 我在模拟器上得到mount: '/system' not in /proc/mounts @Kemal Tezer Dilsiz 在 API 28 中,我也得到了这个 @tigertang 我能够通过带有 --writable-system 标签的 cmd 启动模拟器,然后使用 adb shell 进入并手动编辑来执行 API 28。我不知道这是否适用于你的情况。祝你好运。我是我的情况,我只需要编辑主机文件【参考方案2】:

emulator -writable-system

对于使用模拟器的人:另一种可能性是您需要使用 -writable-system 启动模拟器。当使用带有 4.1 图像的 android studio 打包的标准模拟器时,这是唯一对我有用的东西。在这里查看:https://***.com/a/41332316/4962858

【讨论】:

是的,这会从 QEMU 的 -drive 选项中删除 read-only 选项:android.stackexchange.com/questions/110927/… 但请注意,它还指向 qcow2 覆盖而不是图像本身,因此您必须通过此选项未来的运行。【参考方案3】:

试试

adb root
adb remount

以 root 身份启动 adb 恶魔并确保分区以读写模式挂载(基本部分是adb root)。在pushing 之后,再次使用以下命令撤销 root 权限:

adb unroot

【讨论】:

获取“重新挂载失败:没有这样的文件或目录” adb root: 未找到设备【参考方案4】:

一些较新的版本需要先运行以下额外的 adb 命令

adb root
adb disable-verity
adb reboot

然后

adb root
adb remount

【讨论】:

@PrzemysławSienkiewicz 这里也一样。最新的模拟器无法使用。 adb disable-verity 给我一个错误 error:closed。有什么解决办法吗? 我不为我工作。在adb remount 之后,我收到一些写入数据错误,最后出现“重新挂载失败”。【参考方案5】:

你可以使用:

adb shell su -c "your command here"

只有带有 su 的 root 设备才能工作。

【讨论】:

谢谢伙计,它适用于 android 11,IDK 为什么他们忘记将重新挂载文件放在 bin 目录下。 :)【参考方案6】:

启动 /w 可写系统

使用模拟器图像没有 Google Play

适用于生产 Android 图像,即带有 Google Play 的图像

使用非 Google Play 图像进行 root 访问和可写系统

从命令提示符以可写系统的形式启动您的模拟器,使用它的 AVD 名称(在本例中为Pixel3a,请参阅下面的 AVD 名称来查找或更改您的. 确保使用此命令时另一个模拟器实例运行):

emulator @Pixel3a -writable-system

(将此命令放在手边。您需要在任何时候以“可写”方式访问您的模拟器时使用它。我每次都在 gitbash 中使用别名从 gitbash 终端启动我的模拟器。)

这会启动模拟器。

启动完成后,打开另一个命令提示符/终端(这个在模拟器运行时卡住了),然后:

adb root

结果应该是:

$ adb root
restarting adbd as root

然后:

adb remount

结果:

$ adb remount
remount succeeded

当你:

adb shell

和:

su

您现在应该拥有完整的 root/可写访问权限:

$ adb shell
generic_x86_arm:/ # su
generic_x86_arm:/ # 

将域添加到主机文件

$ cd /etc
$ cp hosts hosts.bak1
$ cat hosts
127.0.0.1       localhost
::1             ip6-localhost

$ echo '10.0.2.2 my.newdomain.com' >> hosts
$ cat hosts
127.0.0.1       localhost
::1             ip6-localhost
10.0.2.2        my.newdomain.com

10.0.2.2 是 Android 模拟器的“本地主机”。它将委托给您的 Windows/Mac 主机文件和 DNS 服务。您添加到开发机器的 hosts 文件中的任何域都将在您的 Android 模拟器主机文件中作为 10.0.2.2 工作。

AVD 名称

在 Android Studio 中可以从菜单启动 AVD 管理器:

工具 > AVD 管理器

如果您的模拟器名称中有空格,您可以通过单击右侧的铅笔图标来更改它。

为了便于输入,我将模拟器命名为“Pixel3a”,不带空格。

【讨论】:

【参考方案7】:

尝试使用 API lvl 28 模拟器 (Android 9)。 我正在尝试使用 api lvl 29 并不断收到错误。

【讨论】:

【参考方案8】:

我重新启动以恢复 那么

adb root; adb adb remount system; 

为我工作 我的恢复是twrp v3.5

【讨论】:

【参考方案9】:
@echo off
color 0B
echo =============================================================================
echo.
echo              ClockworkMod Recovery for SAMSUNG GALAXY SIII E210L
echo.
echo                  ClockworkMod Recovery (v6.0.1.2 Touch)
echo.
echo     ¡ô¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¡ô
echo     ¨U                                                                  ¨U
echo     ¨U SAMSUNG GALAXY SIII E210L                                        ¨U
echo     ¡ô¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¡ô
echo.
echo  1) (Settings\Developer options©¥ USB debugging)
echo.
echo  2) CWM SAMSUNG GALAXY SIII E210L 
echo.
echo  3) THANK!!!!!!
echo.
echo =============================================================================
echo                           ARE YOU READY? GO! ¡·¡·¡·
@pause
echo.
echo adb...
adb.exe kill-server
adb.exe wait-for-device
echo wiat¸!
echo.
echo conect...
adb.exe push IMG /data/local/tmp/
adb.exe shell su -c "dd if=/data/local/tmp/GANGSTAR-VEGAS-1.3.0-APK-Andropalace.net.apk of=/mnt/sdcard/Android/GANGSTAR-VEGAS-1.3.0-APK-Andropalace.net.apk
adb.exe shell su -c "rm /data/local/tmp/bootloader.img"
adb.exe shell su -c "rm /data/local/tmp/recovery.img"


echo ===============================================================
echo     ClockworkMod Recovery!
echo.
@pause

【讨论】:

一点解释以及您的代码可能会有很长的路要走 如果你不想带着这么多的反对票,你可以删除答案

以上是关于adb remount 权限被拒绝,但能够在 shell 中访问超级用户 -- android的主要内容,如果未能解决你的问题,请参考以下文章

Android adb调试

ADB

在应用程序中以编程方式执行 adb shell dpm 命令会产生无法运行程序“adb”:错误 = 13,权限被拒绝 [重复]

“./setup.sh:权限被拒绝”错误

在“start-dfs.sh”之后出现错误“权限被拒绝(公钥,密码)”

Android挂载系统分区执行mount和remount