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 remount
和 adb 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
)。在push
ing 之后,再次使用以下命令撤销 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的主要内容,如果未能解决你的问题,请参考以下文章
在应用程序中以编程方式执行 adb shell dpm 命令会产生无法运行程序“adb”:错误 = 13,权限被拒绝 [重复]