作者CaliforCat (Cal)
看板AndroidDev
标题[问题] root装置 仍无法透过app下shell command
时间Tue Jun 16 23:46:45 2020
已经把手机root成功
透过模拟终端app可以su之後$变#
在自己写的测试app,用按键下指令 su
https://imgur.com/PcvBycN.jpg
装置的萤幕会跳出询问是否要授予权限,确认後会显示获得权限的讯息
https://imgur.com/xwUEcI1.jpg
但後续一样透过app的按键下 已经用adb跟模拟终端测试过可用的改亮度指令
https://imgur.com/VJxSbsR.jpg
却都没反应
要修改的档案权限是744
照理来说,已经跳出app被授予超级使用者权限,应该是要可以用了才对
我还是只能透过adb先去把档案chmod成777,才能在app成功下指令 达到功能
1. 想请问是哪里出问题了呢?
另外想请问,我在开发板可以透过adb shell下指令su $变成#
但从开发板的模拟终端app 下su却显示没权限
/system/bin/sh: su: can't execute: Permission denied
2. 请问开发板应该已经是root的状态,该如何在app获得超级使用者权限?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.166.118.215 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1592322407.A.D45.html
1F:→ ssccg: su是让执行su的Process (Runtime.exec回传的那个Process) 06/17 04:26
2F:→ ssccg: 变root,不是让app本身变root,你必须用同一个Process继续 06/17 04:27
3F:→ ssccg: 执行要用root权限的指令 (Process.getOutputStream.write) 06/17 04:30
4F:→ ssccg: 不是另外再跑一次exec,那是再起一个没su过的Process 06/17 04:31
感谢s大的回覆
我实测 将用Runtime.exec执行su指令的按键新增getOutputStream()
结果还是不行 orz||| 试过这两种
https://imgur.com/jdc8T6M.jpg
https://imgur.com/BVBoq43.jpg
按下按键同样会跳出SuperSU询问授予权限的对话框
选择确认,再用adb查看档案权限有无被修改,还是原本的744
※ 编辑: CaliforCat (218.166.118.215 台湾), 06/17/2020 15:49:30
5F:→ kobe8112: 少送一个Enter? 06/17 19:24
6F:→ kobe8112: 另一个疑惑是,你还没按确认前,都没有取得root权限吧? 06/17 19:28
7F:→ kobe8112: 那是否该改在onActivityResult後才执行需要root的指令? 06/17 19:29
8F:→ kobe8112: 第二个疑惑应该有误,我自己在写的时候也没印象需要这样 06/17 19:37
是缺一个enter没错^^" 补上在手机跑就可以了 谢谢k大
但在开发板还是无法,原本只Runtime.exec执行su是会停在原画面,像都没事
现在加了getOutputStream()是会闪退说已停止运作 orz|||
※ 编辑: CaliforCat (218.166.118.215 台湾), 06/17/2020 23:41:38
9F:→ kobe8112: 直接CATCH全部例外看是啥错吧 06/18 01:27
10F:→ kobe8112: 不过我後来都直接用别人写好的静态类执行这类指令了 06/18 01:27
11F:→ tsaiminghan: 把sepolicy关掉试试? 06/18 16:20
12F:→ tsaiminghan: 另一个问题,su和命令分两次下,你确定第二次时,还 06/18 16:29
13F:→ tsaiminghan: 还是root吗? 06/18 16:29
14F:→ tsaiminghan: 你如果每次按su, 都会出现取得root的话,我觉得只有s 06/18 16:31
15F:→ tsaiminghan: 只有su那次才是root 06/18 16:31
16F:→ tsaiminghan: su执行结束後,root就结束了 (可能) 06/18 16:34
17F:→ tsaiminghan: 因为你呼叫的是另一个runtime 06/18 16:35